@alvin0/ai-agent-sdk- professor-openai (英语)
运行时间 : 通用 (Edge/Worker,浏览器,Deno,Bun,和节点).
兼容网关可以配置 baseUrl, (中文(简体) ), models, (中文(简体) ), fetch,以及 headers
(一个字符串记录或同步函数返回每个操作一个).
生成使用响应;嵌入使用OpenAI嵌入协议.
项目实例和现场生成/决定测试的使用 gpt-6-luna 作为
最小 OpenAI 模型 。 明确选择它或较新的模型;不要返回到
请求失败时的旧模型 。 嵌入模型选择是分开的.
嵌入式适配器/插件也支持自定义头.
标题为不区分大小写。 A 类 headers 条目覆盖 SDK
否则,将发出该名称(accept, (中文(简体) ), content-type, (中文(简体) ), user-agent, (中文(简体) ),
协议头)——只有连接级别名称 fetch 本身禁止
(单位:千美元)host, (中文(简体) ), content-length,.)或证书形状的名称(必须经过)
apiKey编号 :auth 相反,它可以被修改成日志) 被拒绝.
供应证书 apiKey复制静态记录;
准备的嵌入式呼叫在所有批次中保持相同的头像快照.
需要信任的本地 HTTP 网关 allowInsecureHttp: true。 。 。 .
pnpm add @alvin0/ai-agent-sdk-core @alvin0/ai-agent-sdk-provider-openai
通用OpenAI适配器和交易提供器插件. 证书被注入;此包从不读取环境变量或文件.
import { ModelRegistry } from '@alvin0/ai-agent-sdk-core'
import { openAiPlugin } from '@alvin0/ai-agent-sdk-provider-openai'
const registry = new ModelRegistry()
registry.install(openAiPlugin({ apiKey: apiKeyFromSecretStore })) // injected string or CredentialSource
使用 openAiAdapter() 用于人工路由注册。 API都是通用的,而且
需要明确 apiKey; 环境取景器属于节点包装器.
两个都接受 models: [{ id, contextWindow, maxTokens }] 加提供者一级
defaultContextWindow 财务报告和审定财务报表 defaultMaxTokens 堕倒. 一个目录模型的
maxTokens 是其SDK输出上限,除非 models[].defaultMaxTokens
设置,它默认的产出预算。 提供者的后退预算不是硬上限.
将操作环境保持在任何扩展文本价格阈值以下。 见
提供者模式限制指南 举例来说
和优先规则。 这些声明不会增加服务器侧限制.
组成: runtime.providers寿命周期: inert-runtime-owned-registration· ;
运行时间激活并删除捕获的提供者注册.
连接相容的终点
这个软件包讲的是整个OpenAI API家族,而不仅仅是 api.openai.com二、导 言
电线得到支持—— api: 'responses' (违约)和 api: 'chat-completions'
因为大多数第三方的OpenAI兼容端点(DeepSeek, Groq, Congree,),
Quen/DashScope, vLLM, Ollama, LM Studio, 许多网关) 只执行
/chat/completions中的插件实例 id, (中文(简体) ),
baseUrl, (中文(简体) ), displayName (因此错误地命名了真正的销售商,而不是"OpenAI"),和
api数字 :
import { envCredential } from '@alvin0/ai-agent-sdk-auth-node'
openAiPlugin({
id: 'deepseek',
displayName: 'DeepSeek',
baseUrl: 'https://api.deepseek.com',
api: 'chat-completions',
apiKey: envCredential('DEEPSEEK_API_KEY'),
compat: { reasoningFormat: 'deepseek' }, // effort → thinking + reasoning_effort
})
compat 一次曝光 Chat 补全线节点 :
reasoningFormat (单位:千美元)'openai' 默认 - reasoning_effort 逐字记录——或
'deepseek',或 false 绝不然, maxTokensField
(单位:千美元)'max_tokens' 默认,或 'max_completion_tokens',或 false, (中文(简体) ),
systemRole, (中文(简体) ), structuredOutputs, (中文(简体) ), tools, (中文(简体) ), parallelToolCalls, (中文(简体) ), streamUsage, (中文(简体) ),
stop, (中文(简体) ), seed, (中文(简体) ), promptCacheKey。未设置的旋钮保留协议的自有功能
保守的默认.
快速缓存
设定 promptCaching: true 生成一个稳定的 prompt_cache_key 每个适配器
实例或通过 promptCacheKey 当应用程序已经拥有一个稳定
语句键。 同样的密钥用于答复和聊天补全,包括 a
混合的每个模型路线。 将一个适配器/插件实例保留在一个缓存中
身份; 不要在不相关的租户之间共享自动生成的密钥.
兼容网关由机会处理:如果网关返回400
具体名称 prompt_cache_key适配器重试一次
没有球场 并记住 下级的余生.
与请求无关的错误永远不会被吞噬.
一个端点挂起在协议本身路径以外的地方( an Azure)
OpenAI 部署, 重写路径的网关) 可以覆盖 path 财务报告和审定财务报表
添加 query (绝不是秘密——属于 auth编号 :apiKey:
openAiPlugin({
id: 'azure-gpt',
baseUrl: 'https://my-res.openai.azure.com/openai/deployments/gpt-6-luna',
path: '/chat/completions',
api: 'chat-completions',
query: { 'api-version': '2026-06-01' },
apiKey: envCredential('AZURE_KEY'),
})
默认配置优先
contextWindow, (中文(简体) ), maxTokens,以及 inputModalities 从明确
代理/调用配置用于模型声明、路由默认、运行时间默认
和SDK退缩政策。 探员 contextWindow 财务报告和审定财务报表 inputModalities 覆盖
已实施,并一直通过每个呼叫模式开关有效。 继承
努力和 maxTokens 切换模型时被丢弃; 清晰的每个调用
maxTokens 以优先为准。 省略的方式声明表示未知,
不只写文字。 宣布经核实的定制路线限制,而不是处理
作为供应商技术上限的回落预算.
土著决定 API
将同伴运行时间安装为直接依赖 :
pnpm add @alvin0/ai-agent-sdk-core @alvin0/ai-agent-sdk-decision-adapter @alvin0/ai-agent-sdk-provider-openai
使用 /decisions 附带决定运行时间的切入点 :
import { createDecisionRuntime, choiceQuestion, scoreQuestion, booleanQuestion }
from '@alvin0/ai-agent-sdk-decision-adapter'
import { openAiDecisionPlugin } from '@alvin0/ai-agent-sdk-provider-openai/decisions'
const runtime = createDecisionRuntime({ providers: [openAiDecisionPlugin({
apiKey: process.env.OPENAI_API_KEY!,
// baseUrl: 'https://api.openai.com/v1', // API root, including /v1
})] })
try {
const result = await runtime.decisionModel({ provider: 'openai', model: 'gpt-6-luna' }).evaluate({
state: { message: 'Please refund my order today.' },
questions: {
route: choiceQuestion('Choose the department.', { billing: 'Payments and refunds', support: 'Technical issues' }),
urgency: scoreQuestion('How urgent is this?', ['Routine', 'Urgent']),
refund: booleanQuestion('Does the customer request a refund?'),
},
})
console.log(result.answers, result.usage)
} finally {
await runtime.close()
}
openAiDecisionAdapter 还直接与 DecisionRequestAPI 密钥可能
是字符串还是SDK证书来源 自定义路由、 API 根、 页眉、 重试
政策, safetyIdentifier、截止日期和请求/答复字节限制为
相会相会. 适配器执行一次 HTTP 尝试; 决定运行时间为
重试. 在做出错误决定后,它永远不会回到回复.
字符串状态和指令仍为文本;结构化的 JSON 描述为
序列化为文本。 此条目当前接受 SDK 文本/ JSON
DecisionInput,而不是本地图像信息。 选择选项使用他们的 SDK
将密钥记录为有线值。 分数标签是零基索引,带有SDK
级别描述保留为线性描述. SDK 布尔问题映射
原生上游; value 使用0.5的概率阈值
probabilityTrue 保留提供者概率。 使用裁决证据门
当你的应用需要更大的信心.
答案保留提供者概率来源。 用过的地图已缓存和未保存
输入到不连接的 SDK 桶中,零输出符仍然是权威的.
本地拒绝投出不可重试 ModelError 有代码
OPENAI_DECISION_REFUSED它不产生任何捏造的答案。 尝试会计
即使在拒绝或无效答复阻碍结果的情况下仍保留所报告的使用.
当前本地模式目录包含 gpt-6-luna. 仍保留明确的识别模式
可配置给消费者和兼容网关;服务器决定
可用性。 本地决定需要一个 OpenAI API 密钥 。 代码用途
CODEX_GUARDIAN_DECISIONS_API_KEY (或 OPENAI_API_KEY独立为这个电话
的 ChatGPT OAuth 响应证书; 仅 OAuth 登录不配置
作出决定。 见 决定指南
财务报告和审定财务报表 代码启动源。 。 。 .