💡 直接答案
tool_call message 通常是模型和客户端之间的工具调用结构,正常情况下不应该直接作为最终回答显示。如果客户端不支持工具调用、API 模式不匹配、协议转换不完整,或流式请求中途断开,就可能看到 tool_call、function_call、arguments、tool_call_id 等内部内容。应检查客户端模式、模型名、Base URL、是否启用 tools,以及后台 usage 和扣费记录。
tool_call message 是什么意思?
tool_call / tool_calls / function_call 是模型请求调用工具或函数时使用的结构。例如 web search、code interpreter、file search 等工具调用都通过这个结构描述。
它的特点:
- 它不是普通自然语言回答
- 正常客户端应该消费、执行或隐藏这类结构
- 如果直接显示出来,通常说明客户端、协议或模型返回格式没有被正确处理
- 不要简单理解为"模型是假"或"Key 一定错"
为什么 tool_call 会直接显示出来?
| 原因 | 常见表现 | 建议处理 |
|---|---|---|
| 客户端不支持工具调用 | 看到 tool_call_id、arguments、function_call JSON |
关闭 tools 或换支持工具调用的客户端 / 模式 |
| API 模式不匹配 | Claude Code / Anthropic Messages 和 OpenAI-compatible 混用 | 确认当前工具应该用不带 /v1 还是带 /v1 |
| 模型返回工具调用而不是文本 | content 为空,但有 tool_calls |
查看 finish_reason、usage、completion_tokens |
| 协议转换异常 | 内部结构变成普通 message | 记录模型、时间、客户端版本并联系客服核查 |
| 流式请求中断 | client_gone、empty response、没有完整输出 | 查看 usage 和消费记录 |
tool_call message 和 empty response、client_gone 有什么关系?
tool_call 可见不一定等于 empty response:
- empty response 通常指 content 为空或没有可用自然语言输出
- tool_call 可见 说明模型返回了工具调用结构,但不一定是最终回答
- client_gone 通常表示客户端提前断开,可能导致只收到部分 tool_call 就中断
如果同时出现以下情况,说明用户可能没有拿到有效输出:
completion_tokens=0- content 为空
stream_status=error
扣费判断要看后台 usage、raw quota、completion_tokens 和消费记录。详细说明参考 API 扣费透明指南。
Claude Code、Cursor、Codex 遇到 tool_call 怎么排查?
Claude Code
- Claude Code 可能使用 Anthropic Messages 原生模式
- Base URL 通常不带
/v1 - 普通请求:
https://api1.link-ai.cc - 长请求:
https://api2.link-ai.cc - 如果通过 OpenAI-compatible 模式接入,才通常带
/v1 - 检查 ccSwitch / Claude Code 是否支持工具调用
相关指南:Claude Code 524 / 503 排查、Claude Code API 稳定性
Cursor
- Cursor 通常走 OpenAI-compatible
- Base URL 常见为
https://api1.link-ai.cc/v1 - 长请求可考虑
https://api2.link-ai.cc/v1 - 检查是否启用 tools / function calling
- 检查模型是否支持当前客户端格式
相关指南:Cursor 自定义 API Provider、多工具 Base URL 配置
Codex
- Codex 通常走 OpenAI-compatible
- Base URL 常见为
https://api1.link-ai.cc/v1 - 不要填写 Claude Code 原生地址
- 检查模型名、API Key、模型权限、工具调用配置
Gemini、Claude、GPT 模型都会出现 tool_call 吗?
不同模型家族都可能支持工具调用或函数调用:
- Gemini / Claude / GPT 在不同 API 格式下工具调用结构不完全一样
- OpenAI-compatible 网关会做格式适配,但不同客户端对 tools 的支持不同
- 如果对稳定性要求高,应优先使用客户端明确支持的模型和模式
- 不要承诺所有模型都兼容所有工具
看到 tool_call message 会不会扣费?
是否扣费要看后台 usage、raw quota、prompt_tokens、completion_tokens 和消费记录:
- 如果请求没有可用输出,且
completion_tokens=0、content 为空、stream_status=error、end_reason是client_gone/stream_error/parse_error等异常结束,LinkAI 会按异常失败请求处理,不按正常完成请求扣费 - 如果已经产生部分有效输出,或上游返回明确 usage,可能按实际 usage / 实际输出核对
- LinkAI 已增加失败无输出扣费保护,如需核查可联系客服
详细扣费判断参考 API 扣费透明指南。
用户应该怎么自查?
遇到 tool_call 内容直接显示,按以下步骤自查:
- 记录出问题时间
- 记录客户端:Claude Code / Cursor / Codex / Cherry Studio / LobeChat 等
- 记录模型名
- 确认 Base URL 是否匹配 API 模式(带
/v1还是不带) - 查看后台 usage、raw quota、completion_tokens
- 看是否有 client_gone、stream_error、empty response
- 如果没有可用输出但发生扣费,联系 LinkAI 核查
如果不确定是 Base URL、模型权限、客户端模式还是请求格式问题,可以用 AI API Doctor 辅助检查配置:https://aiapidoctor.com/
什么时候应该联系 LinkAI 核查?
以下情况建议联系客服核查:
- tool_call 内容直接显示且没有可用输出
- completion_tokens=0 但有扣费
- client_gone / stream_error 后仍有消费
- 同一请求重复扣费
- 模型名、Base URL、API Key 都确认无误但仍异常
联系客服时提供:
- 时间
- 账号或 UID
- 模型名
- 客户端
- api1 / api2
- 截图
- 后台 usage / 消费记录截图