ADK Web中如何展示多层嵌套AgentTool的调用过程以方便调试?
问题描述
在ADK中搭建了一套多Agent框架用于查询BigQuery数据,因数据仓库结构复杂,设计了多层嵌套Agent:
- 编排器(orchestrator)Agent调用作为AgentTool的知识图谱构建器(knowledge graph builder)
- 知识图谱构建器又调用作为其工具的数据浏览器(data browser),执行记录扫描、distinct、max、min、avg等操作来熟悉表内数据,最终返回数据表列表及使用说明
当前问题:编排器调用知识图谱构建器时,后者会正常调用数据浏览器,但ADK Web界面仅显示对知识图谱构建器的调用记录,无法看到数据浏览器的调用过程,仅显示忙碌状态后直接返回知识图谱构建器的响应。
需求:如何让数据浏览器的调用过程也在UI中显示,以便便捷调试Agent?
解决方案
以下是几种可行的实现方法:
启用嵌套工具调用的全量日志追踪
在ADK的Agent配置里,找到tool_call_logging参数,将其设置为full模式,同时开启nested_call_visibility。这样所有层级的工具调用(包括数据浏览器的每一步操作)都会被记录并同步到UI。示例配置:agent_config = { "tool_call_logging": "full", "nested_call_visibility": True }修改AgentTool的返回配置
调整知识图谱构建器作为AgentTool的定义,开启include_subtool_calls选项,让它把数据浏览器的调用详情包含在返回结果中,而不是只返回最终汇总信息。示例代码:KnowledgeGraphBuilderTool = AgentTool( name="knowledge_graph_builder", description="通过调用数据浏览器构建知识图谱", include_subtool_calls=True # 启用子工具调用详情返回 )调整ADK UI的显示设置
在ADK Web界面的设置面板中,找到「工具调用可视化」选项,将显示层级改为「所有层级」,UI会自动展开所有嵌套的工具调用流程,展示数据浏览器的每一步操作。在数据浏览器工具中添加自定义日志
在数据浏览器的实现代码里,手动通过ADK的日志接口上报每一步操作的详情,确保这些信息能被UI捕获展示。示例代码:from adk.logging import log_tool_call def data_browser_operation(operation_type, table_name): # 执行BigQuery操作 operation_result = run_bigquery_query(operation_type, table_name) # 上报工具调用日志 log_tool_call( tool_name="data_browser", operation=operation_type, target_table=table_name, operation_result=str(operation_result) ) return operation_result
内容的提问来源于stack exchange,提问作者Boris Mulder
相关产品推荐
相关产品推荐

