@coder/ai-sdk- 提供者
一个 Vercel AI SDK 供应商,通过您的编码器部署传送请求 AI 网关 (原"AI桥"). 使用任何模型,你的部署代理, 就像你使用的方式 打开路透社 或任何 其他提供者.
import { generateText } from "ai";
import { createCoder } from "@coder/ai-sdk-provider";
const coder = createCoder({
baseURL: "https://coder.example.com",
apiKey: process.env.CODER_API_TOKEN!,
});
const { text } = await generateText({
model: coder("claude-sonnet-4-6"),
prompt: "What is Coder?",
});
为什么: 在集中模式(默认)中,开发者用其 代码符牌,绝不处理原始提供者密钥. AI 网关分别认证 以编码器身份为对象,为 上游供应商(Anthropic、OpenAI、Bedrock、Copilot、......)和审计使用情况 每个用户。 在带入自有密钥模式中,开发者提供自己的上游密钥 相反(见 认证) (中文(简体) ). 部署决定 哪些模型和提供者可供使用.
[TIP] 这个包是给 普通模式调用数字 :
generateText, (中文(简体) ),streamText,以及generateObject(schema-约束结构化输出). 对于代码 服务器侧代理 (多步工具环路,内置工具,MCP服务器, 工作空间文件/ shell 工具, 使用@coder/ai-sdk-agent他们 作曲:纯文本/JSON步骤的提供方,工具驱动步骤的代理.
安装
pnpm add @coder/ai-sdk-provider ai zod
所需经费:
- 22和22号节点
aiv. - 编码器部署 启用 AI 网关: 自编码器以来保持稳定 页:1, (中文(简体) ), GA in v2.30,默认在v2.34中. 需要 AI 治理 Add-On.
命名提供者和两条线协议
代码管理员定义 AI 网关 供应商: 部署时标明的路线
(单位:千美元)/api/v2/aibridge/<name>/v1/…) (中文(简体) ). 每个都讲两个电线协议中的一个,
按其管理配置类型设置 :
| 电线协议 | 背后的供应商类型 | 默认名称 |
|---|---|---|
| OpenAI 兼容 | openai, (中文(简体) ), azure, (中文(简体) ), google, (中文(简体) ), copilot, (中文(简体) ), openai-compat, (中文(简体) ), openrouter, (中文(简体) ), vercel | openai |
| 符合人体条件 | anthropic (原始内容存档于2013-10-12) (英语). Claude, bedrock (贝德洛克主持克洛德) | anthropic |
运行是 通过 URL 路径,而不是模型 id: URL中提供者名称 决定哪个上游处理请求.
createCoder 默认值前置 openai 编号 : anthropic 双人 赤裸裸的呼唤
coder(modelId) 由 heuristic 选择一个 : claude 或者说
anthropic 去Anthropic-protocol供应商, 其他一切到
OpenAI - Protocol 1 (英语). 明确的接入者覆盖了热度,例如达到
Claude通过OpenAI协议上的副驾驶型提供商:
coder("gpt-4o"); // → `openai` provider
coder("claude-sonnet-4-6"); // → `anthropic` provider (heuristic)
coder.openai("claude-sonnet-4"); // → `openai` provider (e.g. Copilot)
coder.anthropic("claude-opus-4-5"); // → `anthropic` provider (explicit)
模具标识通过 不变 向上游提供者(无)
vendor/model 名称间隔)。 使用您部署的提供方的 ID
接受 .
自定义提供者
提供者的名字是管理员选择和匹配的 ^[a-z0-9]+(-[a-z0-9]+)*$A级
部署可能暴露,比如说, 一个Azure支持 azure-openai 旁边
贝德洛克背后 anthropic-bedrock有两种方式可以达到它们.
次供养入者. openaiProvider(name) 编号 : anthropicProvider(name)
返回绑定在该网关提供者的完整子提供者, 所以一个 createCoder
实例可以针对任何数量的提供者。 选一个符合
提供者的电线协议 :
const azure = coder.openaiProvider("azure-openai"); // OpenAI-compatible type
const bedrock = coder.anthropicProvider("anthropic-bedrock"); // Anthropic-compatible type
await generateText({ model: azure("gpt-4o"), prompt: "Hi" });
await generateText({ model: bedrock("claude-sonnet-4-6"), prompt: "Hi" });
| 名称 | 失败者 |
|---|---|
| 门外的语法 | AI SDK 软件 InvalidArgumentError 访问者时间 |
| 配置良好但部署时未配置 | 网关在请求时间404 |
语法以外的一个名字永远不能注册,因此它早早失效.
复指诸缺. 如果你的部署只是命名它的一个
OpenAI/Anthropic 配对不同,将名称覆盖一次,并继续使用
赤裸裸的呼唤和 openai 编号 : anthropic 访问者 :
const renamed = createCoder({
baseURL: "https://coder.example.com",
apiKey: process.env.CODER_API_TOKEN!,
providers: { openai: "azure-openai", anthropic: "anthropic-bedrock" },
});
询问您的代码管理员提供商名称 . 发现只是管理
服务器侧 : GET /api/v2/ai/providers 返回时 403 供经常用户使用,以及
模型端点并不将模型归属于提供者.
嵌入尚未支持
coder.textEmbeddingModel(id) 和嵌入存取器 coder.openai
抛出AI SDK的 NoSuchModelError 马上.
为什么嵌入抛出而不是发送请求
AI 网关不截取 /v1/embeddings,所以一个请求会被拒绝
与一出404号. 抛出前地能避免出出出. 接线员留下来
一旦网关添加了嵌入器,可以点亮而无需中断更改
路线。 见 代码/ai-sdk#69。 。 。 .
认证
| 模式 | 设定 | 上游提供者密钥 |
|---|---|---|
| 集中化 (默认) | apiKey: 您的代码 API 令牌 | 由AI Gateway持有,负责代理电话 |
| 带上你的钥匙 | coderToken: 编码符; apiKey: 您的上键 | 你的,转往上游 |
集中模式是应用程序最需要的:
createCoder({ baseURL: "https://coder.example.com", apiKey: coderToken });
BYOK发送 coderToken 输入 X-Coder-AI-Governance-Token 页眉到
认证您到网关,然后向前 apiKey 到上游:
createCoder({
baseURL: "https://coder.example.com",
coderToken, // authenticates you to AI Gateway
apiKey: upstreamKey, // your own OpenAI/Anthropic key
});
配置
| 选项 | 类型 | 默认 | 说明 |
|---|---|---|---|
baseURL | string | ——(需要) | 您的编码器部署 URL, 例如 . https://coder.example.com。AI Gateway 路径为您提供了附件. |
apiKey | string | —— 说 | 代码 API 令牌 (集中) 或 上游键 (BYOK). |
coderToken | string | —— 说 | 启用 BYOK 模式; 发送到 X-Coder-AI-Governance-Token。 。 。 . |
headers | Record<string,string> | —— 说 | 额外的信头合并到每个请求中. |
aiGatewayPath | string | /api/v2/aibridge | 如果您的部署使用了不同的挂载路径, 请覆盖 。 使用峡谷 /api/v2/ai-gateway 与代码v2.35.0+. |
providers | { openai?, anthropic? } | openai 编号 : anthropic | 将默认对重新指向不同名称的提供者 . |
fetch | typeof fetch | 全球 fetch | 自定义获取( 测试/ 中间软件) . |
企业治理和安全
安全审查员的全部参考资料载于
docs/security.md: 数据流,证书隔离,
审计记录,需要许可,以及安全FAQ.
要点:
- 客户端对网关. 这包装在电线上的东西是可验证的
src/provider.ts关键保管、审计记录和 保留由您的编码器部署执行服务器侧. - 一个目的地. 软件包只向您启动请求
baseURL。 。 。 . 它从不直接接触上游供应商,不增加遥测. - 在信任的本地环境外使用 HTTPS . 客户没有
执行
https://; 一个http://URL 发送令牌、密钥和提示 简文. - 重定向后为默认. 跨源重定向将重新发送
迅速的身体和没有
Authorization页眉( BYOK 模式, 包括x-api-key和治理标志),指向重定向目标. 过fetch: (url, init) => fetch(url, { ...init, redirect: "error" })禁止 这个. - 编码器的符号并非仅限AI. 一个符号赋予用户完整的代码 API 权限。 将泄漏视为代码账户妥协( 撤销 ) 并且更喜欢短命,专为AI工作量而设的标志.
- 审计. 每一个请求都归于认证的编码器用户. 这个 网关存储最后一个用户提示,工具调用(名称和参数), 逻辑内容当存在,符号使用和元数据。 答复案文是 丢弃。 留置默认为60天并可配置.
实例
pnpm example:generate # non-streaming generateText
pnpm example:stream # streaming streamText
pnpm example:anthropic # the Anthropic surface (native Claude)
许可证
阿帕奇 - 2.0 • 编码技术公司.