OpenBMB / XAgent

An Autonomous LLM Agent for Complex Task Solving
https://blog.x-agent.net/blog/xagent/
Apache License 2.0
7.82k stars 794 forks source link

执行示例任务报错 requests.exceptions.HTTPError: 502 Server Error: Bad Gateway for url: http://localhost:32080/download_workspace #366

Open Yicheng-G opened 6 months ago

Yicheng-G commented 6 months ago

Issue Description / 问题描述

Please provide a detailed description of the error or issue you encountered. / 请详细描述您遇到的错误或问题。

运行 XAgentGen 示例任务,python run.py --task "find all the prime numbers <=100" --config-file "assets/xagentllama.yml" 报错 requests.exceptions.HTTPError: 502 Server Error: Bad Gateway for url: http://localhost:32080/download_workspace

追踪发现是执行 xagent_core.build 过程中, output = self.toolserver_interface.get_available_tools() 报错,和后面close() 时,self.toolserver_interface.download_all_files() 报错。这两个命令都是请求 ToolServerManager 并被转发给 ToolServerNode 后报错 详细日志见后文

Steps to Reproduce / 复现步骤

Please provide the specific steps to reproduce the error. / 请提供复现错误的具体步骤。

Expected Behavior / 预期行为

Describe the behavior you expected to see. / 请描述您期望的正确行为。

Environment / 环境信息

Error Screenshots or Logs / 错误截图或日志

If possible, please provide relevant screenshots or logs of the error. / 如果可能,请提供相关的错误截图或日志文件。

Connected to pydev debugger (build 231.8109.197)
XAgentServer is running on cmd mode  
XAgentServer log:  XAgentServer/localstorage/interact_records/2023-12-29/66adedb552a34ee4b2e334e05e340187
  init interaction: 66adedb552a34ee4b2e334e05e340187
  Register logger into interaction of 66adedb552a34ee4b2e334e05e340187, done!
  Register db into interaction of 66adedb552a34ee4b2e334e05e340187, done!
  Register logger into XAgentServer of 66adedb552a34ee4b2e334e05e340187, done!
  Start a new thread to run interaction of 66adedb552a34ee4b2e334e05e340187, done!
---config file---
assets/xagentllama.yml
---args---
{'task': 'find all the prime numbers <=100', 'mode': 'auto', 'quiet': False, 'enable_ask_human_for_help': False, 'config_file': 'assets/xagentllama.yml'}
  server is running, the start query is find all the prime numbers <=100
-=-=-=-=-=-=-=Recorder Start-=-=-=-=-=-=-=
  Current: None Node: query 0
-=-=-=-=-=-=-=Data -=-=-=-=-=-=-=
  {
    "task": "find all the prime numbers <=100",
    "role_name": "Assistant",
    "plan": []
}
-=-=-=-=-=-=-=Recorder End-=-=-=-=-=-=-=  
-=-=-=-=-=-=-=Recorder Start-=-=-=-=-=-=-=
  Current: None Node: config 0
-=-=-=-=-=-=-=Data -=-=-=-=-=-=-=
  {
    "api_keys": {
        "xagentllm": [
            {
                "temperature": 0.2,
                "top_p": 1.0,
                "repetition_penalty": 1.2,
                "frequency_penalty": 0.5,
                "max_tokens": 16384,
                "api_base": "http://127.0.0.1:32520/chat/completions"
            }
        ]
    },
    "default_request_type": "xagent",
    "default_completion_kwargs": {
        "model": "xagentllm",
        "temperature": 0.2,
        "top_p": 1.0,
        "request_timeout": 300,
        "repetition_penalty": 1.2,
        "frequency_penalty": 0.5,
        "max_tokens": 16384
    },
    "enable_summary": true,
    "summary": {
        "single_action_max_length": 4096,
        "max_return_length": 8192
    },
    "use_selfhost_toolserver": true,
    "selfhost_toolserver_url": "http://localhost:32080",
    "max_retry_times": 5,
    "max_subtask_chain_length": 15,
    "max_plan_refine_chain_length": 3,
    "max_plan_tree_depth": 3,
    "max_plan_tree_width": 5,
    "max_plan_length": 4096,
    "rapidapi_retrieve_tool_count": 0,
    "enable_ask_human_for_help": false,
    "tool_blacklist": [
        "FileSystemEnv_print_filesys_struture"
    ],
    "record_dir": null,
    "experiment": {
        "redo_action": false
    },
    "task": "find all the prime numbers <=100",
    "mode": "auto",
    "quiet": false,
    "config_file": "assets/xagentllama.yml"
}
-=-=-=-=-=-=-=Recorder End-=-=-=-=-=-=-=  
  register tool server interface
  lazy init tool server interface
ToolServer connected in  http://localhost:32080
  register function handler
  register working memory function
  register agent dispatcher
Constructing an AgentDispatcher:  XAgentDispatcher
  build all components, done!

Traceback (most recent call last):
  File "/mnt/nas7/users/guoyicheng/packages/conda/miniconda3/envs/chatglm/lib/python3.10/site-packages/urllib3/connectionpool.py", line 537, in _make_request
    response = conn.getresponse()
  File "/mnt/nas7/users/guoyicheng/packages/conda/miniconda3/envs/chatglm/lib/python3.10/site-packages/urllib3/connection.py", line 461, in getresponse
    httplib_response = super().getresponse()
  File "/mnt/nas7/users/guoyicheng/packages/conda/miniconda3/envs/chatglm/lib/python3.10/http/client.py", line 1375, in getresponse
    response.begin()
  File "/mnt/nas7/users/guoyicheng/packages/conda/miniconda3/envs/chatglm/lib/python3.10/http/client.py", line 318, in begin
    version, status, reason = self._read_status()
  File "/mnt/nas7/users/guoyicheng/packages/conda/miniconda3/envs/chatglm/lib/python3.10/http/client.py", line 279, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/mnt/nas7/users/guoyicheng/packages/conda/miniconda3/envs/chatglm/lib/python3.10/socket.py", line 705, in readinto
    return self._sock.recv_into(b)
TimeoutError: timed out

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/mnt/nas7/users/guoyicheng/packages/conda/miniconda3/envs/chatglm/lib/python3.10/site-packages/requests/adapters.py", line 486, in send
    resp = conn.urlopen(
  File "/mnt/nas7/users/guoyicheng/packages/conda/miniconda3/envs/chatglm/lib/python3.10/site-packages/urllib3/connectionpool.py", line 845, in urlopen
    retries = retries.increment(
  File "/mnt/nas7/users/guoyicheng/packages/conda/miniconda3/envs/chatglm/lib/python3.10/site-packages/urllib3/util/retry.py", line 470, in increment
    raise reraise(type(error), error, _stacktrace)
  File "/mnt/nas7/users/guoyicheng/packages/conda/miniconda3/envs/chatglm/lib/python3.10/site-packages/urllib3/util/util.py", line 39, in reraise
    raise value
  File "/mnt/nas7/users/guoyicheng/packages/conda/miniconda3/envs/chatglm/lib/python3.10/site-packages/urllib3/connectionpool.py", line 791, in urlopen
    response = self._make_request(
  File "/mnt/nas7/users/guoyicheng/packages/conda/miniconda3/envs/chatglm/lib/python3.10/site-packages/urllib3/connectionpool.py", line 539, in _make_request
    self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
  File "/mnt/nas7/users/guoyicheng/packages/conda/miniconda3/envs/chatglm/lib/python3.10/site-packages/urllib3/connectionpool.py", line 371, in _raise_timeout
    raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='localhost', port=32080): Read timed out. (read timeout=10)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/mnt/nas3/users/guoyicheng/202312_Agent/XAgent/XAgent/toolserver_interface.py", line 192, in get_available_tools
    response = requests.post(
  File "/mnt/nas7/users/guoyicheng/packages/conda/miniconda3/envs/chatglm/lib/python3.10/site-packages/requests/api.py", line 115, in post
    return request("post", url, data=data, json=json, **kwargs)
  File "/mnt/nas7/users/guoyicheng/packages/conda/miniconda3/envs/chatglm/lib/python3.10/site-packages/requests/api.py", line 59, in request
    return session.request(method=method, url=url, **kwargs)
  File "/mnt/nas7/users/guoyicheng/packages/conda/miniconda3/envs/chatglm/lib/python3.10/site-packages/requests/sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
  File "/mnt/nas7/users/guoyicheng/packages/conda/miniconda3/envs/chatglm/lib/python3.10/site-packages/requests/sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
  File "/mnt/nas7/users/guoyicheng/packages/conda/miniconda3/envs/chatglm/lib/python3.10/site-packages/requests/adapters.py", line 532, in send
    raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='localhost', port=32080): Read timed out. (read timeout=10)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/mnt/nas3/users/guoyicheng/202312_Agent/XAgent/XAgentServer/server.py", line 53, in interact
    xagent_core.build(xagent_param, interaction=interaction)
  File "/mnt/nas3/users/guoyicheng/202312_Agent/XAgent/XAgent/core.py", line 209, in build
    subtask_functions, self.tool_functions_description_list = self.function_handler.get_functions(
  File "/mnt/nas3/users/guoyicheng/202312_Agent/XAgent/XAgent/function_handler.py", line 128, in get_functions
    output = self.toolserver_interface.get_available_tools()
  File "/mnt/nas3/users/guoyicheng/202312_Agent/XAgent/XAgent/toolserver_interface.py", line 206, in get_available_tools
    raise Exception(f"Error when fetching available tools: {e}")
Exception: python-BaseException
Error when fetching available tools: HTTPConnectionPool(host='localhost', port=32080): Read timed out. (read timeout=10)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/mnt/nas3/users/guoyicheng/202312_Agent/XAgent/XAgentServer/server.py", line 106, in interact
    raise XAgentRunningError(str(e)) from e
XAgentServer.exts.exception_ext.XAgentRunningError: Error when fetching available tools: HTTPConnectionPool(host='localhost', port=32080): Read timed out. (read timeout=10)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/mnt/nas3/users/guoyicheng/202312_Agent/XAgent/command.py", line 273, in task_handler
    server.interact(interaction=interaction)
  File "/mnt/nas3/users/guoyicheng/202312_Agent/XAgent/XAgentServer/server.py", line 109, in interact
    xagent_core.close()
  File "/mnt/nas3/users/guoyicheng/202312_Agent/XAgent/XAgent/core.py", line 223, in close
    self.toolserver_interface.download_all_files()
  File "/mnt/nas3/users/guoyicheng/202312_Agent/XAgent/XAgent/toolserver_interface.py", line 166, in download_all_files
    response.raise_for_status()
  File "/mnt/nas7/users/guoyicheng/packages/conda/miniconda3/envs/chatglm/lib/python3.10/site-packages/requests/models.py", line 1021, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 502 Server Error: Bad Gateway for url: http://localhost:32080/download_workspace

同时 服务端报错如下

xagent-ToolServerManager-1  | [2023-12-29 08:48:51 +0000] [7] [INFO] Node created: cc1e4eeb65ce2f590c98765f4c40b66d7ee6e56250168089d11a2f6512cb9f4d
xagent-ToolServerManager-1  | [2023-12-29 08:48:54 +0000] [7] [INFO] Node cc1e4eeb65ce health updated: starting -> healthy
xagent-ToolServerManager-1  | [2023-12-29 08:48:54 +0000] [8] [INFO] Node cc1e4eeb65ce health updated: starting -> healthy
xagent-ToolServerManager-1  | [2023-12-29 08:52:40 +0000] [7] [INFO] Request to node: http://192.168.64.10:31942/get_available_tools
xagent-ToolServerManager-1  | [2023-12-29 08:53:13 +0000] [7] [INFO] Request to node: http://192.168.64.10:31942/download_workspace
xagent-ToolServerManager-1  | Traceback (most recent call last):
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpcore/_exceptions.py", line 10, in map_exceptions
xagent-ToolServerManager-1  |     yield
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpcore/_backends/anyio.py", line 34, in read
xagent-ToolServerManager-1  |     return await self._stream.receive(max_bytes=max_bytes)
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 1132, in receive
xagent-ToolServerManager-1  |     raise self._protocol.exception from None
xagent-ToolServerManager-1  | anyio.BrokenResourceError
xagent-ToolServerManager-1  |
xagent-ToolServerManager-1  | The above exception was the direct cause of the following exception:
xagent-ToolServerManager-1  |
xagent-ToolServerManager-1  | Traceback (most recent call last):
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpx/_transports/default.py", line 67, in map_httpcore_exceptions
xagent-ToolServerManager-1  |     yield
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpx/_transports/default.py", line 252, in __aiter__
xagent-ToolServerManager-1  |     async for part in self._httpcore_stream:
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpcore/_async/connection_pool.py", line 361, in __aiter__
xagent-ToolServerManager-1  |     async for part in self._stream:
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpcore/_async/http11.py", line 337, in __aiter__
xagent-ToolServerManager-1  |     raise exc
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpcore/_async/http11.py", line 329, in __aiter__
xagent-ToolServerManager-1  |     async for chunk in self._connection._receive_response_body(**kwargs):
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpcore/_async/http11.py", line 198, in _receive_response_body
xagent-ToolServerManager-1  |     event = await self._receive_event(timeout=timeout)
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpcore/_async/http11.py", line 212, in _receive_event
xagent-ToolServerManager-1  |     data = await self._network_stream.read(
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpcore/_backends/anyio.py", line 31, in read
xagent-ToolServerManager-1  |     with map_exceptions(exc_map):
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/contextlib.py", line 153, in __exit__
xagent-ToolServerManager-1  |     self.gen.throw(typ, value, traceback)
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions
xagent-ToolServerManager-1  |     raise to_exc(exc) from exc
xagent-ToolServerManager-1  | httpcore.ReadError
xagent-ToolServerManager-1  |
xagent-ToolServerManager-1  | The above exception was the direct cause of the following exception:
xagent-ToolServerManager-1  |
xagent-ToolServerManager-1  | Traceback (most recent call last):
xagent-ToolServerManager-1  |   File "/app/main.py", line 263, in route_to_node
xagent-ToolServerManager-1  |     response = await client.request(method,url,headers=headers,data=body)
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpx/_client.py", line 1559, in request
xagent-ToolServerManager-1  |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpx/_client.py", line 1660, in send
xagent-ToolServerManager-1  |     raise exc
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpx/_client.py", line 1654, in send
xagent-ToolServerManager-1  |     await response.aread()
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpx/_models.py", line 915, in aread
xagent-ToolServerManager-1  |     self._content = b"".join([part async for part in self.aiter_bytes()])
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpx/_models.py", line 915, in <listcomp>
xagent-ToolServerManager-1  |     self._content = b"".join([part async for part in self.aiter_bytes()])
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpx/_models.py", line 933, in aiter_bytes
xagent-ToolServerManager-1  |     async for raw_bytes in self.aiter_raw():
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpx/_models.py", line 991, in aiter_raw
xagent-ToolServerManager-1  |     async for raw_stream_bytes in self.stream:
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpx/_client.py", line 147, in __aiter__
xagent-ToolServerManager-1  |     async for chunk in self._stream:
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpx/_transports/default.py", line 251, in __aiter__
xagent-ToolServerManager-1  |     with map_httpcore_exceptions():
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/contextlib.py", line 153, in __exit__
xagent-ToolServerManager-1  |     self.gen.throw(typ, value, traceback)
xagent-ToolServerManager-1  |   File "/usr/local/lib/python3.10/site-packages/httpx/_transports/default.py", line 84, in map_httpcore_exceptions
xagent-ToolServerManager-1  |     raise mapped_exc(message) from exc
xagent-ToolServerManager-1  | httpx.ReadError

Additional Notes / 其他备注

If you have any additional information or notes, please add them here. / 如果有其他补充信息,请在此处添加。