← Cloudflare AI Gateway / ai-gateway / usage
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"),
});