Skip to content

An agent-based question-answering system(一个基于智能体的问答系统)

License

Notifications You must be signed in to change notification settings

renjunxiang/Agent_QA

Repository files navigation

基于智能体的问答系统(Agent_QA)

Agent_QA是一个基于智能体的问答系统,直观展现了智能体的任务求解流程,包括模型的逐步思考和工具调用。

目录

1 背景简介

  • 风控条线的业务方有大量的知识助手需求,希望支持知识问答和文档问答。
  • 业务希望共享一套技术方案快速落地,只配备额外的信息检索工具,即可补全模型缺失知识。
  • 业务希望问答流程透明,可以参与到思考过程的优化,即agentic方式的轨迹学习。

2 快速上手

2.1 项目主要结构

. 📂 Agent_QA
└── 📂 Config/
│  ├── 📄 __init__.py
│  ├── 📄 LLM_Client.py # 大模型调用接口
│  └── 📄 Tool_keys.py # 工具调用接口
└── 📂 Tools
│  └── 📂 Thinking/ #认知工具
│  └── 📂 InternetSearch/ # 联网搜索工具
│  └── 📂 KnowledgeSearch/ # 本地知识检索工具
├── 📄 Agent_Graph.py # 智能体框架
├── 📄 Agent_App.py # 智能体执行脚本
├── 📄 web_app.py # 前端页面
├── 📄 requirements.txt
├── 📄 README.md
└── 📄 LICENSE

2.2 运行步骤

  1. 必要步骤:在Config/LLM_Client.py中配置好大模型的API信息。不同模型流式和非流式输出的参数有差异,示例中均采用流式输出配置,便于观察实时执行过程;
  2. 必要步骤:在Config/Tool_keys.py中配置好联网信息检索工具的API信息。
  3. 可选步骤:在Case_QA.py最开始tools中选择使用的工具,包括配认知工具、本地知识检索工具、联网搜索工具;
  4. 必要步骤:运行前端页面streamlit run web_app.py,上传文档(可选)和任务指令后,会自动设计任务执行流程;

2.3 运行样例

模型选择qwen2.5-72b,执行三个任务:

  • 简单的交互,直接回答即可,如讲个笑话
  • 复杂问题推理,调用了认知工具和检索工具,如我在上海读博,26年1月11日放寒假,我打算在12日抽时间去趟庙里拜一拜,保佑我毕业论文顺利通过。请帮我看看天气如何,黄历适不适合拜菩萨?
  • 文档问答,调用文档解析后进行分析,如做个摘要,200字左右,中文
样例

3 主要模块

3.1 智能体框架

Agent_Graph.py:里面是agent的主体结构,主要通过“规划、行动、反思”来实现复杂任务的分步求解。 Agent_App.py:里面是agent的封装脚本,通过调用Agent_Graph.py中的函数来实现智能体的调用,同时为了前端展示中间执行过程,加了回调函数。

直接运行该脚本即可查看agent的执行流程:python Agent_Graph.py。具体细节可见之前的仓库:消保智审助手

主流程

3.2 工具调用

3.2.1 认知工具

侧重模型思考过程的能力抽象,可以参考布鲁姆教育目标分类法

工具名称 核心定位
recalling(上下文回忆) 当任务需要调用长时记忆来推进时,需要通过回忆工具从历史上下文调取与当前任务相关的内容。
recognizing(要素识别) 当任务指令中存在影响任务完成的关键信息要素(如时间、主体、规则、约束条件)时,需要通过识别工具从指令中提取出这些核心要素信息。
interpreting(任务解释) 把相对抽象的任务指令,解释成具体的任务内容。
exemplifying(任务举例) 如果当前任务指令内包含抽象的概念,需要给出相似的任务样例来帮助理解。
decompose(任务分解) 如果当前任务过于复杂,需要拆解为若干个相对简单的子任务。
checking(信息检查) 检查历史上下文中的执行过程,是否符合既定准则、数据或事实。
critiquing(方案评论) 需要根据任务指令,对比上下文已经设计的方案,给出给出评判结论与依据。

3.2.2 本地知识工具

工具检索样例,相对粗糙。基于关键词匹配的术语定义检索,基于大模型的规则选择。

知识文件如下:

文件名称 知识说明
rules.json 规则清单
insurance_terms.json 保险术语定义
consumer_protection_terms.json 消保术语定义

检索工具如下:

工具名称 核心定位
RulesSearch(规则检索) 检索和文案相关的审核规则
TermsSearch(术语检索) 检索相关的术语定义

3.2.3 联网搜索工具

基于大模型的联网搜索,检索相关的信息,都是免费接口,调用时需要注意频率限制。PS:谷歌搜索等已做好,后续测试完会更新。

工具名称 核心定位
get_real_time_weather(实时天气查询) 查询指定城市的实时天气信息
get_3day_forecast(3天天气预报) 查询指定城市的3天天气预报
get_calendar(万年历查询) 查询指定日期的黄历信息
get_mediastack_news(新闻检索) 根据英文关键词查询新闻

3.3 前端展示

web_app.py,里面是前端页面的脚本,通过调用Agent_App.py中的函数来实现智能体的调用,同时展示中间执行过程,运行命令为streamlit run web_app.py。 PS:为了快速呈现,前端页面采用streamlit框架,运行前需要安装streamlitstreamlit-float,完全仰仗Gimini~

主流程

About

An agent-based question-answering system(一个基于智能体的问答系统)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages