跳转到内容
搜索文档

Workers 绑定

最后更新 查看 MarkdownAgent 设置

AI 绑定(env.AI)允许你直接从 Worker 调用 AI 模型并访问 AI Gateway 功能。

有关分步设置指南,请参阅使用 AI Gateway 设置 Workers AI。

配置

在 Wrangler 配置文件中添加 AI 绑定:

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

绑定在 Worker 代码中可通过 env.AI 访问。

如果你使用 TypeScript,每当你修改 Wrangler 配置文件时,请运行 wrangler types。这将根据你的绑定生成 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
		},
	},
);

第三方模型:

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 密钥。

在模型目录中浏览可用模型。

Gateway 选项

env.AI.run() 的第三个参数接受具有以下参数的 gateway 对象:

参数 类型 默认值 说明
id string required AI Gateway的名称。必须与 Worker 在同一账户中。使用 "default" 在首次经过身份验证的请求时自动创建 gateway。有关详情,请参阅默认 gateway。
skipCache boolean false 对此请求跳过缓存。
cacheTtl number — 缓存 TTL(秒)。
cacheKey string — 此请求的自定义缓存键。
collectLog boolean — 是否为此请求收集日志。
metadata object — 附加到日志条目的自定义元数据。

env.AI.aiGatewayLogId

返回最近一次 env.AI.run() 请求的 log ID。

const myLogId = env.AI.aiGatewayLogId;

env.AI.gateway()

返回 gateway 实例,用于直接访问 AI Gateway 方法。

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

gateway 实例公开以下方法。

patchLog()

为特定日志条目发送反馈、分数和元数据。第二个参数中的所有属性都是可选的。

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

Returns: Promise<void>

getLog()

检索特定日志条目的详情。如果缺少 AiGatewayLog 类型,请运行 wrangler types。

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

Returns: Promise<AiGatewayLog>

getUrl()

返回 AI Gateway 的基础 URL。传递可选的提供商名称以获取提供商专用端点。

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

Parameters: 可选 provider(string 或 AIGatewayProviders 枚举)

Returns: 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 with OpenAI:

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

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

Vercel AI SDK with Anthropic:

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

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

这篇文档对您有帮助吗?