Open Flamx123 opened 4 days ago
在添加 qwen 的 API KEY 后 sample_standard_app/app/examples/law_chat_bot.py 无法跑通,报错如下:
在配置文件 sample_standard_app/app/core/agent/rag_agent_case/law_rag_agent.yaml 中显示,law_chat_bot.py 使用的 agent 为 law_rag_agent,其调用的模型为 qwen_llm
info: name: 'law_rag_agent' description: '一个法律顾问,可以根据给出的事件,以及提供的背景知识做出客观的司法判断。' profile: introduction: 你是一位精通信息分析的ai法律顾问。 target: 你的目标是根据给出的事件,以及提供的背景知识做出客观的司法判断。 instruction: | 你需要遵守的规则是: 1. 必须使用中文结合背景信息做出判决,没有在背景知识中的条例不允许引用。 2. 结构化答案生成,必要时通过空行提升阅读体验。 3. 多考虑背景知识和场景的关联性。 4. 多使用“根据民法典第XX条”“根据刑法第XX条”这种句式开头,但要求事件内容确实和对应条目相关,否则不要提及。 5. 如果背景信息和内容无关则不要引用,引用条例时不要再强调“根据背景信息”这一点。 背景信息是: {background} 事件是: {input} llm_model: name: 'qwen_llm' model_name: 'qwen-max' plan: planner: name: 'rag_planner' action: knowledge: - 'law_knowledge' metadata: type: 'AGENT' module: 'sample_standard_app.app.core.agent.rag_agent_case.law_rag_agent' class: 'LawRagAgent'
对比 demo_rag_agent 的配置文件sample_standard_app/app/core/agent/rag_agent_case/demo_rag_agent.yaml,law_rag_agent 中增加了 law_knowledge(sample_standard_app/app/core/agent/rag_agent_case/law_rag_agent.yaml):
name: "law_knowledge" description: "中国民法与刑法相关的知识库" stores: - "civil_law_chroma_store" - "criminal_law_chroma_store" - "civil_law_sqlite_store" - "criminal_law_sqlite_store" query_paraphrasers: - "custom_query_keyword_extractor" insert_processors: - "recursive_character_text_splitter" rag_router: "nlu_rag_router" post_processors: - "dashscope_reranker" readers: pdf: "default_pdf_reader" metadata: type: 'KNOWLEDGE' module: 'sample_standard_app.app.core.knowledge.law_knowledge' class: 'LawKnowledge'
其中的 nlu_rag_router (sample_standard_app/app/core/rag_router/nlu_rag_router.yaml)也调用了 llm,且默认为 gpt:
name: 'nlu_rag_router' description: 'base rag router map query to all store' store_amount: 2 llm: name: demo_llm model_name: gpt-4o metadata: type: 'RAG_ROUTER' module: 'agentuniverse.agent.action.knowledge.rag_router.nlu_rag_router' class: 'NluRagRouter'
将 demo_llm 修改为 qwen_llm 后,该 Bug 解决。
Bug1 解决后再次运行 law_chat_bot.py 虽有输出,但仍有报错,且输出的 retrieved background 为空:
定位报错信息的 agentuniverse/agent/action/knowledge/knowledge.py 的 190 附近,原因是 futures 的返回结果为空,此处应该是在知识库 civil_law_chroma_store 和 civil_law_sqlite_store 中进行检索
单独运行 StoreManager().get_instance_obj().query(),出现报错:
报错是因为 agentuniverse/agent/action/knowledge/store/chroma_store.py 中 self.collection 为 None,根本原因是 self.collection 在 _new_client 中被赋值,但 _new_client 未被调用:
在 self.collection 为 None 时增加 _new_client 的调用后该 Bug 消失:
Bug2.1 解决后再次运行 law_chat_bot.py 仍有报错:
报错是因为 agentuniverse/agent/action/knowledge/store/sqlite_store.py 中 self.conn 为 None,根本原因同样是 self.conn 在 _new_client 中被赋值,但 _new_client 未被调用:
同样在 self.conn 为 None 时增加 _new_client 的调用:
解决完 Bug2.1 和 Bug2.2 后 futures 的返回结果正常,最终输出结果的 retrieved background 不为空:
问题定位与解决
Bug1
在添加 qwen 的 API KEY 后 sample_standard_app/app/examples/law_chat_bot.py 无法跑通,报错如下:
在配置文件 sample_standard_app/app/core/agent/rag_agent_case/law_rag_agent.yaml 中显示,law_chat_bot.py 使用的 agent 为 law_rag_agent,其调用的模型为 qwen_llm
对比 demo_rag_agent 的配置文件sample_standard_app/app/core/agent/rag_agent_case/demo_rag_agent.yaml,law_rag_agent 中增加了 law_knowledge(sample_standard_app/app/core/agent/rag_agent_case/law_rag_agent.yaml):
其中的 nlu_rag_router (sample_standard_app/app/core/rag_router/nlu_rag_router.yaml)也调用了 llm,且默认为 gpt:
将 demo_llm 修改为 qwen_llm 后,该 Bug 解决。
Bug2
Bug1 解决后再次运行 law_chat_bot.py 虽有输出,但仍有报错,且输出的 retrieved background 为空:
定位报错信息的 agentuniverse/agent/action/knowledge/knowledge.py 的 190 附近,原因是 futures 的返回结果为空,此处应该是在知识库 civil_law_chroma_store 和 civil_law_sqlite_store 中进行检索
单独运行 StoreManager().get_instance_obj().query(),出现报错:
Bug2.1
报错是因为 agentuniverse/agent/action/knowledge/store/chroma_store.py 中 self.collection 为 None,根本原因是 self.collection 在 _new_client 中被赋值,但 _new_client 未被调用:
在 self.collection 为 None 时增加 _new_client 的调用后该 Bug 消失:
Bug2.2
Bug2.1 解决后再次运行 law_chat_bot.py 仍有报错:
报错是因为 agentuniverse/agent/action/knowledge/store/sqlite_store.py 中 self.conn 为 None,根本原因同样是 self.conn 在 _new_client 中被赋值,但 _new_client 未被调用:
同样在 self.conn 为 None 时增加 _new_client 的调用:
解决完 Bug2.1 和 Bug2.2 后 futures 的返回结果正常,最终输出结果的 retrieved background 不为空: