LangChain SQLDatabase Agent多表查询单引号异常报错求助
LangChain SQLDatabase Agent多表查询时多余单引号导致表不存在错误
这个问题已有不少开发者碰到过,核心原因是LangChain的SQLDatabase Agent在处理多表名参数时,错误地将包裹整个表名列表的单引号拆分到了每个表名的两端,导致数据库无法识别带单引号的表名。
从执行日志能清晰看到问题:
Thought: The table names are correct. I should query the schema of these tables. Action: schema_sql_db Action Input: 'ods_crs_reservation, ods_crs_reservation_room_history' Observation: Error: table_names {"ods_crs_reservation_room_history'", "'ods_crs_reservation"} not found in database Thought: I must have made a typo. I should double check the table names. Action: list_tables_sql_db Action Input: ""
Agent把原本的单引号包裹的多表名列表,拆分成了分别带前后单引号的两个表名,直接触发了表不存在的报错,而单表查询时因为只有一个表名,不会出现这种拆分错误。
常用的解决办法:
- 自定义
schema_sql_db工具的输入解析逻辑,自动去除每个表名两端的多余单引号 - 在prompt中明确要求Agent传递多表名时不要添加任何单引号,直接用逗号分隔多个表名
- 升级到LangChain的较新版本,部分后续版本已经修复了这个多表参数解析的bug
内容的提问来源于stack exchange,提问作者Adam Xia
相关产品推荐
相关产品推荐

