使用 `tool_calls` 时模型反复调用同一个工具,怎么办?
使用 `tool_calls` 时模型反复调用同一个工具,怎么办?
tool_calls 的过程中,模型可能会根据上下文连续发起多次工具调用。如果你发现模型连续多次调用同一个工具,并且每次调用使用的 function.name 与 function.arguments 完全相同,且工具返回结果没有带来新的有效信息,可以将其视为重复工具调用。在处理这类问题时,我们建议先排查消息布局是否正确:- 当 Kimi API 返回
finish_reason=tool_calls时,是否已将返回的choice.message原封不动地添加到messages列表; - 每个
tool_call是否都有一条对应的role=tool消息; role=tool消息中的tool_call_id是否与对应的tool_call.id完全一致;- 如果你使用流式输出
stream=True,是否已正确拼接分片返回的tool_calls,尤其是function.arguments字段。
<system-reminder> 只是一个提示词示例,不是 Kimi API 的特殊字段。你可以将其中内容合并到下一轮请求的 role=system 消息中,也可以按照自己的消息管理方式写入系统提示词。为了避免误判,建议仅在“同一个工具、同一组参数、连续多次重复、工具结果没有新进展”同时成立时触发这类提示。为什么 API 返回的结果和 Kimi 智能助手返回的结果不一致?
为什么 API 返回的结果和 Kimi 智能助手返回的结果不一致?
Kimi API 是否拥有 Kimi 智能助手的"上网冲浪"功能
Kimi API 是否拥有 Kimi 智能助手的"上网冲浪"功能
tool_calls 指南:使用 Kimi API 完成工具调用(tool_calls)如果你想寻求开源社区的协助,你可以参考以下开源项目:如果你想寻求由专业供应商提供的服务,有如下服务可供选择:Kimi API 返回的内容不完整或被截断
Kimi API 返回的内容不完整或被截断
choice.finish_reason 字段的值,如果该值为 length,则表明当前模型生成内容所包含的 Tokens 数量超过请求中的 max_completion_tokens 参数,在这种情况下,Kimi API 仅会返回 max_completion_tokens 个 Tokens 内容,多余的内容将会被丢弃,即上文所说”内容不完整”或”内容被截断”。在遇到 finish_reason=length 时,如果你想让 Kimi 大模型接着上一次返回的内容继续输出,可以使用 Kimi API 提供的 Partial Mode,详细的文档请参考:使用 Kimi API 的 Partial Mode如果你想避免出现 finish_reason=length,我们建议你适当增大 max_completion_tokens 的值。推荐的最佳实践是:通过 estimate-token-count 接口计算输入内容的 Tokens 数量,然后从所选模型支持的最大上下文窗口中扣除这部分输入 Tokens。例如,moonshot-v1-32k 模型最大支持 32k Tokens,kimi-k2.6、kimi-k2.5、kimi-k2-0905-preview 和 kimi-k2-turbo-preview 模型最大支持 256k Tokens,扣除输入 Tokens 后的剩余值即可作为当前请求的 max_completion_tokens 上限。Kimi 大模型的输出长度是多少
Kimi 大模型的输出长度是多少
- 对于
moonshot-v1-8k模型而言,最大输出长度是8*1024 - prompt_tokens; - 对于
moonshot-v1-32k模型而言,最大输出长度是32*1024 - prompt_tokens; - 对于
moonshot-v1-128k模型而言,最大输出长度是128*1024 - prompt_tokens; - 对于
kimi-k2.6、kimi-k2.5、kimi-k2-0905-preview和kimi-k2-turbo-preview模型而言,最大输出长度是256*1024 - prompt_tokens;
Kimi 大模型支持的汉字数量是多少?
Kimi 大模型支持的汉字数量是多少?
- 对于
moonshot-v1-8k模型而言,大约支持一万五千个汉字; - 对于
moonshot-v1-32k模型而言,大约支持六万个汉字; - 对于
moonshot-v1-128k模型而言,大约支持二十万个汉字; - 对于
kimi-k2.6、kimi-k2.5、kimi-k2-0905-preview和kimi-k2-turbo-preview模型而言,大约支持四十万个汉字;
文件抽取内容不准确、图像无法被识别
文件抽取内容不准确、图像无法被识别
使用 `files` 接口时,希望使用 `file_id` 引用文件内容
使用 `files` 接口时,希望使用 `file_id` 引用文件内容
file_id 的方式引用文件内容作为上下文。使用接口报错 `content_filter: The request was rejected because it was considered high risk`
使用接口报错 `content_filter: The request was rejected because it was considered high risk`
content_filter 错误。出现 Connection 相关错误
出现 Connection 相关错误
Connection Error、Connection Time Out 等错误,请按照以下顺序检查:- 程序代码或使用的 SDK 是否有默认的超时设置;
- 是否有使用任何类型的代理服务器,并检查代理服务器的网络和超时设置;
Connection 相关错误的场景是,未启用流式输出 stream=True 时,Kimi 大模型生成的 Tokens 数量过多,导致在等待 Kimi 大模型生成过程时,触发了某个中间环节网关的超时时间设置。通常,某些网关应用会通过检测是否接收到服务器端返回的 status_code 和 header 来判断当前请求是否有效,在不使用流式输出 stream=True 的场合,Kimi 服务端会等待 Kimi 大模型生成完毕后发送 header,在等待 header 返回时,某些网关应用会关闭等待时间过长的连接,进而产生 Connection 相关错误。我们推荐启用流式输出 stream=True 来尽可能减少 Connection 相关错误。报错信息显示的 TPM、RPM 限制与我的账户 Tier 等级不匹配
报错信息显示的 TPM、RPM 限制与我的账户 Tier 等级不匹配
rate_limit_reached_error 错误,例如:api_key;通常情况下 TPM、RPM 与预期不匹配的原因,是使用了错误的 api_key,例如误用了其他用户给予的 api_key,或个人拥有多个账号的情况下,混用了 api_key。报错 `model_not_found`
报错 `model_not_found`
base_url=https://api.moonshot.cn/v1,通常情况下,model_not_found 错误产生的原因是,使用 OpenAI SDK 时,未设置 base_url 值,导致请求被发送至 OpenAI 服务器,OpenAI 返回了 model_not_found 错误。Kimi 大模型出现数值计算错误
Kimi 大模型出现数值计算错误
tool_calls 为 Kimi 大模型提供计算器功能,关于工具调用 tool_calls,可以参考我们撰写的工具调用 tool_calls 指南:使用 Kimi API 完成工具调用(tool_calls)Kimi 大模型无法回答今天的日期
Kimi 大模型无法回答今天的日期
- python
- node.js
在不使用 SDK 的场景下如何处理错误
在不使用 SDK 的场景下如何处理错误
- python
- node.js
为何在提示词 prompt 相似的情况下,有的请求响应速度快,有的请求响应速度慢?
为何在提示词 prompt 相似的情况下,有的请求响应速度快,有的请求响应速度慢?
stream=True,并观察首 Token 返回时间(首 Token 返回时间,我们简称为 TTFT — Time To First Token),通常情况下,提示词 prompt 的长度相似的场合,首 Token 响应时间不会有太大的波动。我设置了 `max_completion_tokens=2000`,让 Kimi 输出 2000 字的内容,但 Kimi 输出的内容少于 2000 字
我设置了 `max_completion_tokens=2000`,让 Kimi 输出 2000 字的内容,但 Kimi 输出的内容少于 2000 字
注:max_tokens已弃用(deprecated),请使用max_completion_tokens,两者含义相同。
max_completion_tokens 参数的含义是:调用 /v1/chat/completions 时,允许模型生成的最大 Tokens 数量,当模型已经生成的 Tokens 数超过设置的 max_completion_tokens 时,模型会停止输出下一个 Token。max_completion_tokens 的作用在于:- 帮助调用方确定该使用哪个模型(例如,当
prompt_tokens + max_completion_tokens <= 8 * 1024时,可以选择moonshot-v1-8k模型); - 防止在某些意外的场合,Kimi 模型输出了过多不符合预期的内容,进而导致额外的费用消耗(例如,Kimi 模型重复输出空白字符);
max_completion_tokens 并不能指示 Kimi 大模型输出多少 Tokens,换句话说,max_completion_tokens 不会作为提示词 prompt 的一部分输入 Kimi 大模型,如果你想让模型输出特定字数的内容,可以参考以下通用的解决办法:- 对于要求输出内容字数在 1000 字以内的场合:
- 在提示词 prompt 中向 Kimi 大模型明确输出的字数;
- 通过人工或程序手段检测输出的字数是否符合预期,如果不符合预期,通过在第二轮对话中向 Kimi 大模型指示”字数多了”或”字数少了”,让 Kimi 大模型输出新一轮的内容。
- 对于要求输出内容字数在 1000 字以上甚至更多时:
- 尝试将预期输出的内容按结构或章节切割成若干部分,并制成模板,并使用占位符标记想要 Kimi 大模型输出内容的位置;
- 让 Kimi 大模型按照模板,逐个填充每个模板的占位符部分,最终拼装成完整的长文文本。
我在一分钟内只请求了一次,但却触发了 `Your account reached max request` 错误
我在一分钟内只请求了一次,但却触发了 `Your account reached max request` 错误
Certain errors are automatically retried 2 times by default, with a short exponential backoff. Connection errors (for example, due to a network connectivity problem), 408 Request Timeout, 409 Conflict, 429 Rate Limit, and >=500 Internal errors are all retried by default.这种重试机制在遇到错误时,会默认重试 2 次(总计 3 次请求),通常来说,对于网络状况不稳定或者其他可能导致请求发生错误的场合,使用 OpenAI SDK 会将一个请求放大至 2 到 3 次请求,这些请求都会占用你的 RPM(每分钟请求数)次数。注:对于使用 OpenAI SDK 且账户等级为
tier0 的用户而言,由于存在默认的重试机制,一次错误的请求就会消耗完所有的 RPM 额度。为了便于传输,我使用 `base64` 编码我的文本内容
为了便于传输,我使用 `base64` 编码我的文本内容
base64 编码你的文件会导致产生巨量的 Tokens 消耗。如果你的文件类型是我们 /v1/files 文件接口支持的格式,使用文件接口上传并抽取文件内容即可。对于二进制或其他格式编码的文件,Kimi 大模型暂时无法解析内容,请不要添加到上下文中。为什么我在 platform.kimi.ai 平台申请的 key,不能用在 platform.kimi.com 平台?
为什么我在 platform.kimi.ai 平台申请的 key,不能用在 platform.kimi.com 平台?
- 国内开放平台 base_url: https://api.moonshot.cn/v1
- 境外开放平台 base_url: https://api.moonshot.ai/v1