Error: 调用工具的时候出现中断不继续执行的问题!
当我调用mcp服务(数据库查询的时候),发现两个用户对其数据库进行提问操作,发现其中有一个出现中断,最开始以为是因为日志输出的过多,影响并发调用,但是注释日志输出后,发现还是存在问题,希望作者解决
这是在调用mcp的数据库情况下,并不是用作者你的那个最新发布的数据库功能
@wxw-123 ,你好,请贴出报错日志方便定位问题。
使用 make log 打印报错信息。
Personal
Containers api-dev
09-17 01:01:01 INFO src.agents.common.base:66: content='' additional_kwargs={'tool_calls': [{'index': 0, 'id': None, 'function': {'arguments': 'SELECT', 'name': None}, 'type': None}]} response_metadata={} id='run--2f68bf26-7f58-44d3-8e33-d99029e77753' invalid_tool_calls=[{'name': None, 'args': 'SELECT', 'id': None, 'error': None, 'type': 'invalid_tool_call'}] usage_metadata={'input_tokens': 6425, 'output_tokens': 41, 'total_tokens': 6466, 'input_token_details': {}, 'output_token_details': {}} tool_call_chunks=[{'name': None, 'args': 'SELECT', 'id': None, 'index': 0, 'type': 'tool_call_chunk'}]
09-17 01:01:01 INFO src.agents.common.base:66: content='' additional_kwargs={'tool_calls': [{'index': 0, 'id': None, 'function': {'arguments': ' *', 'name': None}, 'type': None}]} response_metadata={} id='run--2f68bf26-7f58-44d3-8e33-d99029e77753' invalid_tool_calls=[{'name': None, 'args': ' *', 'id': None, 'error': None, 'type': 'invalid_tool_call'}] usage_metadata={'input_tokens': 6425, 'output_tokens': 42, 'total_tokens': 6467, 'input_token_details': {}, 'output_token_details': {}} tool_call_chunks=[{'name': None, 'args': ' *', 'id': None, 'index': 0, 'type': 'tool_call_chunk'}]
09-17 01:01:02 INFO src.agents.common.base:66: content='' additional_kwargs={'tool_calls': [{'index': 0, 'id': None, 'function': {'arguments': ' FROM', 'name': None}, 'type': None}]} response_metadata={} id='run--2f68bf26-7f58-44d3-8e33-d99029e77753' invalid_tool_calls=[{'name': None, 'args': ' FROM', 'id': None, 'error': None, 'type': 'invalid_tool_call'}] usage_metadata={'input_tokens': 6425, 'output_tokens': 43, 'total_tokens': 6468, 'input_token_details': {}, 'output_token_details': {}} tool_call_chunks=[{'name': None, 'args': ' FROM', 'id': None, 'index': 0, 'type': 'tool_call_chunk'}]
09-17 01:01:02 INFO src.agents.common.base:66: content='' additional_kwargs={'tool_calls': [{'index': 0, 'id': None, 'function': {'arguments': ' weather', 'name': None}, 'type': None}]} response_metadata={} id='run--2f68bf26-7f58-44d3-8e33-d99029e77753' invalid_tool_calls=[{'name': None, 'args': ' weather', 'id': None, 'error': None, 'type': 'invalid_tool_call'}] usage_metadata={'input_tokens': 6425, 'output_tokens': 44, 'total_tokens': 6469, 'input_token_details': {}, 'output_token_details': {}} tool_call_chunks=[{'name': None, 'args': ' weather', 'id': None, 'index': 0, 'type': 'tool_call_chunk'}]
09-17 01:01:02 INFO src.agents.common.base:66: content='' additional_kwargs={'tool_calls': [{'index': 0, 'id': None, 'function': {'arguments': '_info', 'name': None}, 'type': None}]} response_metadata={} id='run--2f68bf26-7f58-44d3-8e33-d99029e77753' invalid_tool_calls=[{'name': None, 'args': '_info', 'id': None, 'error': None, 'type': 'invalid_tool_call'}] usage_metadata={'input_tokens': 6425, 'output_tokens': 45, 'total_tokens': 6470, 'input_token_details': {}, 'output_token_details': {}} tool_call_chunks=[{'name': None, 'args': '_info', 'id': None, 'index': 0, 'type': 'tool_call_chunk'}]
09-17 01:01:02 INFO src.agents.common.base:66: content='' additional_kwargs={'tool_calls': [{'index': 0, 'id': None, 'function': {'arguments': ' LIM', 'name': None}, 'type': None}]} response_metadata={} id='run--2f68bf26-7f58-44d3-8e33-d99029e77753' invalid_tool_calls=[{'name': None, 'args': ' LIM', 'id': None, 'error': None, 'type': 'invalid_tool_call'}] usage_metadata={'input_tokens': 6425, 'output_tokens': 46, 'total_tokens': 6471, 'input_token_details': {}, 'output_token_details': {}} tool_call_chunks=[{'name': None, 'args': ' LIM', 'id': None, 'index': 0, 'type': 'tool_call_chunk'}]
09-17 01:01:02 INFO src.agents.common.base:66: content='' additional_kwargs={'tool_calls': [{'index': 0, 'id': None, 'function': {'arguments': 'IT', 'name': None}, 'type': None}]} response_metadata={} id='run--2f68bf26-7f58-44d3-8e33-d99029e77753' invalid_tool_calls=[{'name': None, 'args': 'IT', 'id': None, 'error': None, 'type': 'invalid_tool_call'}] usage_metadata={'input_tokens': 6425, 'output_tokens': 47, 'total_tokens': 6472, 'input_token_details': {}, 'output_token_details': {}} tool_call_chunks=[{'name': None, 'args': 'IT', 'id': None, 'index': 0, 'type': 'tool_call_chunk'}]
09-17 01:01:02 INFO src.agents.common.base:66: content='' additional_kwargs={'tool_calls': [{'index': 0, 'id': None, 'function': {'arguments': ' ', 'name': None}, 'type': None}]} response_metadata={} id='run--2f68bf26-7f58-44d3-8e33-d99029e77753' invalid_tool_calls=[{'name': None, 'args': ' ', 'id': None, 'error': None, 'type': 'invalid_tool_call'}] usage_metadata={'input_tokens': 6425, 'output_tokens': 48, 'total_tokens': 6473, 'input_token_details': {}, 'output_token_details': {}} tool_call_chunks=[{'name': None, 'args': ' ', 'id': None, 'index': 0, 'type': 'tool_call_chunk'}]
09-17 01:01:02 INFO src.agents.common.base:66: content='' additional_kwargs={'tool_calls': [{'index': 0, 'id': None, 'function': {'arguments': '5', 'name': None}, 'type': None}]} response_metadata={} id='run--2f68bf26-7f58-44d3-8e33-d99029e77753' invalid_tool_calls=[{'name': None, 'args': '5', 'id': None, 'error': None, 'type': 'invalid_tool_call'}] usage_metadata={'input_tokens': 6425, 'output_tokens': 49, 'total_tokens': 6474, 'input_token_details': {}, 'output_token_details': {}} tool_call_chunks=[{'name': None, 'args': '5', 'id': None, 'index': 0, 'type': 'tool_call_chunk'}]
09-17 01:01:02 INFO src.agents.common.base:66: content='' additional_kwargs={'tool_calls': [{'index': 0, 'id': None, 'function': {'arguments': '\\', 'name': None}, 'type': None}]} response_metadata={} id='run--2f68bf26-7f58-44d3-8e33-d99029e77753' invalid_tool_calls=[{'name': None, 'args': '\\', 'id': None, 'error': None, 'type': 'invalid_tool_call'}] usage_metadata={'input_tokens': 6425, 'output_tokens': 50, 'total_tokens': 6475, 'input_token_details': {}, 'output_token_details': {}} tool_call_chunks=[{'name': None, 'args': '\\', 'id': None, 'index': 0, 'type': 'tool_call_chunk'}]
09-17 01:01:02 INFO src.agents.common.base:66: content='' additional_kwargs={'tool_calls': [{'index': 0, 'id': None, 'function': {'arguments': '\"', 'name': None}, 'type': None}]} response_metadata={} id='run--2f68bf26-7f58-44d3-8e33-d99029e77753' invalid_tool_calls=[{'name': None, 'args': '\"', 'id': None, 'error': None, 'type': 'invalid_tool_call'}] usage_metadata={'input_tokens': 6425, 'output_tokens': 51, 'total_tokens': 6476, 'input_token_details': {}, 'output_token_details': {}} tool_call_chunks=[{'name': None, 'args': '\"', 'id': None, 'index': 0, 'type': 'tool_call_chunk'}]
09-17 01:01:03 INFO src.agents.common.base:66: content='' additional_kwargs={'tool_calls': [{'index': 0, 'id': None, 'function': {'arguments': '}\', 'name': None}, 'type': None}]} response_metadata={} id='run--2f68bf26-7f58-44d3-8e33-d99029e77753' invalid_tool_calls=[{'name': None, 'args': '}\', 'id': None, 'error': None, 'type': 'invalid_tool_call'}] usage_metadata={'input_tokens': 6425, 'output_tokens': 52, 'total_tokens': 6477, 'input_token_details': {}, 'output_token_details': {}} tool_call_chunks=[{'name': None, 'args': '}\', 'id': None, 'index': 0, 'type': 'tool_call_chunk'}]
09-17 01:01:03 INFO src.agents.common.base:66: content='' additional_kwargs={'tool_calls': [{'index': 0, 'id': None, 'function': {'arguments': '""', 'name': None}, 'type': None}]} response_metadata={} id='run--2f68bf26-7f58-44d3-8e33-d99029e77753' invalid_tool_calls=[{'name': None, 'args': '""', 'id': None, 'error': None, 'type': 'invalid_tool_call'}] usage_metadata={'input_tokens': 6425, 'output_tokens': 53, 'total_tokens': 6478, 'input_token_details': {}, 'output_token_details': {}} tool_call_chunks=[{'name': None, 'args': '""', 'id': None, 'index': 0, 'type': 'tool_call_chunk'}]
09-17 01:01:03 INFO src.agents.common.base:66: content='' additional_kwargs={} response_metadata={'finish_reason': 'tool_calls', 'model_name': 'deepseek-ai/DeepSeek-V3.1'} id='run--2f68bf26-7f58-44d3-8e33-d99029e77753' usage_metadata={'input_tokens': 6425, 'output_tokens': 53, 'total_tokens': 6478, 'input_token_details': {}, 'output_token_details': {}}
09-17 01:01:04 INFO: 172.18.0.7:34316 - "GET /api/chat/agent/ChatbotAgent/history?thread_id=fd236128-9630-43cc-aad5-454f153e4dfa HTTP/1.1" 200
09-17 01:01:06 INFO: 127.0.0.1:52774 - "GET /api/system/health HTTP/1.1" 200
我在调用工具的时候出现中断 这是日志:
问题分析
工具调用被分割:AI 试图调用一个工具(可能是 SQL 查询工具),但工具调用被分割成了多个小块:
SELECT
*
FROM
weather
_info
LIM
IT
5
等等...
最终形成的无效调用:这些片段组合起来应该是 SELECT * FROM weather_info LIMIT 5,但由于被分割调用,系统无法识别为一个有效的工具调用。
根本原因:这可能是由于:
工具调用的格式不正确
模型输出格式与工具期望的格式不匹配
工具调用解析器配置问题
最终是这种原因 请问作者应该怎么解决呢? 是大模型本身的原因吗 还是这个框架的原因 我看了很多智能体的工具调用 像这种工具代码 应该都是包装到一个响应中 而不是也像文字那样流式输出
错误的时候输出:
正常调用的输出:
text2SQL 对于模型本身的能力要求还是挺高的,但是 v3.1 不应该会出现这个问题。当然保险起见,还是建议使用其他模型测试一下,排查一下原因。
text2SQL 对于模型本身的能力要求还是挺高的,但是 v3.1 不应该会出现这个问题。当然保险起见,还是建议使用其他模型测试一下,排查一下原因。
你的意思是模型本身的原因吗?
text2SQL 对于模型本身的能力要求还是挺高的,但是 v3.1 不应该会出现这个问题。当然保险起见,还是建议使用其他模型测试一下,排查一下原因。
你的意思是模型本身的原因吗?
我换了DeepSeek R1 也是这样