ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

AI SDK Moonshot AI Provider 能力全景:从 moonshot-v1 到 Kimi K3 的模型接入、思考推理与多模态实现

AI SDK Moonshot AI Provider 能力全景:从 moonshot-v1 到 Kimi K3 的模型接入、思考推理与多模态实现 AI SDK Moonshot AI Provider 能力全景从 moonshot-v1 到 Kimi K3 的模型接入、思考推理与多模态实现【免费下载链接】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-sdk/moonshotai包的 CHANGELOG.md 及其源码实现系统梳理该 Provider 从moonshot-v1系列到kimi-k3的完整能力演进包括思考/推理控制、结构化输出、视频等多模态输入、动态工具加载、流式 usage 与错误码保留等核心特性。读完本文你将掌握在 AI SDK 中接入 Kimi 系列模型的完整配置方式并理解每项 Provider 选项背后的模型家族门控与请求参数映射原理。包概览从 openai-compatible 依赖到自研实现ai-sdk/moonshotai是 AI SDKThe AI Toolkit for TypeScript官方提供的 Moonshot AIKimi 开放平台语言模型 Provider。包当前版本为 3.0.48声明为 ESM-only 模块type: module要求 Node.js 22engines字段见 package.json运行时依赖仅保留ai-sdk/provider与ai-sdk/provider-utils两个核心包。CHANGELOG 记录了一次重要的架构转折3.0.32 版本中the provider no longer builds onai-sdk/openai-compatible即该包不再基于 OpenAI 兼容层搭建而是自持完整的 Chat 实现——消息转换器converter、语言模型类与辅助函数全部由本包拥有。此后版本升级的依赖列表中ai-sdk/openai-compatible不再出现只剩 provider 与 provider-utils这与 package.json 中dependencies的实际声明完全吻合。这意味着 Moonshot 独有的video_url内容部分、thinking.keep、reasoning_effort、prompt_cache_key等 API 能力不再受 OpenAI 兼容层的形状约束可以原生透传。npm i ai-sdk/moonshotai安装后即可导入默认 Provider 实例并创建模型import { moonshotai } from ai-sdk/moonshotai; import { generateText } from ai; const { text } await generateText({ model: moonshotai(kimi-k3), prompt: Write a JavaScript function that sorts a list:, });Provider 工厂createMoonshotAI(options)支持apiKey缺省读取MOONSHOT_API_KEY环境变量、baseURL默认https://api.moonshot.ai/v1、headers与自定义fetch四项配置见 moonshotai-provider.ts 与 createMoonshotAI 实现。创建出的 Provider 同时暴露chatModel与languageModel两种创建方式并统一注入ai-sdk/moonshotai/{version}的 User-Agent 后缀。模型支持矩阵与模型家族分类MoonshotAIChatModelId类型完整列出官方支持的模型 ID见 moonshotai-chat-options.ts模型家族模型 ID关键能力moonshot-v1moonshot-v1-8k/-32k/-128k/-auto经典长上下文系列支持原生 JSON Schema 结构化输出moonshot-v1 visionmoonshot-v1-8k/32k/128k-vision-preview视觉预览模型kimi-k2.5kimi-k2.5支持结构化输出、thinking 开关kimi-k2.6kimi-k2.6支持 thinking/非 thinking 模式、thinking.keep: all保留推理kimi-k2.7kimi-k2.7-code/kimi-k2.7-code-highspeed始终开启思考默认保留推理历史kimi-k3kimi-k3始终推理、支持reasoningEffort、动态工具加载CHANGELOG 3.0.40 中 Add first-class Moonshot V1 auto and vision-preview model IDs while preserving custom and retired model ID support 正是上述列表的来历——官方模型 ID 获得一等支持同时(string {})联合类型保留了自定义/已退役模型 ID 的透传能力。getMoonshotAIModelFamilymoonshotai-chat-options.ts将模型归入kimi-k2.5/kimi-k2.6/kimi-k2.7/kimi-k3/moonshot-v1/unknown六类。这个家族判定是整个 Provider 的门控中枢思考配置、reasoningEffort、采样参数temperature/topP/frequencyPenalty/presencePenalty是否发送、reasoningHistory: preserved是否可用都由模型家族决定。思考与推理thinking、reasoningEffort 与推理历史保留按模型家族的思考门控Provider 选项thinking{ type: enabled | disabled }与reasoningEffortlow | high | max默认max见 moonshotai-chat-options.ts的语义完全因模型而异。核心逻辑集中在 moonshotai-chat-language-model.ts 的switch (modelFamily)中kimi-k3始终推理不接受thinking字段传入会告警并省略reasoningEffort优先取显式设置否则将 AI SDK 通用reasoning选项按minimal→low、low→low、medium→high、high→high、xhigh→max映射为reasoning_effort请求字段kimi-k2.7思考不可关闭thinking.type: disabled或reasoning: none都会产生 unsupported 告警并被省略kimi-k2.6可开可关当reasoningHistory: preserved时追加keep: all映射为请求体中的thinking: { type: enabled, keep: all }这正是 CHANGELOG 3.0.32 所述 reasoningHistory: preserved now maps to Moonshotsthinking.keep: allrequest field (previously a no-op, the API ignoresreasoning_history)kimi-k2.5支持 thinking 开关但preserved不被支持产生告警moonshot-v1thinking与reasoning均不支持全部省略并告警。保留推理历史的多轮对话Kimi K2.7 Code 始终开启思考并默认保留推理Preserved Thinking。要在多轮对话中保留推理历史使用reasoningHistory: preservedimport { moonshotai, type MoonshotAILanguageModelOptions, } from ai-sdk/moonshotai; import { generateText } from ai; const { text, reasoningText } await generateText({ model: moonshotai(kimi-k2.7-code), prompt: Solve this problem step by step: What is 15% of 240?, providerOptions: { moonshotai: { thinking: { type: enabled }, reasoningHistory: preserved, } satisfies MoonshotAILanguageModelOptions, }, }); console.log(reasoningText); console.log(text);reasoningHistory的disabled与interleaved是兼容值不会改变请求preserved只在 kimi-k2.6 上映射为thinking.keep: allkimi-k2.7 与 k3 默认即保留推理。Kimi K2.6 的 thinking/非 thinking 模式则用thinking: { type: enabled }或thinking: { type: disabled }控制。reasoning 内容在流式与一次性调用中的输出doGenerate会读取响应中的reasoning_content并将其作为独立的reasoning内容段置于文本之前moonshotai-chat-language-model.tsdoStream中则按reasoning-start → reasoning-delta → reasoning-end → text-start → text-delta → text-end的顺序派发流式事件并在文本或工具调用开始时结束推理段L689-L749。这就是上层generateText中reasoningText与text分离的来源。结构化输出从 JSON Schema 规范化到原生支持结构化输出是本包演进最密集的能力之一CHANGELOG 中可梳理出清晰的脉络3.0.1kimi-2.6与2.7-code支持结构化输出3.0.3kimi-k2.5支持结构化输出3.0.35新增normalize-json-schema-for-mfjs——为 Moonshot 的 MFJS 校验器规范化工具 Schematuple 的items数组转为prefixItems、anyOf旁的type移入各分支、非object根 Schema 直接在客户端抛出清晰错误而非 Moonshot 返回晦涩的 4003.0.39官方 Moonshot V1 模型使用原生 JSON Schema 结构化输出并默认开启严格校验strictJsonSchema默认true3.0.40kimi-k3等模型获得一等支持同时保留自定义/已退役模型 ID 的兼容。请求构造逻辑见 moonshotai-chat-language-model.ts当响应格式为json且模型支持结构化输出时发送response_format: { type: json_schema, json_schema: { name, strict, schema } }supportsStructuredOutputs的判定在 moonshotai-provider.ts覆盖所有kimi-k*模型与全部 moonshot-v1 系列。实现中有一个值得注意的细节AI SDK 注入的顶层$schema关键字会被剥离后再发送给 Moonshotkimi-k2.5 在携带该关键字时会产生无意义输出而原始完整 Schema 仍用于结果校验。对不支持结构化输出的场景则回退为response_format: { type: json_object }。多模态输入图像、视频与 ms:// 文件引用自 3.0.32 own the chat implementation, support video input 起本包原生支持视频输入。消息转换器convertToMoonshotAIChatMessagesconvert-to-moonshotai-chat-messages.ts将 AI SDK 的通用文件部分映射为 Moonshot 的内容部分图片image/jpeg、png、gif、webp、bmp、heic、heif→image_url内容部分视频video/mp4、mpeg、mov、avi、x-flv、mpg、webm、wmv、3gpp→video_url内容部分面向kimi-k3、kimi-k2.7-code、kimi-k2.6、kimi-k2.5等视频能力模型文本文件text/*→ 内联文本内容支持 URL 或 data 两种来源音频与 PDF在发送前直接抛出客户端错误Audio and PDF file parts now throw client-side而不是让 API 返回 400——这是 3.0.39 Reject unsupported image and video media types before sending 与 3.0.32 行为的延续ms:// 引用Moonshot Files API 的ms://文件引用原生透传resolveProviderReference后必须匹配ms://前缀并在模型层的supportedUrls中声明image/*与video/*仅接受ms://协议moonshotai-chat-language-model.ts。这与模型注释一致Moonshot 不直接抓取外部 URLAI SDK 负责下载并内联 URL 文件部分ms://引用则直传。工具调用Schema 规范化、required 门控与动态加载工具 Schema 与 tool_choice 处理prepareToolsmoonshotai-prepare-tools.ts负责将 AI SDK 工具转换为 Moonshot 函数工具parameters经normalizeJsonSchemaForMFJS规范化strict字段按需透传。toolChoice的auto/none直接映射tool映射为{ type: function, function: { name } }而required对kimi-k2.6、kimi-k2.7-code、kimi-k2.7-code-highspeed会被省略并产生告警Moonshot AI rejects required tool choice for this model这正是 CHANGELOG 3.0.39 Omit required tool choice with a warning for Moonshot Kimi models that reject it 的源码落点。Kimi K3 动态工具加载3.0.40 Support Kimi K3 dynamic tool-loading system messagesKimi K3 允许在对话中途通过 system 消息动态加载函数工具。使用方式是在 system 消息的 providerOptions 中传入tools数组type、name、description、inputSchema、strict见 moonshotai-chat-options.ts。转换器强制约束动态工具必须挂在 system 消息上且内容必须为空the API forbids content alongside tools并且仅对kimi-k3家族生效——其他模型会收到 unsupported 告警并被省略。流式工具调用健壮性3.0.39 Accept Moonshot streaming tool calls without indices流式场景下部分 Moonshot 返回的tool_calls增量不含index实现中通过toolCallDelta.index ?? index回退到遍历序号moonshotai-chat-language-model.ts再交由StreamingToolCallTracker完成跨 chunk 的拼接与索引纠正。配套测试夹具覆盖了显式索引、无索引、畸形索引三种情况见__fixtures__目录下的moonshotai-stream-*-tool-call-*.chunks.txt。流式输出、usage 与日志概率流式 usage 的演进2.0.3 修复了流式场景缺失 usage 的问题3.0.39 进一步 preserve choice-level usage。当前doStream同时跟踪两个 usage 来源chunk 顶层usage经stream_options: { include_usage: true }请求与choice.usage结束时以顶层优先、choice 兜底合并moonshotai-chat-language-model.ts 与 L766。usage 转换器convertMoonshotAIChatUsage保留完整原始对象3.0.41 preserve complete raw usage objects并处理推理 token 计数——3.0.38 修复了 Prevent negative text output token counts when providers report reasoning tokens将推理 token 与完成 token 分开统计。日志概率与原始元数据3.0.39 Add Moonshot Chat Completions log probability options and provider metadatalogprobs: true或topLogprobs整数0–20设置后自动启用 logprobs会发送logprobs与top_logprobs请求字段响应中的choice.logprobs.content在流式场景累积并在finish事件中随 providerMetadata 输出。此外responseObject、choiceIndex、messageRole、toolCallTypes等原始响应元数据被完整保留在 providerMetadata 中一次性与流式均覆盖。高级选项Predicted Output、缓存与安全标识Provider 选项还包含三个面向性能与合规的字段moonshotai-chat-options.tsprediction3.0.40 add predicted output support当输出中大部分内容可预知时传入静态预测内容以加速响应{ type: content, content: string | Array{ type: text, text } }直接映射为请求体prediction字段promptCacheKey为相似请求复用响应缓存、提高命中率通常是会话或任务 ID映射为prompt_cache_keysafetyIdentifier帮助 Moonshot 识别违反使用政策的用户建议对用户名或邮箱做哈希映射为safety_identifier。Partial Mode续写末条助手消息3.0.40 Add Moonshot AI Partial Mode support for continuing a final assistant message在最后一条 assistant 消息上设置providerOptions.moonshotai.partial: true请求中发送partial: true让 Moonshot 续写该消息。约束有三仅限 assistant 角色、必须是 prompt 的最后一条消息、不能与 JSON object 响应格式组合违反会抛出InvalidPromptError见 convert-to-moonshotai-chat-messages.ts 与 L292-L309。错误处理Moonshot 错误码的完整保留3.0.39 与 3.0.41 两度强化错误语义normalize mid-stream provider error events ... into public StreamProviderError instances and preserve provider-owned type, code, status, retry, and raw payload metadata 与 Preserve documented Moonshot API error codes in HTTP and streaming errors。实现上有两层HTTP 层createJsonErrorResponseHandler基于moonshotAIErrorSchemaerror.message/error.type/error.code解析失败响应见 moonshotai-chat-api-types.ts流中层createMoonshotAIStreamError将 Moonshot 文档化错误类型映射为标准的statusCode与isRetryable语义moonshotai-chat-language-model.tsrate_limit_exceeded/rate_limit_error→ 429 可重试server_error/api_error/internal_server_error→ 500 可重试overloaded_error/service_unavailable→ 503 可重试timeout→ 504 可重试认证/权限/未找到/请求错误 → 401/403/404/400 不可重试。这样上层 AI SDK 的重试策略与错误分类可以对齐 Moonshot 的真实语义。平台级演进ESM-only、Node 版本与工作流序列化3.0.0 是 v7 预发布中的大版本带来了三项全仓级变更移除 CommonJS 导出所有包转为 ESM-onlytype: modulerequire()消费方必须改用 ESMimport最低 Node.js 版本提升到 22支持 22/24/26工作流序列化支持所有 Provider 模型类新增WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE静态方法moonshotai-chat-language-model.ts配合 provider-utils 的serializeModel()只提取可序列化属性过滤函数与含函数的对象使模型实例可以安全跨越 workflow 步骤边界。同时headers在 Provider 配置类型中变为可选便于在认证单独提供的工作流边界反序列化模型。此外 3.0.0 还统一了各 Provider 的代码模式与导出符号命名旧名称通过 deprecated 别名继续可用并在 README 中加入了 AI Gateway 提示。CHANGELOG 中频繁出现的 Updated dependencies 条目provider / provider-utils 的补丁升级也印证了 Moonshot Provider 与 AI SDK 核心层的同步演进关系。测试与质量保障本包对上述能力均有对应的测试与夹具支撑是理解实现细节的最佳入口单元测试moonshotai-chat-language-model.test.ts、convert-to-moonshotai-chat-messages.test.ts、moonshotai-provider.test.ts、moonshotai-prepare-tools.test.ts、normalize-json-schema-for-mfjs.test.ts、convert-moonshotai-chat-usage.test.ts类型测试moonshotai-chat-options.test-d.ts、moonshotai-message-provider-options.test-d.ts、moonshotai-provider.test-d.ts真实 API 响应夹具src/fixtures目录下覆盖错误响应、日志概率、推理内容、流式 usage 优先级、显式/无索引/畸形索引工具调用等场景的 JSON 与 SSE chunks 文本。测试脚本见 package.jsontest:node与test:edge分别跑 Node 与 Edge 环境的 vitest可在安装依赖后通过pnpm --filter ai-sdk/moonshotai test复现。总结从moonshot-v1到kimi-k3ai-sdk/moonshotai的演进主线清晰脱离 OpenAI 兼容层实现能力自主 → 逐模型家族落地思考/推理控制与结构化输出 → 补齐视频、动态工具、Predicted Output 等 Moonshot 特有 API 的原生支持 → 全链路保留错误码与 usage 等原始元数据。对开发者而言理解模型家族门控这一核心设计——同一个选项在不同模型上的启用、省略或告警——是正确使用该 Provider 的关键官方模型 ID 列表moonshotai-chat-options.ts与上述各项配置示例可直接作为接入 Kimi 系列模型的速查手册。【免费下载链接】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),仅供参考
返回列表