INTEGRITY Документация

Workers Bindings

Привязка AI (env.AI) позволяет вызывать модели ИИ и использовать функции AI Gateway непосредственно из вашего Worker.

Пошаговое руководство по настройке см. в Настройка Workers AI с AI Gateway.

Конфигурация

Добавьте AI-привязку в ваш конфигурационный файл Wrangler:

{
	"ai": {
		"binding": "AI",
	},
}
[ai]
binding = "AI"

Привязка доступна в коде вашего Worker как env.AI.

Если вы используете TypeScript, выполните wrangler types каждый раз, когда вы изменяете файл конфигурации Wrangler. Это генерирует типы для env объект на основе ваших привязок, а также типы среды выполнения.

env.AI.run()

Выполняет запрос на инференс через AI Gateway. Принимает модели Workers AI (@cf/ префикс) и сторонние модели ({author}/{model} формат).

Модель Workers AI:

const resp = await env.AI.run(
	"@cf/moonshotai/kimi-k2.5",
	{
		prompt: "tell me a joke",
	},
	{
		gateway: {
			id: "default", // or use a specific gateway name
		},
	},
);
const resp = await env.AI.run(
	"@cf/moonshotai/kimi-k2.5",
	{
		prompt: "tell me a joke",
	},
	{
		gateway: {
			id: "default", // or use a specific gateway name
		},
	},
);

Чтобы использовать предоплаченные Кредиты AI Gateway, задайте для шлюза настройка биллинга Workers AI к Единый биллинг и укажите этот шлюз в запросе с привязкой. Предоплаченные кредиты дают доступ к моделям Workers AI, которые иначе потребовали бы плана Workers Paid, и обеспечивают более высокие лимиты скорости запросов для передовых моделей.

Сторонняя модель:

const resp = await env.AI.run(
	"openai/gpt-4.1-mini",
	{
		messages: [{ role: "user", content: "tell me a joke" }],
	},
	{
		gateway: {
			id: "default", // or use a specific gateway name
		},
	},
);
const resp = await env.AI.run(
	"openai/gpt-4.1-mini",
	{
		messages: [{ role: "user", content: "tell me a joke" }],
	},
	{
		gateway: {
			id: "default", // or use a specific gateway name
		},
	},
);

Сторонним моделям нужен AI Gateway, и они используют Unified Billing. Cloudflare управляет учётными данными провайдера и списывает кредиты с вашего аккаунта. Указывать собственные ключи API не требуется.

Просмотрите доступные модели в каталог моделей.

Параметры шлюза

Третий аргумент для env.AI.run() принимает gateway объект со следующими параметрами:

Параметр Тип По умолчанию Описание
id string обязательно Название вашего AI Gateway. Должен находиться в том же аккаунте, что и ваш Worker. Используйте "default" чтобы автоматически создать шлюз при первом аутентифицированном запросе. См. Шлюз по умолчанию для получения подробностей.
skipCache boolean false Пропустите кеш для этого запроса.
cacheTtl number , Cache TTL в секундах.
cacheKey string , Пользовательский ключ кеша для этого запроса.
collectLog boolean , Определяет, нужно ли собирать логи для этого запроса.
metadata object , Пользовательские метаданные для прикрепления к записи журнала.

env.AI.aiGatewayLogId

Возвращает Log ID для последнего env.AI.run() запрос.

const myLogId = env.AI.aiGatewayLogId;

env.AI.gateway()

Возвращает экземпляр шлюза для прямого доступа к методам AI Gateway.

const gateway = env.AI.gateway("my-gateway");

Экземпляр шлюза предоставляет следующие методы.

patchLog()

Отправляет отзыв, оценку и метаданные для конкретной записи лога. Все свойства во втором аргументе необязательны.

await gateway.patchLog("my-log-id", {
	feedback: 1,
	score: 100,
	metadata: {
		user: "123",
	},
});

Возвращает: Promise<void>

getLog()

Получение сведений о конкретной записи лога. Если AiGatewayLog типа отсутствует, выполните wrangler types.

const log = await gateway.getLog("my-log-id");

Возвращает: Promise<AiGatewayLog>

getUrl()

Возвращает базовый URL вашего AI Gateway. Передайте необязательное имя провайдера, чтобы получить эндпойнт для конкретного провайдера.

const baseUrl = await gateway.getUrl();
// https://gateway.ai.cloudflare.com/v1/my-account-id/my-gateway/

const openaiUrl = await gateway.getUrl("openai");
// https://gateway.ai.cloudflare.com/v1/my-account-id/my-gateway/openai

Параметры: Необязательно provider (string или AIGatewayProviders enum)

Возвращает: Promise<string>

Примеры интеграции SDK

OpenAI SDK:

import OpenAI from "openai";

const openai = new OpenAI({
	apiKey: "my api key", // defaults to process.env["OPENAI_API_KEY"]
	baseURL: await env.AI.gateway("my-gateway").getUrl("openai"),
});

Vercel AI SDK с OpenAI:

import { createOpenAI } from "@ai-sdk/openai";

const openai = createOpenAI({
	baseURL: await env.AI.gateway("my-gateway").getUrl("openai"),
});

Vercel AI SDK с Anthropic:

import { createAnthropic } from "@ai-sdk/anthropic";

const anthropic = createAnthropic({
	baseURL: await env.AI.gateway("my-gateway").getUrl("anthropic"),
});