Agent_QA是一个基于智能体的问答系统,直观展现了智能体的任务求解流程,包括模型的逐步思考和工具调用。
- 风控条线的业务方有大量的知识助手需求,希望支持知识问答和文档问答。
- 业务希望共享一套技术方案快速落地,只配备额外的信息检索工具,即可补全模型缺失知识。
- 业务希望问答流程透明,可以参与到思考过程的优化,即agentic方式的轨迹学习。
. 📂 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- 必要步骤:在
Config/LLM_Client.py中配置好大模型的API信息。不同模型流式和非流式输出的参数有差异,示例中均采用流式输出配置,便于观察实时执行过程; - 必要步骤:在
Config/Tool_keys.py中配置好联网信息检索工具的API信息。 - 可选步骤:在
Case_QA.py最开始tools中选择使用的工具,包括配认知工具、本地知识检索工具、联网搜索工具; - 必要步骤:运行前端页面
streamlit run web_app.py,上传文档(可选)和任务指令后,会自动设计任务执行流程;
模型选择qwen2.5-72b,执行三个任务:
- 简单的交互,直接回答即可,如
讲个笑话; - 复杂问题推理,调用了认知工具和检索工具,如
我在上海读博,26年1月11日放寒假,我打算在12日抽时间去趟庙里拜一拜,保佑我毕业论文顺利通过。请帮我看看天气如何,黄历适不适合拜菩萨?; - 文档问答,调用文档解析后进行分析,如
做个摘要,200字左右,中文;
Agent_Graph.py:里面是agent的主体结构,主要通过“规划、行动、反思”来实现复杂任务的分步求解。
Agent_App.py:里面是agent的封装脚本,通过调用Agent_Graph.py中的函数来实现智能体的调用,同时为了前端展示中间执行过程,加了回调函数。
直接运行该脚本即可查看agent的执行流程:python Agent_Graph.py。具体细节可见之前的仓库:消保智审助手
侧重模型思考过程的能力抽象,可以参考布鲁姆教育目标分类法
| 工具名称 | 核心定位 |
|---|---|
| recalling(上下文回忆) | 当任务需要调用长时记忆来推进时,需要通过回忆工具从历史上下文调取与当前任务相关的内容。 |
| recognizing(要素识别) | 当任务指令中存在影响任务完成的关键信息要素(如时间、主体、规则、约束条件)时,需要通过识别工具从指令中提取出这些核心要素信息。 |
| interpreting(任务解释) | 把相对抽象的任务指令,解释成具体的任务内容。 |
| exemplifying(任务举例) | 如果当前任务指令内包含抽象的概念,需要给出相似的任务样例来帮助理解。 |
| decompose(任务分解) | 如果当前任务过于复杂,需要拆解为若干个相对简单的子任务。 |
| checking(信息检查) | 检查历史上下文中的执行过程,是否符合既定准则、数据或事实。 |
| critiquing(方案评论) | 需要根据任务指令,对比上下文已经设计的方案,给出给出评判结论与依据。 |
工具检索样例,相对粗糙。基于关键词匹配的术语定义检索,基于大模型的规则选择。
知识文件如下:
| 文件名称 | 知识说明 |
|---|---|
| rules.json | 规则清单 |
| insurance_terms.json | 保险术语定义 |
| consumer_protection_terms.json | 消保术语定义 |
检索工具如下:
| 工具名称 | 核心定位 |
|---|---|
| RulesSearch(规则检索) | 检索和文案相关的审核规则 |
| TermsSearch(术语检索) | 检索相关的术语定义 |
基于大模型的联网搜索,检索相关的信息,都是免费接口,调用时需要注意频率限制。PS:谷歌搜索等已做好,后续测试完会更新。
| 工具名称 | 核心定位 |
|---|---|
| get_real_time_weather(实时天气查询) | 查询指定城市的实时天气信息 |
| get_3day_forecast(3天天气预报) | 查询指定城市的3天天气预报 |
| get_calendar(万年历查询) | 查询指定日期的黄历信息 |
| get_mediastack_news(新闻检索) | 根据英文关键词查询新闻 |
见web_app.py,里面是前端页面的脚本,通过调用Agent_App.py中的函数来实现智能体的调用,同时展示中间执行过程,运行命令为streamlit run web_app.py。
PS:为了快速呈现,前端页面采用streamlit框架,运行前需要安装streamlit和streamlit-float,完全仰仗Gimini~


