ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

@ai-sdk/cerebras 提供者全解析:从 CHANGELOG 看 Cerebras 高速推理在 AI SDK 中的集成与演进

@ai-sdk/cerebras 提供者全解析:从 CHANGELOG 看 Cerebras 高速推理在 AI SDK 中的集成与演进 ai-sdk/cerebras 提供者全解析从 CHANGELOG 看 Cerebras 高速推理在 AI SDK 中的集成与演进【免费下载链接】aiThe AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and agents项目地址: https://gitcode.com/GitHub_Trending/ai/aiai-sdk/cerebras是 AI SDK 生态中面向 Cerebras覆盖0.0.1至3.0.47共 2676 行变更记录为主体骨架结合 README.md、package.json 与src目录下的核心源码系统梳理该提供者的安装配置、模型目录演进、请求协议转换、结构化输出、推理Reasoning序列化等关键技术细节。读完本文你将掌握如何在 AI SDK 中接入 Cerebras 高速模型、如何正确使用 provider options 与结构化输出并能理解 CHANGELOG 中每个关键变更背后的实现原理。一、包定位与快速接入ai-sdk/cerebras是 AI SDK 的官方 Cerebras 提供者包内只封装语言模型能力。从 package.json 可以看到其运行时依赖仅为三个基础包ai-sdk/openai-compatible提供 OpenAI 兼容协议的聊天模型基类ai-sdk/provider定义LanguageModelV4、ProviderV4等核心抽象ai-sdk/provider-utils提供 API Key 加载、请求头构造、User-Agent 后缀等工具函数。因此该包本质上是一个薄封装层协议解析、流式解析等重活全部复用 OpenAI 兼容实现Cerebras 专属逻辑集中在请求体转换与结果后处理两个点位上下文第五、六节详解。安装与首次调用来自 README.mdnpm i ai-sdk/cerebrasimport { cerebras } from ai-sdk/cerebras; import { generateText } from ai; const { text } await generateText({ model: cerebras(gpt-oss-120b), prompt: Write a JavaScript function that sorts a list:, });从 index.ts 可以看到包的公共导出面默认实例cerebras、工厂函数createCerebras、类型CerebrasProvider/CerebrasProviderSettings/CerebrasErrorData/CerebrasLanguageModelChatOptions以及VERSION常量。二、版本演进主线从 0.0.1 到 3.0.47CHANGELOG 是理解该提供者能力边界的最佳时间线。剔除纯依赖升级条目后功能性变更可归纳为四条主线1. 与 AI SDK 大版本同步4.x → 5 → 6 → 70.0.114d77ff首次添加 Cerebras provider对应 AI SDK 4.1 时代0.2.05bc638dAI SDK 4.21.0.0d5f588fAI SDK 5同时伴随fa49207provider options 机制转换、e2aceafraw chunk 支持、d1a034f/205077b内部改用 Zod 4 并优化 Zod 兼容性2.0.0dee8b05AI SDK 6 beta模型能力大幅扩充3.0.0AI SDK 7 预发布起点工程层面发生两处 breaking change见第七节。2. 模型目录的持续增删这是 CHANGELOG 中信息密度最高的部分直接反映了 Cerebras 公开模型目录的漂移版本变更内容2.0.0/2.0.0-beta.1342e9f64新增gpt-oss-120b120B 参数、qwen-3-235b-a22b-instruct-2507235B 指令微调、qwen-3-235b-a22b-thinking-2507235B 增强推理、qwen-3-32b32B 多语言、qwen-3-coder-480b480B 代码生成移除弃用的llama3.1-70b2.0.347509953从CerebrasChatModelId类型中移除弃用模型 IDllama-3.3-70b、qwen-3-32b2.0.1c0c8a0e添加zai/glm-4.7模型支持3.0.369de10a6移除弃用的 zai glm-4.7 模型3.0.30f563df6更新模型 ID 自动补全与包文档至当前公共模型目录这一增删节奏表明模型 ID 是强类型约束而非自由字符串。当前 cerebras-chat-options.ts 中的联合类型即该演进的最终形态// https://inference-docs.cerebras.ai/models/overview export type CerebrasChatModelId // production gpt-oss-120b | gemma-4-31b | (string {});其中(string {})是 TypeScript 的惯用技巧保留已知模型 ID 的自动补全同时允许传入尚未收录进联合类型的自定义/新模型 ID。官方能力矩阵见 40-cerebras.mdx显示gpt-oss-120b与gemma-4-31b均支持对象生成、工具调用、工具流式与推理其中gemma-4-31b还额外支持图像输入。3. 能力开关的开启4d34a891.1.0-beta.2开启结构化输出structured outputs对应 cerebras-provider.ts 中的supportsStructuredOutputs: true8dac8951.1.0-beta.6升级到LanguageModelV3ed329cb1.1.0-beta.4升级到Provider-V31cad0ab1.1.0-beta.3在 User-Agent 头中加入 provider 版本号63f29e03.0.0添加 chat 语言模型 provider即provider.chat(...)调用方式5c5c0f53.0.5为转录模型加入实验性流式转录支持主要由ai-sdk/openai-compatible层提供Cerebras 包随之联动升级。4. 协议细节修正ebfdcd53.0.0将 assistant 消息中的推理部分序列化为reasoning字段——这是 Cerebras 与 OpenAI 兼容协议的关键差异详见第五节d6a521a3.0.34添加 typed provider options并把maxOutputTokens以max_completion_tokens字段发送90e2d8a3.0.0修复未被 lint 工具标记的未使用变量258c0933.0.0保证导入处理的一致性避免重复导入或循环依赖。三、Provider 实例与配置项README.md 与 40-cerebras.mdx 提供了两种创建实例的方式直接使用默认实例cerebras或通过createCerebras自定义配置import { createCerebras } from ai-sdk/cerebras; const cerebras createCerebras({ apiKey: process.env.CEREBRAS_API_KEY ?? , });从 cerebras-provider.ts 源码看CerebrasProviderSettings支持四个可选配置项配置项类型说明apiKeystringCerebras API Key默认从环境变量CEREBRAS_API_KEY读取baseURLstringAPI 地址前缀默认https://api.cerebras.ai/v1headersRecordstring, string附加的自定义请求头fetchFetchFunction自定义 fetch 实现可用于请求拦截或测试底层实现要点cerebras-provider.tsbaseURL会先经过withoutTrailingSlash归一化再与路径拼接成最终请求 URL请求头通过withUserAgentSuffix追加ai-sdk/cerebras/${VERSION}后缀便于服务端统计 SDK 使用情况对应 CHANGELOG 中1cad0ab的变更API Key 通过loadApiKey加载支持显式传入或环境变量回退cerebrasErrorStructure使用 zod schema 定义错误响应结构message/type/param/codeerrorToMessage提取message作为错误文案该 provider仅提供语言模型embeddingModel与imageModel均抛出NoSuchModelErrortextEmbeddingModel是弃用别名这解释了 CHANGELOG 中8d9e8ad移除 EmbeddingModelV3 泛型与366f50b弃用 textEmbeddingModel 别名两次重构的动机。四、Provider 与模型的使用方式官方文档40-cerebras.mdx展示了三种等价的语言模型获取方式const model cerebras(gpt-oss-120b); const model cerebras.languageModel(gpt-oss-120b); const model cerebras.chat(gpt-oss-120b);Cerebras 模型同时适用于generateText与streamText。仓库内的可运行示例集中在 examples/ai-functions/src/generate-text/cerebras/ 与 examples/ai-functions/src/stream-text/cerebras/ 目录下覆盖四类典型场景basic.ts基础文本生成output-object.ts结构化对象生成配合generateObject使用reasoning.ts推理模型的使用与推理内容消费tool-call.ts工具调用Function Calling。对应端到端测试见 examples/ai-functions/src/e2e/cerebras.test.ts包内单元测试见 cerebras-provider.test.ts 与 cerebras-chat-language-model.test.ts。推理Reasoning模型的使用gpt-oss-120b、gemma-4-31b等模型会在最终回答前生成中间思考 token。官方文档40-cerebras.mdx给出的流式消费方式import { cerebras } from ai-sdk/cerebras; import { streamText } from ai; const result streamText({ model: cerebras(gpt-oss-120b), providerOptions: { cerebras: { reasoningEffort: medium, }, }, prompt: How many rs are in the word strawberry?, }); for await (const part of result.stream) { if (part.type reasoning) { console.log(Reasoning:, part.text); } else if (part.type text-delta) { process.stdout.write(part.textDelta); } }推理输出通过 AI SDK 标准的 reasoning part 流式透出这意味着任何支持 AI SDK 推理渲染的前端组件都能直接消费。五、请求体转换Cerebras 与 OpenAI 兼容协议的差异缝合CHANGELOG 中ebfdcd5与d6a521a两条变更的落地实现就是 cerebras-provider.ts 中的transformCerebrasRequestBody函数。该函数在每次请求发出前执行字段映射return { ...restArgs, ...(maxTokens ! undefined { max_completion_tokens: maxTokens }), ...(parallelToolCalls ! undefined { parallel_tool_calls: parallelToolCalls }), ...(topLogprobs ! undefined { top_logprobs: topLogprobs }), ...(logitBias ! undefined { logit_bias: logitBias }), ...(serviceTier ! undefined { service_tier: serviceTier }), ...(reasoningFormat ! undefined { reasoning_format: reasoningFormat }), ...(promptCacheKey ! undefined { prompt_cache_key: promptCacheKey }), // ... };核心差异点max_tokens→max_completion_tokensOpenAI 兼容层默认输出max_tokens而 Cerebras 使用max_completion_tokens表达最大补全 token 数对应d6a521a。该转换在maxTokens未定义时不会输出该字段避免破坏不传该参数的请求。推理历史字段重命名Cerebras 期望 assistant 消息中的推理历史放在reasoning字段而共享的 OpenAI 兼容转换器会序列化为reasoning_content。转换器对每条 assistant 消息检查若存在reasoning_content且目标消息还没有reasoning字段则将其重命名为reasoning对应ebfdcd5。这是多轮对话中保留推理上下文的关键否则后续轮次会丢失模型此前的思考链。透传字段parallel_tool_calls、top_logprobs、logit_bias、service_tier、reasoning_format、prompt_cache_key均按需透传未定义时不携带。六、结构化输出与混合响应的后处理CHANGELOG 中4d34a89开启的结构化输出不只是开关一个布尔值cerebras-chat-language-model.ts 中的CerebrasChatLanguageModel继承自OpenAICompatibleChatLanguageModel并针对一个真实边界情况做了专门修补Cerebras GLM 可能在返回合法结构化输出文本的同时重复发出一次工具调用finish reason 为tool_calls且伴随文本。此时应将该混合响应视为最终答案。具体实现是isStructuredOutputWithToolCallsFinishReason判定函数当responseFormat.type json、原始 finish reason 为tool_calls、且响应中确实存在非空文本时doGenerateL54-L81从content中过滤掉tool-call类型 part并把 finish reason 统一改写为stopdoStreamL83-L135通过TransformStream逐 part 过滤——先累计hasText命中上述条件时把 finish part 的 finish reason 改为stop同时丢弃 JSON 模式下已经产出文本之后的所有tool-input-*/tool-callpart。这类修补正是薄封装层的典型形态协议层差异交给请求转换器响应语义差异交给模型子类覆写。模型还实现了WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE静态方法配合serializeModelOptions使模型实例可被 AI SDK 的工作流Workflow机制序列化与反序列化。七、Provider Options 全参数速查以下参数通过providerOptions.cerebras传入zod schema 定义见 cerebras-chat-language-model-options.ts参数语义说明见官方文档40-cerebras.mdx参数类型/取值范围说明userstring最终用户唯一标识用于监控与滥用检测strictJsonSchemaboolean是否启用严格 JSON Schema 校验为true时使用受约束解码保证 schema 合规默认trueparallelToolCallsboolean工具使用期间是否启用并行函数调用默认truelogprobsboolean是否返回生成 token 的对数概率默认falsetopLogprobsnumber0–20每个 token 位置返回的最可能 token 数量需logprobs: truelogitBiasRecordstring, number取值-100–100将 token ID 映射到偏差值serviceTierauto \| default \| flex \| priority请求优先级控制可用性取决于账户与端点reasoningEffortnone \| low \| medium \| high控制支持模型的推理深度支持值与默认值取决于模型reasoningFormatnone \| parsed \| text_parsed \| raw \| hidden控制推理内容在响应中的呈现方式格式支持取决于模型prediction{ type: content; content: string \| Array{ type: text; text: string } }提供已知的预测输出可加速大部分响应内容已知的请求promptCacheKeystring最长 1024 字符将相关请求路由到同一 prompt 缓存需要账户级启用组合使用示例来自官方文档类型标注为satisfies CerebrasLanguageModelChatOptions可获得 IDE 级提示校验import { cerebras, type CerebrasLanguageModelChatOptions, } from ai-sdk/cerebras; import { generateText } from ai; const result await generateText({ model: cerebras(gpt-oss-120b), prompt: Explain why the sky is blue., providerOptions: { cerebras: { reasoningEffort: low, reasoningFormat: parsed, promptCacheKey: conversation-123, } satisfies CerebrasLanguageModelChatOptions, }, });八、工程化演进ESM-only、Node 版本与发布流水线3.0.0是工程层面的分水岭CHANGELOG 记录了三条对使用者有直接影响的变化移除 CommonJS 导出全面 ESM-onlyef992f8type: module写入 package.json使用require()的消费者必须切换到 ESMimport语法最低 Node.js 版本提升到 227fc6bd6官方支持的版本为 22、24、26与 package.json 中engines: { node: 22 }一致发布与供应安全9f0e36c在所有包上配置 provenance对应publishConfig.provenance: true38fc777在 provider README 中加入 AI Gateway 提示0c4c275/b8396f0则是 canary 与 beta 渠道的初始发布。包的构建与测试脚本package.json体现了 monorepo 的工程规范tsup构建、vitest 同时跑 Node 与 Edge 两套测试vitest.node.config.js与vitest.edge.config.js、prepack时从content/providers/01-ai-sdk-providers/40-cerebras.mdx拷贝官方文档进包。zod 被声明为 peerDependency^3.25.76 || ^4.1.8与内部使用zod/v4的实现保持一致。九、从变更日志反推的实践建议基于 CHANGELOG 的演进规律可以沉淀出几条对该包使用者的实用结论升级前先查模型 ID 存活状态模型增删频繁llama3.1-70b → llama-3.3-70b → qwen 系列 → gpt-oss 系列生产环境锁定版本时应以 cerebras-chat-options.ts 中的联合类型为准避免使用已被移除的 ID多轮对话依赖reasoning字段若手动构造历史消息并发现推理内容丢失需要按ebfdcd5的约定把推理文本放入 assistant 消息的reasoning字段而非 OpenAI 习惯的reasoning_content结构化输出场景注意混合响应generateObject/responseFormat: { type: json }下若遇到 finish reason 异常为tool_calls却带合法文本CerebrasChatLanguageModel会自动将其归一为stop并过滤工具 part无需应用层自行处理Node 22 与 ESM 是硬约束从3.0.0起该包仅支持 ESM 导入且运行环境 Node 版本需 ≥22调试优先用自定义fetchCerebrasProviderSettings.fetch是官方留出的拦截点可用于记录请求/响应体、模拟错误或做本地缓存测试单元测试也是通过该机制驱动。十、进一步探索完整变更时间线packages/cerebras/CHANGELOG.md使用与配置总览packages/cerebras/README.mdProvider 工厂与请求转换实现packages/cerebras/src/cerebras-provider.ts模型类与结构化输出修补packages/cerebras/src/cerebras-chat-language-model.tsProvider Options 类型定义packages/cerebras/src/cerebras-chat-language-model-options.ts官方集成文档content/providers/01-ai-sdk-providers/40-cerebras.mdx可运行示例examples/ai-functions/src/generate-text/cerebras/basic.ts、examples/ai-functions/src/stream-text/cerebras/tool-call.ts结合 CHANGELOG 与源码共同阅读能更准确地把握该提供者的能力边界它不重复实现协议栈而是通过请求转换 响应修补两个精确的缝点把 Cerebras 的高速推理能力无缝接入 AI SDK 的统一编程模型。【免费下载链接】aiThe AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and agents项目地址: https://gitcode.com/GitHub_Trending/ai/ai创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表