星辰MaaS产品文档
平台介绍
星辰MaaS平台介绍
API文档
认知大模型
Spark4.0 Ultra
Spark http调用文档
Spark Max
Spark Pro
Spark Pro-128k
Spark Lite
翻译大模型
人格大模型
代码大模型
医疗大模型
办公大模型
汽车大模型
数字员工大模型
虚拟人大模型
工业大模型
科技文献大模型
口语通用大模型
internlm2_7b_chat
llama2_7b
Chinese-Aplaca-2-7B
codellama_7b_instruction
internlm_7b
Chinese-Alpaca-2-13b-16k
llama-3-chinese-8b-instruct
Chinese-Alpaca-7B
baichuan_7b
spark 13b
spark 2.6b
llama3_8b_instruct
llama2_7b_chat_hf
llama2_13b
falcon_7b_instruct
phi_3_mini_4k_instruct
starcoder2-3b
c4ai_command_r_v01
Spark Character
qwen_v2_0.5b_chat
qwen_v2_1.5b_chat
qwen_v2_72b_chat
gemma2_9b_it
qwen_v2.5_7b_chat
Spark 深度推理 http调用文档
语音大模型
中文识别大模型
多语种识别大模型
超拟人语音合成
多模态
图片生成
图像理解
Stable Diffusion-XL
Visual Transformer
通用OCR大模型
Stable-Diffusion-3-medium-diffusers
SDK文档
星火认知大模型
Windows SDK集成文档
Android SDK集成文档
Linux SDK集成文档
iOS SDK集成文档
识别大模型
Android SDK集成文档
Linux SDK集成文档
超拟人语音合成
Android SDK集成文档
Linux SDK集成文档
iOS SDK集成文档
图片生成
Android SDK集成文档
Linux SDK集成文档
Windows SDK集成文档
iOS SDK集成文档
图像理解
Android SDK集成文档
Linux SDK集成文档
用户指南
申请APPID指引
工单授权指引
鉴权说明
OpenAILike鉴权方式使用说明
WebSocket鉴权使用说明
http鉴权使用说明
大模型精调平台
产品使用说明
数据集格式说明
Web API文档
星火微调服务
开源大模型
stable_diffusion图片生成
精调服务_HTTP协议
bert协议文档
图像理解_WebSocket协议
星火微调服务Web API文档
图片分类
批处理API文档
图像理解_HTTP协议
精调服务_WebSocket协议
Prompt工程指南
本文档使用 MrDoc 发布
-
+
首页
Spark 深度推理 http调用文档
# 星火大模型深度推理 接口 公告说明: 星火深度推理模型X1已升级至X1.5 (正式版本),X1的历史用户请求将默认指向该版本 X1.5能力介绍: (1)新增动态调整思考模式,通过thinking 字段控制; (2)上下文长度增大:输入、输出各64K; (3)支持FunctionCall功能; # ## 1、请求 请求方式:POST 请求域名和path: 面向公司业务专用入口: ``` https://spark-api-open-inner.xf-yun.com/v2/chat/completions ``` 面向外部开发者入口: ``` https://spark-api-open.xf-yun.com/v2/chat/completions ``` **Python示例** ```json import os from openai import OpenAI import openai client = OpenAI( # x1 api_key="AK:SK", # 开通鉴权appid对应的ak:sk base_url="https://spark-api-open.xf-yun.com/v2", ) # stream_res = True stream_res = False stream = client.chat.completions.create( messages=[ { "role": "user", "content": "你好" }, ], model="spark-x", stream=stream_res, user="123456", ) full_response = "" if not stream_res: print(stream.to_json()) else: for chunk in stream: if hasattr(chunk.choices[0].delta, 'reasoning_content') and chunk.choices[0].delta.reasoning_content is not None: reasoning_content = chunk.choices[0].delta.reasoning_content print(reasoning_content, end="", flush=True) # 实时打印思考模型输出的思考过程每个片段 if hasattr(chunk.choices[0].delta, 'content') and chunk.choices[0].delta.content is not None: content = chunk.choices[0].delta.content print(content, end="", flush=True) # 实时打印每个片段 full_response += content print("\n\n ------完整响应:", full_response) ``` ## 2、协议 ### (1)请求参数 ```json { "user": "user-12341", "model": "spark-x", "stream": false, "tool_choice": "auto", "messages": [ { "role": "user", "content": "北京和上海天气怎么样" } ], "tools": [ { "type": "function", "function": { "name": "get_current_weather", "description": "当你想查询指定城市的天气时非常有用。", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "城市或县区,比如北京市、杭州市、余杭区等。" } }, "required": [ "location" ] } } } ] } ``` 参数说明: | 顶级字段 | 一级子字段 | 二级子字段 | 类型 | 描述 | 示例值 | | --------------- | ------------- | ----------- | ------- | --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **user** | | | string | 标识发出请求的最终用户。 | `"user-12341"` | | **model** | | | string | 指定要使用的具体大语言模型。 | `"spark-x"` (模型已升级至X1.5,x1传参同样指向X1.5模型) | | **stream** | | | boolean | 是否以流式传输方式接收响应。`false` 表示等待完整响应。 | `"true"`, `"false"` | | **tool_choice** | | | string | 控制模型如何选择工具。默认为 `auto` 让模型自主决定是否调用工具。<br>当传入 string 时:<br>• `auto`:模型可自主决定是否调用工具<br>• `none`:不允许模型调用工具<br>• `required`:必须调用一个或多个工具 | `"auto"` / `"none"` / `"required"` | | | | | object | 在 `force` 模式以及 `allowed_tools` 模式下,传入 object,控制模型强制调用工具或限制模型可调用的工具范围。 | **force 模式**<br>`"tool_choice": {"type": "function", "name": "get_current_weather"}`<br><br>**allowed_tools 模式**<br>`"tool_choice": { "type": "allowed_tools", "mode": "auto", "tools": [ { "type": "function", "name": "get_weather" }, { "type": "function", "name": "search_docs" } ] }` | | **messages** | | | array | 消息列表 | | | | content | | string | 消息的具体内容。 | `"上海和杭州的天气"` | | | role | | string | 角色。<br>`"user"`:用户<br>`"assistant"`:大模型<br>`"tool"`:工具结果回传 | `"user"`, `"assistant"`, `"tool"` | | **tools** | | | array | 工具列表 | | | | type | | string | 工具类型 | `"function"` | | | function | | object | 包含工具具体定义的对象。 | | | | | name | string | 工具的名称。 | `"get_current_weather"` | | | | description | string | 描述函数工具的功能,帮助模型理解用途。 | `"当你想查询指定城市的天气时非常有用。"` | | | | parameters | object | 定义请求函数工具所需参数的 JSON Schema 对象。 | — | | **thinking** | | | object | 深度思考能力控制 | | | | thinking.type | | string | 控制是否开启深度思考:<br>• `enabled`:强制开启<br>• `disabled`:强制关闭<br>• `auto`:模型自行判断 | `extra_body={"thinking": {"type": "disabled"}}`<br>`{"type": "enabled"}`<br>`{"type": "auto"}` | ### (2)响应信息 **非流式**返回一个 `chat completion` 对象: ```json { "code": 0, "message": "Success", "sid": "cha0001000d@dx19a157d19043b4e272", "status": "complete", "choices": [ { "message": { "role": "assistant", "reasoning_content": "\n\n我现在需要处理用户的问题:“北京和上海天气怎么样”。首先,查看可用的工具是get_current_weather,它需要的参数是location(城市或县区)。用户的问题是关于两个城市的天气,所以需要分别调用这个工具两次,一次 for 北京,一次 for 上海。根据工具调用的要求,每个调用要包含name和arguments,参数location分别填“北京市”和“上海市”。然后按照格式组合起来。", "content": "", "tool_calls": [ { "id": "Call_00010010@dx19a157d3b4c3b4e2721", "type": "function", "function": { "name": "get_current_weather", "arguments": "{\"location\":\"北京市\"}" } }, { "id": "Call_00010011@dx19a157d3b4c3b4e2722", "type": "function", "function": { "name": "get_current_weather", "arguments": "{\"location\":\"上海市\"}" } } ] }, "index": 0 } ], "usage": { "prompt_tokens": 5, "completion_tokens": 139, "total_tokens": 144 } } ``` 响应的参数说明: | 顶级字段 | 一级子字段 | 二级子字段 | 三级子字段 | 四级子字段 | 类型 | 描述 | 示例值 | | ----------- | ----------------- | ----------------- | -------- | --------- | ------- | ------------------------------------ | -------------------------------------- | | **code** | | | | | integer | API 调用的状态码。`0` 表示成功。 | `0` | | **message** | | | | | string | 状态信息。 | `"Success"` | | **sid** | | | | | string | 本次对话的唯一会话 ID。 | `"cha000...d372"` | | **status** | | | | | string | 指示请求处理的状态。`complete` 表示已完成。 | `"complete"` | | **choices** | | | | | array | 模型生成的核心内容对象。 | | | | index | | | | integer | 索引号。 | | | | message | | | | object | 消息对象。 | | | | | role | | | string | 消息生成者的角色,这里是 `assistant`(模型)。 | `"assistant"` | | | | reasoning_content | | | string | 思维链,展示模型如何分析问题、评估可用工具、识别限制并制定分步执行计划。 | `"我现在需要处理用户的问题:“上海和杭州的天气”。首先..."` | | | | content | | | string | 模型直接返回给用户的文本内容。此处为空,因为模型预计要调用外部工具。 | `""` | | | | tool_calls | | | array | 工具调用请求的数组。 | | | | | | id | | string | 工具调用的唯一标识符。 | `"Call_000128af@dx19a153c72ea3b4e392"` | | | | | type | | string | 工具的类型,这里是函数。 | `"function"` | | | | | function | | object | 包含要调用的工具名称和参数的对象。 | | | | | | | name | string | 要调用的函数名称。 | `"get_current_weather"` | | | | | | arguments | string | 传递给函数的参数(JSON 字符串)。 | `{"location":"上海市"}` | | **usage** | | | | | object | 本次 API 调用消耗的 token 数量统计。 | | | | prompt_tokens | | | | integer | 输入消耗的 token 数量。 | `66` | | | completion_tokens | | | | integer | 模型生成内容的消耗。 | `1562` | | | total_tokens | | | | integer | 总消耗的 token 数量。 | `1628` | **流式**返回包含一系列 `chat completion chunk` 对象的流式输出: ```json { "code": 0, "message": "Success", "sid": "cha00010012@dx19a157dcbb43b4e272", "id": "cha00010012@dx19a157dcbb43b4e272", "created": 1761297211, "choices": [ { "delta": { "role": "assistant", "content": "", "tool_calls": [ { "id": "Call_7ea0da014a510101_1", "type": "function", "function": { "name": "", "arguments": "上海市" }, "index": 1 } ], "type": "function" }, "index": 0 } ] } ``` ```json data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297164,"choices":[{"delta":{"role":"assistant","reasoning_content":"\n\n","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297164,"choices":[{"delta":{"role":"assistant","reasoning_content":"我现在需要处理","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297165,"choices":[{"delta":{"role":"assistant","reasoning_content":"用户的问题:“北京","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297165,"choices":[{"delta":{"role":"assistant","reasoning_content":"和上海天气怎么样”。","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297166,"choices":[{"delta":{"role":"assistant","reasoning_content":"首先,用户想查询两个","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297166,"choices":[{"delta":{"role":"assistant","reasoning_content":"城市的天气,分别是北京和上海","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297166,"choices":[{"delta":{"role":"assistant","reasoning_content":"。","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297167,"choices":[{"delta":{"role":"assistant","reasoning_content":"根据提供的工具“get_current","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297167,"choices":[{"delta":{"role":"assistant","reasoning_content":"_weather”,每个调用只能指定一个","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297168,"choices":[{"delta":{"role":"assistant","reasoning_content":"location参数。","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297168,"choices":[{"delta":{"role":"assistant","reasoning_content":"所以需要分别调用两次","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297168,"choices":[{"delta":{"role":"assistant","reasoning_content":"这个工具,一次 for 北京,一次 for 上海。","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297169,"choices":[{"delta":{"role":"assistant","reasoning_content":"接下来要确保","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297169,"choices":[{"delta":{"role":"assistant","reasoning_content":"参数正确,location分别是“北京市”","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297169,"choices":[{"delta":{"role":"assistant","reasoning_content":"和“上海市”(按照例子中的格式","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297170,"choices":[{"delta":{"role":"assistant","reasoning_content":")。","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297209,"choices":[{"delta":{"role":"assistant","reasoning_content":"然后按照要求的格式输出工具调用","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297209,"choices":[{"delta":{"role":"assistant","reasoning_content":",每个调用用\u003cunused0\u003e包裹。","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297211,"choices":[{"delta":{"role":"assistant","content":"","tool_calls":[{"id":"Call_7ea09a013c230100_0","type":"function","function":{"name":"get_current_weather","arguments":""},"index":0}],"type":"function"},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297211,"choices":[{"delta":{"role":"assistant","content":"","tool_calls":[{"id":"Call_7ea09a013c230100_0","type":"function","function":{"name":"","arguments":"{\"location"},"index":0}],"type":"function"},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297211,"choices":[{"delta":{"role":"assistant","content":"","tool_calls":[{"id":"Call_7ea09a013c230100_0","type":"function","function":{"name":"","arguments":"\":\""},"index":0}],"type":"function"},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297211,"choices":[{"delta":{"role":"assistant","content":"","tool_calls":[{"id":"Call_7ea09a013c230100_0","type":"function","function":{"name":"","arguments":"北京市"},"index":0}],"type":"function"},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297211,"choices":[{"delta":{"role":"assistant","content":"","tool_calls":[{"id":"Call_7ea09a013c230100_0","type":"function","function":{"name":"","arguments":"\"}"},"index":0}],"type":"function"},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297211,"choices":[{"delta":{"role":"assistant","content":"","tool_calls":[{"id":"Call_7ea0da014a510101_1","type":"function","function":{"name":"get_current_weather","arguments":""},"index":1}],"type":"function"},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297211,"choices":[{"delta":{"role":"assistant","content":"","tool_calls":[{"id":"Call_7ea0da014a510101_1","type":"function","function":{"name":"","arguments":"{\"location"},"index":1}],"type":"function"},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297211,"choices":[{"delta":{"role":"assistant","content":"","tool_calls":[{"id":"Call_7ea0da014a510101_1","type":"function","function":{"name":"","arguments":"\":\""},"index":1}],"type":"function"},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297211,"choices":[{"delta":{"role":"assistant","content":"","tool_calls":[{"id":"Call_7ea0da014a510101_1","type":"function","function":{"name":"","arguments":"上海市"},"index":1}],"type":"function"},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297211,"choices":[{"delta":{"role":"assistant","content":"","tool_calls":[{"id":"Call_7ea0da014a510101_1","type":"function","function":{"name":"","arguments":"\"}"},"index":1}],"type":"function"},"index":0}],"usage":{"prompt_tokens":5,"completion_tokens":144,"total_tokens":149}} data: [DONE] ``` 响应的参数说明: | 顶级字段 | 一级子字段 | 二级子字段 | 三级子字段 | 四级子字段 | 类型 | 描述 | 示例值 | | ----------- | ----------------- | ----------------- | -------- | --------- | ------- | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **code** | | | | | integer | 状态码,`0` 表示成功。 | `0` | | **message** | | | | | string | 状态信息。 | `"Success"` | | **sid** | | | | | string | 本次对话的唯一会话 ID。 | `"cha000...d362"` | | **status** | | | | | integer | 状态,`2` 表示结束帧。 | — | | **id** | | | | | string | 本次请求的唯一 ID。 | `"cha000...d362"` | | **created** | | | | | integer | 事件创建的 Unix 时间戳。 | `1760970555` | | **choices** | | | | | array | 核心字段:流式消息。 | — | | | index | | | | integer | 该选项的索引。 | `0` | | | delta | | | | object | 流式消息的一个段。 | `{"code":0,"message":"Success","sid":"cha00010012@dx19a157dcbb43b4e272","id":"cha00010012@dx19a157dcbb43b4e272","created":1761297211,"choices":[{"delta":{"role":"assistant","content":"","tool_calls":[{"id":"Call_7ea0da014a510101_1","type":"function","function":{"name":"","arguments":"上海市"},"index":1}],"type":"function"},"index":0}]}` | | | | role | | | string | 消息生成者的角色。 | `"assistant"` | | | | reasoning_content | | | string | 思维链内容的一部分。 | `"需要处理用户的问题"` | | | | content | | | string | 回复内容的一部分。 | `""` | | | | tool_calls | | | array | 工具调用信息的一部分。 | `[{"id": "...", "function": {"arguments": "上海市"}}]` | | | | | id | | string | 工具调用的唯一标识符。 | `"Call_000128af@dx19a153c72ea3b4e392"` | | | | | type | | string | 工具的类型,这里是函数。 | `"function"` | | | | | function | | object | 包含要调用的工具名称和参数的对象。 | — | | | | | | name | string | 要调用的函数名称。 | `"get_current_weather"` | | | | | | arguments | string | 传递给函数的参数。<br>流式情况下,会逐步返回该字段内容。 | `{"location":"上海市"}` | | | | | index | | integer | 工具调用的索引。 | `0` | | **usage** | | | | | object | Token 消耗统计,通常只在最后一个 `delta` 中出现。 | `{"prompt_tokens": ...}` | | | prompt_tokens | | | | integer | 输入消耗的 token。 | `66` | | | completion_tokens | | | | integer | 生成内容的消耗。 | `1562` | | | total_tokens | | | | integer | 总消耗的 token。 | `1628` | # 多轮对话 看输入的 `messages` 层级下,允许用户通过 `role == tool` 回传工具调用的结果。 模型会根据历史消息中的 `tool_calls` 中对应的 `tool_call.id` 来匹配用户回传的结果。 用户回传工具调用的结果之后,需要大模型先对回传的结果进行一轮总结,然后用户再发起新一轮的对话。 如果 `tool_call_id` 匹配不上的话,模型无法对应的工具调用和回传的工具调用结果。 --- ## 输入示例 ```json { "user": "user-12341", "model": "x1", "stream": false, "tool_choice": "auto", "messages": [ { "role": "user", "content": "上海和杭州的天气" }, { "role": "assistant", "reasoning_content": "我现在需要处理用户的问题:“上海和杭州的天气”。首先,用户想查询两个城市的天气,分别是上海和杭州。根据提供的工具,get_current_weather 工具需要 location 参数,而且每个调用只能处理一个 location。所以需要分别调用两次这个工具,一次是上海,一次是杭州。接下来按照格式要求,每个工具调用前加上 <unused0>,参数正确填写。现在组合起来就是两个工具调用,分别对应两个城市。", "content": "", "tool_calls": [ { "id": "Call_000d001b@dx19a020957f6b86d3621", "type": "function", "function": { "name": "get_current_weather", "arguments": "{\"location\":\"上海市\"}" } }, { "id": "Call_000d001c@dx19a020957f6b86d3622", "type": "function", "function": { "name": "get_current_weather", "arguments": "{\"location\":\"杭州市\"}" } } ] }, { "role": "tool", "tool_call_id": "Call_000d001b@dx19a020957f6b86d3621", "content": "{\"location\": \"上海\", \"weather\": \"晴天\", \"temperature\": \"25°C\"}" }, { "role": "tool", "tool_call_id": "Call_000d001c@dx19a020957f6b86d3622", "content": "{\"location\": \"杭州\", \"weather\": \"雨天\", \"temperature\": \"14°C\"}" } ], "tools": [ { "type": "function", "function": { "name": "get_current_weather", "description": "当你想查询指定城市的天气时非常有用。", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "城市或县区,比如北京市、杭州市、余杭区等。" } }, "required": ["location"] } } } ] } ``` # 返回示例 ## 非流式 ```json { "code": 0, "message": "Success", "sid": "cha00010015@dx19a158aca723b4e272", "status": "complete", "choices": [ { "message": { "role": "assistant", "reasoning_content": "用户最初问上海和杭州的天气,之前已经调用工具获取了两地的天气结果,现在需要把结果反馈给用户。首先看工具返回的内容:上海晴天25°C,杭州雨天14°C。所以直接整理成自然语言回复就行。", "content": "上海市的天气是晴天,温度为25°C;杭州市的天气是雨天,温度为14°C。" }, "index": 0 } ], "usage": { "prompt_tokens": 54, "completion_tokens": 86, "total_tokens": 140 } } ## 流式 ```json data: {"code":0,"message":"Success","sid":"cha00010016@dx19a158b87af3b4e272","id":"cha00010016@dx19a158b87af3b4e272","created":1761298057,"choices":[{"delta":{"role":"assistant","reasoning_content":"\n\n","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010016@dx19a158b87af3b4e272","id":"cha00010016@dx19a158b87af3b4e272","created":1761298057,"choices":[{"delta":{"role":"assistant","reasoning_content":"用户最初问","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010016@dx19a158b87af3b4e272","id":"cha00010016@dx19a158b87af3b4e272","created":1761298057,"choices":[{"delta":{"role":"assistant","reasoning_content":"上海和杭州的","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010016@dx19a158b87af3b4e272","id":"cha00010016@dx19a158b87af3b4e272","created":1761298058,"choices":[{"delta":{"role":"assistant","reasoning_content":"天气,之前已经调用","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010016@dx19a158b87af3b4e272","id":"cha00010016@dx19a158b87af3b4e272","created":1761298058,"choices":[{"delta":{"role":"assistant","reasoning_content":"工具获取了两地的天气","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010016@dx19a158b87af3b4e272","id":"cha00010016@dx19a158b87af3b4e272","created":1761298058,"choices":[{"delta":{"role":"assistant","reasoning_content":"结果,现在需要把这些结果反馈","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010016@dx19a158b87af3b4e272","id":"cha00010016@dx19a158b87af3b4e272","created":1761298059,"choices":[{"delta":{"role":"assistant","reasoning_content":"给用户。","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010016@dx19a158b87af3b4e272","id":"cha00010016@dx19a158b87af3b4e272","created":1761298060,"choices":[{"delta":{"role":"assistant","reasoning_content":"首先看工具返回的内容:","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010016@dx19a158b87af3b4e272","id":"cha00010016@dx19a158b87af3b4e272","created":1761298060,"choices":[{"delta":{"role":"assistant","reasoning_content":"上海晴天25°C,杭州","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010016@dx19a158b87af3b4e272","id":"cha00010016@dx19a158b87af3b4e272","created":1761298060,"choices":[{"delta":{"role":"assistant","reasoning_content":"雨天14°C。","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010016@dx19a158b87af3b4e272","id":"cha00010016@dx19a158b87af3b4e272","created":1761298061,"choices":[{"delta":{"role":"assistant","reasoning_content":"所以","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010016@dx19a158b87af3b4e272","id":"cha00010016@dx19a158b87af3b4e272","created":1761298061,"choices":[{"delta":{"role":"assistant","reasoning_content":"直接整理成自然语言回答就行。","content":""},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010016@dx19a158b87af3b4e272","id":"cha00010016@dx19a158b87af3b4e272","created":1761298061,"choices":[{"delta":{"role":"assistant","content":"上海市的天气为晴天"},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010016@dx19a158b87af3b4e272","id":"cha00010016@dx19a158b87af3b4e272","created":1761298061,"choices":[{"delta":{"role":"assistant","content":",温度25°C;杭州市"},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010016@dx19a158b87af3b4e272","id":"cha00010016@dx19a158b87af3b4e272","created":1761298061,"choices":[{"delta":{"role":"assistant","content":"的天气为雨天,温度1"},"index":0}]} data: {"code":0,"message":"Success","sid":"cha00010016@dx19a158b87af3b4e272","id":"cha00010016@dx19a158b87af3b4e272","created":1761298061,"choices":[{"delta":{"role":"assistant","content":"4°C。"},"index":0}],"usage":{"prompt_tokens":54,"completion_tokens":84,"total_tokens":138}} data: [DONE] ``` # ToolChoice 注意:toolchoice如果未正确按照功规传入,API侧采用默认Auto模式处理 ## auto 模式 是否调用工具交由模型自动控制 ```json "tool_choice": "auto" ``` ## required 模式 ```json "tool_choice": "required" ``` ## none 模式 不允许模型调用工具 ```json { "user": "user-12341", "model": "x1", "stream": false, "tool_choice": "none", "messages": [ { "role": "user", "content": "上海和杭州的天气" } ], "tools": [ { "type": "function", "function": { "name": "get_current_weather", "description": "当你想查询指定城市的天气时非常有用。", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "城市或县区,比如北京市、杭州市、余杭区等。" } }, "required": [ "location" ] } } } ] } ``` ## force 模式 强制模型调用某一个工具(由于模型效果原因,不一定有效) 如果没有匹配上对应的工具话,模型会尝试不调用工具尽可能给出结果 ```json "tool_choice": {"type": "function", "name": "get_current_weather"} ``` ## allowed_tools 模式 允许调用 tools 当中存在的工具,type 必须为 “function” ```json "tool_choice": { "type": "allowed_tools", "mode": "auto", "tools": [ { "type": "function", "name": "get_current_weather" }, { "type": "function", "name": "search_docs" } ] } } ```
hrzhu7
2025年11月6日 15:32
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码