
ChatDev 2.0 如何为 Agent 节点配置 Function Tooling 调用仓库内置函数【免费下载链接】ChatDevChatDev 2.0: Dev All through LLM-powered Multi-Agent Collaboration项目地址: https://gitcode.com/GitHub_Trending/ch/ChatDev在 ChatDev 2.0DevAll中如果你希望工作流里的某个 Agent 节点在对话时能够调用仓库自带的 Python 函数——比如查文件、读网页、执行代码——而不是只靠模型“凭空回答”就需要在节点配置里绑定 Function Tooling。完成后的结果是LLM 在运行中按 JSON Schema 选择工具、由执行器注入上下文并调用functions/function_calling/下的函数工具输出写回 Agent 消息流。前提是本地已按项目说明启动前后端服务后端uv run python server_main.py前端npm run devWeb UI 地址http://localhost:5173并且已按所选 Provider 准备好 API 密钥等环境变量。内置函数从哪里来Function Tooling 可调用的函数全部位于functions/function_calling/目录可用环境变量MAC_FUNCTIONS_DIR覆盖且函数必须定义在模块顶层。系统启动时utils/function_catalog.py会扫描该目录、为每个函数生成 JSON Schema并暴露给前端和 CLI函数使用类型注解声明参数docstring 首段作为描述自动截断为 600 字符。仓库预置的工具按模块分组完整清单见 function_catalog.md常用的有模块代表函数用途file.pydescribe_available_files、load_file、save_file、search_in_files在code_workspace/与附件仓库中管理文件uv_related.pyinit_python_env、install_python_packages、uv_run用 uv 管理 Python 环境并在工作区运行脚本deep_research.pysearch_save_result、report_read、report_export_pdf搜索结果管理与报告章节操作web.pyweb_search、read_webpage_content网络搜索与网页读取需环境变量SERPER_DEV_API_KEYJINA_API_KEY可选缺失时自动限速 20 RPMvideo.pyrender_manim、concat_videosManim 动画渲染与 FFmpeg 视频拼接code_executor.pyexecute_code执行 Python 代码字符串文档明确标注其权限较高应仅在可信工作流内使用weather.pyget_city_num、get_weather硬编码的演示函数用于走通 Function Calling 流程两点规则需要注意前端下拉列表把函数展示为module_name:function_name每个模块顶部还有一个module_name:All选项选择后会在解析阶段按字典序展开为该模块下的所有函数。module_name:All只用于批量引入不能同时填写description、parameters、auto_fill等覆盖字段需要自定义时展开后针对具体函数单独配置。YAML 中最终落盘的是真实函数名module_name:All只是输入辅助。在 Agent 节点配置 toolingFunction Tooling 挂载在AgentConfig.tooling上结构为type config字段定义见 entity/configs/node/tooling.pynodes: - id: Assistant type: agent config: provider: openai name: gpt-4o api_key: ${API_KEY} tooling: - type: function # 工具类型function / mcp_remote / mcp_local config: tools: # 必填至少一项name 来自 functions/function_calling/ - name: describe_available_files - name: load_file auto_load: true # 可选 timeout: 20 # 可选单次工具执行的超时时间秒tools中每个条目至少包含nameauto_fill默认为true时描述和参数 Schema 会从函数签名自动填充若设为false则需自行提供手写parameters。仓库提供了可直接运行的示例工作流 demo_function_call.yaml两个 Agent 节点节点 A 绑定get_weather与get_city_num两个演示函数节点 B 根据 A 查到的温度给出穿衣建议边为A - B。其核心片段version: 0.4.0 vars: {} graph: id: weather_graph description: Weather assistant: fetch temperature then generate clothing advice. is_majority_voting: false start: - A nodes: - id: A type: agent config: provider: openai base_url: ${BASE_URL} api_key: ${API_KEY} name: gpt-4o role: You are a weather inquiry assistant, responsible for calling tools to get the real-time temperature of a specified city. tooling: - type: function config: auto_load: true tools: - name: get_weather - name: get_city_num params: temperature: 0.3 max_tokens: 200 - id: B type: agent config: provider: openai base_url: ${BASE_URL} api_key: ${API_KEY} name: gpt-4o role: You are a lifestyle assistant. ... edges: - from: A to: B${BASE_URL}、${API_KEY}是变量占位符按vars显式定义 → 系统/Shell 环境变量 → 项目根目录.env文件的优先级解析若三处均未定义配置解析阶段会抛出ConfigError并指明出错路径。示例中的 Provider、模型名gpt-4o和参数沿用示例文件原值按你实际接入的服务替换即可。一个容易踩的坑部分文档示例把tooling写成单个 mapping但配置解析代码entity/configs/node/agent.py 中AgentConfig.from_dict要求tooling是列表非列表会直接报tooling must be a list。以示例 YAML 的列表写法为准多个工具源如 function 加 mcp_remote也依次放在这个列表里。运行工作流按文档推荐最顺的路径是 Web UI打开http://localhost:5173在左侧列表选择yaml_instance/demo_function_call.yaml在文本框输入 Task Prompt例如一个城市名触发节点 A 调用工具点击 Launch 启动执行。也可以用 CLI 执行同一工作流python run.py --path yaml_instance/demo_function_call.yaml --name test_run执行前可通过TASK_PROMPT环境变量或 CLI 提示输入任务提示HTTP 方式为POST /api/workflow/execute。验证工具是否真的被调用判断配置是否生效分两个层面配置解析阶段未运行就会报错解析时FunctionToolConfig.from_dict会逐个校验函数名常见问题在启动/加载时直接暴露错误信息带有tools[i].name这样的路径function xxx not found under function directory函数名写错或函数不在MAC_FUNCTIONS_DIR默认functions/function_calling/的模块顶层同一函数被声明多次会报function xxx is declared multiple timesfunction_catalog本身加载失败如函数语法或依赖问题时FunctionToolEntryConfig.field_specs()会在字段描述中提示 loading failed需要先修复函数。运行阶段在 Launch View 中观察节点状态变化pending → running → success/failed节点 A 应产生工具调用并输出符合 role 约定格式的“城市名: 温度”文本节点 B 随后给出穿衣建议。执行完成后点击右侧面板的 Download 可下载完整 Session 压缩包含context.json、附件、日志结合WareHouse/session/中的context.json可检查每个节点的输入输出logs/目录还有结构化 JSON 日志。常见问题与限制现象依据文档的处理方式前端/CLI 报function xxx not found检查函数名与文件是否位于MAC_FUNCTIONS_DIR默认functions/function_calling/且函数在模块顶层工具运行超时执行器会把异常文本返回给 Agent可调大timeout秒或在函数内部自行捕获并返回友好错误函数需要访问附件、工作区或触发人工反馈执行器会注入_context关键字参数包含attachment_store、python_workspace_root当前 Session 的code_workspace/、graph_directory、human_prompt等键函数声明_context: dict \| None None自行解析可参考 functions/function_calling/file.py 的FileToolContextexecute_code类高权限工具文档明确提示应仅在可信工作流内使用Function Tooling 的函数运行在后端进程内文档建议遵循最小权限原则不要在函数中执行不受控的命令。下一步如果内置函数不够用可以在functions/function_calling/下新建模块用类型注解 ParamMeta描述参数重启后端服务器后以name: my_tool或name: my_module:All引用修改FIELD_SPECS或注册表后运行python -m tools.export_design_template刷新前端枚举。需要连接外部工具生态HTTP 服务或本地 stdio 进程时则切换到mcp_remote/mcp_local两类 Tooling详见 mcp.md。【免费下载链接】ChatDevChatDev 2.0: Dev All through LLM-powered Multi-Agent Collaboration项目地址: https://gitcode.com/GitHub_Trending/ch/ChatDev创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考