提示词库/任务指令/处理流式输出中的 tool_calls 处理流式输出中的 tool_calls
中文exp-2502未验证
处理流式输出中的 tool_calls
流式输出模式(stream)下,tool_calls 同样适用,但有几点需要额外注意:
在流式输出的过程中,由于 finish_reason 将会在最后的数据块中出现,因此建议使用 delta.tool_calls 字段是否存在来判断当前回复是否包含工具调用;
在流式输出的过程中,会先输出 delta.content,再输出 delta.tool_calls,因此你必须等待 delta.content 输出完成后,才能判断和识别 tool_calls;
在流式输出的过程中,我们会在最初的数据块中,指明当前调用 tool_calls 的 tool_call.id 和 tool_call.function.name,在后续的数据块中将只输出 tool_call.function.arguments;
在流式输出的过程中,如果 Kimi 大模型一次性返回多个 tool_calls,那么我们会额外使用一个名为 index 的字段来标识当前 tool_call 的索引,以便于你能正确拼接 tool_call.function.arguments 参数,我们使用流式输出章节中的代码例子(不使用 SDK 的场合)来说明如何操作:
python
node.js
import os
import json
import httpx
tools = [
{
"type": "function", # 约定的字段 type,目前支持 function 作为值
"function": { # 当 type 为 function 时,使用 function 字段定义具体的函数内容
"name": "search", # 函数的名称,请使用英文大小写字母、数据加上减号和下划线作为函数名称
"description": """
通过搜索引擎搜索互联网上的内容。
当你的知识无法回答用户提出的问题,或用户请求你进行联网搜索时,调用此工具。请从与用户的对话中提取用户想要搜索的内容作为 query 参数的值。
搜索结果包含网站的标题、网站的地址(URL)以及网站简介。
""", # 函数的介绍,在这里写上函数的具体作用以及使用场景,以便 Kimi 大模型能正确地选择使用哪些函数
"parameters": { # 使用 parameters 字段来定义函数接收的参数
"type": "object", # 固定使用 type: object 来使 Kimi 大模型生成一个 JSON Object 参数
"required": ["query"], # 使用 required 字段告诉 Kimi 大模型哪些参数是必填项
"properties": { # properties 中是具体的参数定义,你可以定义多个参数
"query": { # 在这里,key 是参数名称,value 是参数的具体定义
"type": "string", # 使用 type 定义参数类型
"description": """
用户搜索的内容,请从用户的提问或聊天上下文中提取。
""" # 使用 description 描述参数以便 Kimi 大模型更好地生成参数
}
}
}
}
},
]
header = {
"Content-Type": "application/json",
"Authorization": f"Bearer {os.environ.get('MOONSHOT_API_KEY')}",
}
data = {
"model": "kimi-k3",
"messages": [
{"role": "user", "content": "请联网搜索 Context Caching 技术。"}
],
"stream": True,
"tools": tools, # <-- 添加工具调用
}
复制后粘贴到 AI 对话框发送,本次对话全程生效
出处:Kimi/Moonshot 官方提示词指南 · platform.moonshot.cn/docs/guide/use-kimi-api-to-complete-tool-calls · 可信度 S · 标签:中文 / 提示词工程 / Kimi / 工具调用 / tool_calls 怎么用(对话型)复制后粘贴到对话框发送,本次对话全程生效。想长期用:支持自定义指令的产品(设置→个性化)可设为默认。