DeepSeek返回了函数名和参数,却没有真的查询天气或订单,通常是应用还没接上执行逻辑。工具定义用于告诉模型有哪些函数可选,模型本身不执行这些自定义函数。收到调用请求后,还需要完成结果回传。
把函数定义和实际实现对应起来
在tools中写清函数名称、用途及参数结构,同时在应用里维护同名函数的白名单映射。例如get_weather接收location,后台实现负责访问天气服务。不要把模型给出的函数名直接传给动态执行器。
收到tool_calls后,解析其参数,检查必填项与允许值,再调用对应实现。相关参数配置可查看DeepSeek API教程。首次调试宜使用只读函数,暂不接入扣款、删文件等操作。
结果要带回正确的调用标识
将模型这次返回的助手消息加入历史,再追加role: tool的消息,其中tool_call_id匹配该次调用的id,content放执行结果。随后连同历史再次请求模型,才会得到基于工具结果的自然语言回答。
一次可能需要处理多个调用,不能只读取第一个后丢弃其余结果。工具失败时建议返回明确的失败信息,不能编造成功数据。
思考模式下别删掉必要消息字段
请求携带tools时,思考内容也有回传要求。保存助手消息时应保留必要的reasoning_content和tool_calls,避免只存content导致后续请求失败。从其他AI平台迁移工具时,重新核对谁负责执行。调试记录应同时保留调用标识、执行状态和回传状态,便于定位卡在哪一步。
原创文章,作者:eastbtc,如若转载,请注明出处:https://www.eastbtc.com/ai/deepseek/29503.html