Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix law_chat_bot #194

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

fix law_chat_bot #194

wants to merge 1 commit into from

Conversation

Flamx123
Copy link

@Flamx123 Flamx123 commented Nov 18, 2024

问题定位与解决

Bug1

在添加 qwen 的 API KEY 后 sample_standard_app/app/examples/law_chat_bot.py 无法跑通,报错如下:

image

在配置文件 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 解决。

Bug2

Bug1 解决后再次运行 law_chat_bot.py 虽有输出,但仍有报错,且输出的 retrieved background 为空:

image

image

定位报错信息的 agentuniverse/agent/action/knowledge/knowledge.py 的 190 附近,原因是 futures 的返回结果为空,此处应该是在知识库 civil_law_chroma_store 和 civil_law_sqlite_store 中进行检索

image

image

单独运行 StoreManager().get_instance_obj().query(),出现报错:

image

image

image

Bug2.1

报错是因为 agentuniverse/agent/action/knowledge/store/chroma_store.py 中 self.collection 为 None,根本原因是 self.collection 在 _new_client 中被赋值,但 _new_client 未被调用:

image

image
在 self.collection 为 None 时增加 _new_client 的调用后该 Bug 消失:

image

Bug2.2

Bug2.1 解决后再次运行 law_chat_bot.py 仍有报错:

image

image

报错是因为 agentuniverse/agent/action/knowledge/store/sqlite_store.py 中 self.conn 为 None,根本原因同样是 self.conn 在 _new_client 中被赋值,但 _new_client 未被调用:

image

image

同样在 self.conn 为 None 时增加 _new_client 的调用:

image

解决完 Bug2.1 和 Bug2.2 后 futures 的返回结果正常,最终输出结果的 retrieved background 不为空:

image

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant