
一、问题现象二、踩坑排查过程刚开始看到提示not found in function signature第一反应函数注释里的参数名和代码定义不一致反复核对参数拼写没有发现任何名称错误。 不断测试后终于定位根因LangGraph 0.12.0.dev9 大幅加强了 Google 风格 Docstring 解析规则对换行、空行、缩进、分隔符做强校验格式不遵守Docstring会出现解析器就会错乱误报参数签名不匹配在我的代码中定义的工具函数注释采用了google风格因为在工具描述和Args之间缺少空行加载Agent时出现了上述报错。LangGraph API 在加载自定义 Agent 工具时内置解析器自动读取函数 Google Docstring 用于识别工具描述、入参、返回值。 当注释存在下面任意一种格式问题就会抛出Arg Returns in docstring not found in function signature函数简短描述后缺少空行直接书写Args:Args:/Returns:/Raises:各个区块之间没有空行分隔参数说明缩进不是 4 个空格混用 2 空格缩进参数名冒号后面缺少空格arg:xxx→ 正确arg: xxx注释内存在多余换行、杂乱空格破坏解析文本结构重点提醒旧版 LangGraph 对注释格式容忍度很高升级到 0.12.x 开发版本后该问题集中爆发例如下面的错误示范就会报错Tool demo_tool(input_text: str, timeout: int) - str: 工具核心功能简短一句话描述 Args: input_text:用户传入请求文本 Returns: str: 工具执行完成后的响应字符串 原因是首行描述下方缺少空行Args 与 Returns 区块之间没有用空行进行分隔参数只缩进2 空格不是4个input_text:冒号后缺少空格正确的示例如下tool(name) def demo_tool(input_text: str, timeout: int) - str: 工具核心功能简短一句话描述。 Args: input_text: 用户传入请求文本 timeout: 接口超时时间单位秒 Returns: str: 工具执行完成后的响应字符串 Raises: ValueError: 输入文本为空时抛出异常 google风格的注释强制约束规则如下第一行单行简要描述函数能力概述结束空一行再写Args:Args、Returns、Raises 区块互相空一行隔开参数说明统一 4 空格缩进参数名:冒号后必须添加空格注释内所有参数必须与函数签名完全对应清理废弃参数。三、预防方案避免重复踩坑在项目中为了避免出现上述问题可以在增加类似的约束代码评审增加检查项工具都使用统一标准 Google Docstring引入 Ruff 静态检测强制校验注释规范# pyproject.toml ruff配置示例 [tool.ruff.lint] select [D] [tool.ruff.lint.pydocstyle] convention googleCI 流水线增加文档注释校验不合规代码禁止合并团队共享标准 Docstring 代码片段以上我在碰到这个报错解决思路和总结大家还开发过程中还遇到过哪些 Docstring 解析相关的坑欢迎在评论区交流