From 95e4bf386717398e1d344caff1ab2227b9d0ff7b Mon Sep 17 00:00:00 2001
From: wwxxzz
Date: Fri, 16 Aug 2024 17:37:44 +0800
Subject: [PATCH] Support Agentic RAG with intent and functioncalling (#154)
* Add intent detection module
* Remove LlmQuery class
* Support API
* Refactor agent module and format toml
* Refactor module tool
* Refactor query api
* Add demo and UI
* remove
* Fix reviews
* Add test for intent and api
---
README.md | 6 +-
README_zh.md | 7 +-
docs/function_calling/readme.md | 179 ------------------
.../README.md | 99 ++++++++++
.../config.json | 82 ++++++++
...3\347\225\245\344\277\241\346\201\257.pdf" | Bin 0 -> 152599 bytes
...3\347\225\245\344\277\241\346\201\257.pdf" | Bin 0 -> 161873 bytes
.../figures/agent_chat.jpg | Bin 0 -> 851954 bytes
.../figures/agent_config.jpg | Bin 0 -> 662086 bytes
.../figures/settings.jpg | Bin 0 -> 504073 bytes
.../figures/upload.jpg | Bin 0 -> 503631 bytes
.../mock_api/main.py | 177 +++++++++++++++++
.../settings.toml | 100 ++++++++++
.../python-tool-for-booking-demo/config.json | 64 +++++++
.../python-tool-for-booking-demo/functions.py | 8 +-
.../settings.toml | 31 +--
src/pai_rag/app/api/models.py | 9 +-
src/pai_rag/app/api/query.py | 18 +-
src/pai_rag/app/web/rag_client.py | 38 +++-
src/pai_rag/app/web/tabs/agent_tab.py | 118 ++++++++++++
src/pai_rag/app/web/webui.py | 4 +
src/pai_rag/config/settings.toml | 19 +-
src/pai_rag/core/rag_application.py | 71 ++++++-
src/pai_rag/core/rag_configuration.py | 4 +
src/pai_rag/core/rag_service.py | 13 +-
.../integrations/llms/dashscope/fc_base.py | 14 ++
src/pai_rag/modules/__init__.py | 5 +-
src/pai_rag/modules/agent/agent.py | 21 +-
.../modules/customconfig/custom_config.py | 35 ++++
.../intentdetection/intent_detection.py | 43 +++++
.../intentdetection/llm_single_detector.py | 154 +++++++++++++++
.../modules/intentdetection/output_parser.py | 102 ++++++++++
.../modules/llm/function_calling_llm.py | 6 +
src/pai_rag/modules/module_registry.py | 7 +-
.../tool/booking_demo/custom_functions.json | 78 --------
.../modules/tool/load_and_search_tool_spec.py | 2 +-
src/pai_rag/modules/tool/tool.py | 37 ++--
src/pai_rag/modules/tool/utils.py | 115 +++++++----
.../intentdetection/test_intent_detection.py | 28 +++
tests/modules/tool/test_api_tool.py | 28 +++
40 files changed, 1355 insertions(+), 367 deletions(-)
delete mode 100644 docs/function_calling/readme.md
create mode 100644 example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/README.md
create mode 100644 example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/config.json
create mode 100644 "example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/dataset/\344\270\212\346\265\267\346\224\273\347\225\245\344\277\241\346\201\257.pdf"
create mode 100644 "example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/dataset/\345\214\227\344\272\254\346\224\273\347\225\245\344\277\241\346\201\257.pdf"
create mode 100644 example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/figures/agent_chat.jpg
create mode 100644 example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/figures/agent_config.jpg
create mode 100644 example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/figures/settings.jpg
create mode 100644 example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/figures/upload.jpg
create mode 100644 example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/mock_api/main.py
create mode 100644 example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/settings.toml
create mode 100644 example_data/function_tools/python-tool-for-booking-demo/config.json
rename src/pai_rag/modules/tool/booking_demo/custom_functions.py => example_data/function_tools/python-tool-for-booking-demo/functions.py (89%)
rename src/pai_rag/config/settings_fc_demo.toml => example_data/function_tools/python-tool-for-booking-demo/settings.toml (88%)
create mode 100644 src/pai_rag/app/web/tabs/agent_tab.py
create mode 100644 src/pai_rag/modules/customconfig/custom_config.py
create mode 100644 src/pai_rag/modules/intentdetection/intent_detection.py
create mode 100644 src/pai_rag/modules/intentdetection/llm_single_detector.py
create mode 100644 src/pai_rag/modules/intentdetection/output_parser.py
delete mode 100644 src/pai_rag/modules/tool/booking_demo/custom_functions.json
create mode 100644 tests/modules/intentdetection/test_intent_detection.py
create mode 100644 tests/modules/tool/test_api_tool.py
diff --git a/README.md b/README.md
index 091ce8c9..f788d2c2 100644
--- a/README.md
+++ b/README.md
@@ -327,10 +327,10 @@ curl -X 'POST' http://127.0.0.1:8000/service/evaluate/retrieval
curl -X 'POST' http://127.0.0.1:8000/service/evaluate/response
```
-# Function Calling
+# Agentic RAG
-You can use function calling tools in PAI-RAG, please refer to the documentation:
-[Function Calling Instruction](./docs/function_calling/readme.md)
+You can use agent with function calling api-tools in PAI-RAG, please refer to the documentation:
+[Agentic RAG](./example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/README.md)
# Parameter Configuration
diff --git a/README_zh.md b/README_zh.md
index 2fcbc6e9..b77894e5 100644
--- a/README_zh.md
+++ b/README_zh.md
@@ -277,11 +277,10 @@ curl -X 'POST' http://127.0.0.1:8000/service/evaluate/retrieval
curl -X 'POST' http://127.0.0.1:8000/service/evaluate/response
```
-# Function Calling
+# Agentic RAG
-您也可以在PAI-RAG中使用function calling功能,请参考文档:
-
-[Function Calling 使用说明](./docs/function_calling/readme.md)
+您也可以在PAI-RAG中使用支持API function calling功能的Agent,请参考文档:
+[Agentic RAG](./example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/README.md)
# 参数配置
diff --git a/docs/function_calling/readme.md b/docs/function_calling/readme.md
deleted file mode 100644
index 5dc864e1..00000000
--- a/docs/function_calling/readme.md
+++ /dev/null
@@ -1,179 +0,0 @@
-
-
Function Calling in PAI-RAG
-
-
-# 什么是 Function Calling
-
-OpenAI于23年6月份的更新的 gpt-4-0613 和 gpt-3.5-turbo-0613 版本中为模型添加了Function Calling功能,通过给模型提供一组预定义的函数(Function list)以及用户提问(Query),让大模型自主选择要调用的函数,并向该函数提供所需的输入参数。随后我们就可以在自己的环境中基于模型生成的参数调用该函数,并将结果返回给大模型。
-
-ChatGPT的Function Calling功能在发布之后立刻引起了人们的关注,因其简单易用的特性以及规范的输入输出迅速成为模型生态中Function calling的格式规范。后续的具有function calling功能的模型有很多参照了OpenAI的Function Calling格式,其输入的函数列表以及输出的Function Calling及其参数都以JSON格式输出:输入的函数列表中通常包括函数名称、函数功能描述、函数参数等部分,而输出中则按顺序输出所调用的函数名称和其中使用的参数。
-
-# 如何定义 Function 及其实现
-
-在PAI-RAG中,支持用户调用自定义的functions与外部世界进行更多的交互,如对接会议室预定系统,可以查询预定状态,协助用户提供个人信息来预定所需会议室;如对接数据库系统,调用外部API等。
-
-PAI-RAG中的function定义遵循OpenAI的Function Calling格式规范,如下定义了在会议室预定系统中如何查询预订状态的function。
-
-```json
-[
- {
- "type": "function",
- "function": {
- "name": "get_booking_state",
- "description": "用于查询给定会议室ID的预定状态",
- "parameters": {
- "type": "object",
- "properties": {
- "room_id": {
- "type": "str",
- "description": "待查询的会议室ID"
- }
- },
- "required": ["room_id"]
- }
- }
- }
-]
-```
-
-定义好function之后,需要将对应function name的逻辑进行python实现,如下:
-
-```python
-def get_booking_state(room_id: str) -> str:
- try:
- return str(bookings[room_id].dict())
- except Exception:
- return f"没有找到会议室ID:{room_id}"
-```
-
-按照如上规范定义好所需的function即可在PAI-RAG中进行调用。
-
-# PAI-RAG如何调用demo functions
-
-我们提供了一组预置的会议室预定系统的demo,在 src/pai_rag/modules/tool/booking_demo 目录下,可以直接以demo启动体验:
-
-```bash
-pai_rag serve -p 8071 -c src/pai_rag/config/settings_fc_demo.toml
-```
-
-[注意] 在demo中,我们默认使用qwen2-7b-instruct作为function calling的LLM,您也可以根据需要替换为更大的模型,如qwen2-72b-instruct。
-
-1. 发送预定会议室的请求
-
-```bash
-# Query
-curl -X 'POST' http://127.0.0.1:8071/service/query/agent -H "Content-Type: application/json" -d '{"question":"我要预定303会议室"}'
-
-# Response
-Added user message to memory: 我要预定303会议室
-
-=== Calling Function ===
-Calling function: create_booking with args: {"room_id": "303"}
-=== Function Output ===
-会议室预订ID:303已创建,但尚未确认。请提供您的姓名(name)、电子邮件(email)、电话(phone)、日期(date)和时间(time)。
-
-=== LLM Response ===
-会议室303的预定已经创建成功,但还需要进一步确认。请您提供以下信息以便完成预定:
-
-- 姓名(name)
-- 电子邮件(email)
-- 电话(phone)
-- 日期(date)
-- 时间(time)
-
-请将这些信息告诉我,我将为您更新预定详情。
-```
-
-2. 完善用户的预定信息
-
-```bash
-# Query
-curl -X 'POST' http://127.0.0.1:8071/service/query/agent -H "Content-Type: application/json" -d '{"question":"我叫玛丽,手机号是1505185"}'
-
-# Response
-Added user message to memory: 我叫玛丽,手机号是1505185
-
-=== Calling Function ===
-Calling function: update_booking with args: {"room_id": "303", "property": "name", "value": "\u739b\u4e3d"}
-=== Function Output ===
-预订ID 303 更新属性信息 name = 玛丽
-=== Calling Function ===
-Calling function: update_booking with args: {"room_id": "303", "property": "phone", "value": "1505185"}
-=== Function Output ===
-预订ID 303 更新属性信息 phone = 1505185
-=== LLM Response ===
-您的名字和电话号码已更新:
-- 姓名:玛丽
-- 电话:1505185
-
-还请提供您的电子邮件地址、预定的日期和时间,以便完成会议室预定的所有必要信息。
-```
-
-```bash
-# Query
-curl -X 'POST' http://127.0.0.1:8071/service/query/agent -H "Content-Type: application/json" -d '{"question":"电子邮件是123@qq.com,预定日期是2024年8月10号,时间是下午6点"}'
-
-# Response
-Added user message to memory: 电子邮件是123@qq.com,预定日期是2024年8月10号,时间是下午6点
-
-=== Calling Function ===
-Calling function: update_booking with args: {"room_id": "303", "property": "email", "value": "123@qq.com"}
-=== Function Output ===
-预订ID 303 更新属性信息 email = 123@qq.com
-=== Calling Function ===
-Calling function: update_booking with args: {"room_id": "303", "property": "date", "value": "2024-08-10"}
-=== Function Output ===
-预订ID 303 更新属性信息 date = 2024-08-10
-=== Calling Function ===
-Calling function: update_booking with args: {"room_id": "303", "property": "time", "value": "18:00"}
-=== Function Output ===
-预订ID 303 更新属性信息 time = 18:00
-
-=== LLM Response ===
-您的预定信息已经全部更新完毕:
-- 姓名:玛丽
-- 电话:1505185
-- 电子邮件:123@qq.com
-- 日期:2024年8月10日
-- 时间:下午6点(18:00)
-
-会议室预定成功。如果您需要进一步的帮助或有其他要求,请随时告诉我。
-```
-
-3. 查询会议室预定状态
-
-```bash
-# Query
-curl -X 'POST' http://127.0.0.1:8071/service/query/agent -H "Content-Type: application/json" -d '{"question":"查询303有没有被预定"}'
-
-# Response
-Added user message to memory: 查询303有没有被预定
-
-=== Calling Function ===
-Calling function: get_booking_state with args: {"room_id": "303"}
-=== Function Output ===
-{'name': '玛丽', 'email': '123@qq.com', 'phone': '1505185', 'date': '2024-08-10', 'time': '18:00'}
-
-=== LLM Response ===
-会议室303已被预定,预定信息如下:
-- 姓名:玛丽
-- 电子邮件:123@qq.com
-- 电话:1505185
-- 日期:2024年8月10日
-- 时间:下午6点(18:00)
-
-如果您需要预定该会议室或其他帮助,请告知我。
-```
-
-按照如上所做可以看到我们已经和会议室预定系统建立了连接,并且能够有效且快速处理用户的请求,且工具调用的准确率很高。
-
-# PAI-RAG如何调用用户自定义的 functions
-
-除了我们预置的demo,也支持用户实现任意自己的function函数:
-
-1. 在 src/pai_rag/modules/tool 目录下新建一个自定义的文件夹,如 user_tool
-2. 在 src/pai_rag/modules/tool/user_tool目录下新建两个文件,分别为:custom_functions.json 和 custom_functions.py。并分别按照前面所述实现自己的函数定义和实现逻辑即可。
-3. 修改 src/pai_rag/config/settings_fc_demo.toml 文件的最后一行,将 func_path = "src/pai_rag/modules/tool/booking_demo" 替换为 第一步中的目录名称(src/pai_rag/modules/tool/user_tool)即可。
-4. 指定配置文件来启动项目:pai_rag serve -p 8071 -c src/pai_rag/config/settings_fc_demo.toml
-
-之后,您就可以进行请求调用来查看function calling的效果。
diff --git a/example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/README.md b/example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/README.md
new file mode 100644
index 00000000..ddd7dec8
--- /dev/null
+++ b/example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/README.md
@@ -0,0 +1,99 @@
+# Agentic RAG Demo Guide
+
+此示例提供了一个旅游小助手的功能,仅用于演示Agentic RAG中如何结合意图识别和FunctionCalling达到智能旅游攻略搜索和调用外部系统API的目的。实际使用视业务情况而有所不同。
+
+## Mock API Service
+
+我们提供了一个使用 FastAPI 实现的简单 API 系统,包含从北京到上海的机票查询、高铁查询和上海酒店查询。这些 API 将返回我们提前设定的 mock 数据。
+
+使用以下命令启动 FastAPI 应用:
+
+```bash
+cd example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/mock_api
+python main.py
+```
+
+## PAI-RAG Service
+
+使用以下命令启动PAI-RAG服务端:
+
+```bash
+cd PAI-RAG/
+pai_rag serve -p 8071
+```
+
+## (Option-1) PAI-RAG UI
+
+使用以下命令启动PAI-RAG WebUI:
+
+```bash
+pai_rag ui -p 8072 -c http://127.0.0.1:8071
+```
+
+在WebUI页面,在`Settings Tab`先配置好所需的模型,并点击connect进行连接。
+![settings](figures/settings.jpg)
+
+在`Upload Tab`上传所需要的知识库内容,此例子中可以使用 **example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/dataset** 准备好的北京和上海的旅游攻略数据。
+![upload](figures/upload.jpg)
+
+在`Agent Tab`上传Agent配置文件,此例子中可以使用**example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/config.json**,上传后点击Submit进行agent模块注册,成功后即可在右侧Chatbot中进行agent对话测试。
+![agent_config](figures/agent_config.jpg)
+![agent_chat](figures/agent_chat.jpg)
+
+## (Option-2) API
+
+若不需要使用webui,也可以直接使用API进行知识库上传和agent调用。
+
+1. 上传知识库文件:此例子中使用 **example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/dataset** 准备好的北京和上海的旅游攻略数据。
+
+```bash
+load_data -d example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/dataset
+```
+
+2. 注册Agent相关模块:此例子中使用**example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/config.json**
+
+```bash
+curl -X 'POST' http://127.0.0.1:8071/service/config/agent -H 'Content-Type: multipart/form-data' -F 'file=@example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/config.json'
+```
+
+3. AgenticRAG对话测试
+
+注意: API中需要显式指定 `"with_intent":"True"` 才可以调用到意图识别模块进行意图的分发。
+
+(1) 知识库检索
+
+```bash
+curl -X 'POST' http://127.0.0.1:8071/service/query -H "Content-Type: application/json" -d '{"question":"北京旅游攻略", "with_intent":true}'
+
+# "answer"
+# 北京旅游攻略包括以下景点推荐、开放时间、特色美食、旅行建议等信息:
+# 景点推荐与开放时间
+# - **故宫博物院**
+# - 地址:北京市东城区景⼭前街 4 号
+# - 亮点:世界上规模最⼤、保存最完整的木质结构古建筑之⼀,珍藏大量文化遗产和珍宝。
+# - 开放时间: 旺季(4 ⽉ 1 ⽇-10 ⽉ 31 ⽇):8:30-16:30(15:40 停⽌⼊馆) - 淡季(11 ⽉ 1 ⽇-3 ⽉ 31 ⽇):8:30-16:00(15:10 停⽌⼊馆)
+# - **天安⻔⼴场**
+# - 地址:北京市东城区东⻓安街
+# - 亮点:世界最⼤的城市⼴场,中华⼈⺠共和国的⼼脏,可观看升国旗仪式、参观⽑主席纪念堂和⼈⺠英雄纪念碑。
+# - 开放时间:全天开放
+# - **天坛公园**
+# - 地址:北京市东城区天坛东⾥甲 1 号
+# - 亮点:中国古代皇帝祭天和祈年之所。
+# 特色美食
+# - **京酱⾁丝** - 推荐餐厅:东来顺饭庄,位于北京市东城区东直⻔内⼤街,传统⽼字号餐馆。 - 特⾊:京酱(甜酱)炒制的猪⾁丝,颜⾊红亮,味道浓郁,常⽤⾖⽪或葱白包着吃,⼝感极佳。
+# 旅行建议
+# - **最佳旅游时间**:北京春秋季节⽓候宜人,适合旅游。春季(3 ⽉⾄ 5 ⽉),秋季(9 ⽉⾄ 11 ⽉)- **交通⽅式**:北京公共交通⾮常⽅便,地铁覆盖主要景点,推荐使⽤北京交通卡(Yikatong)方便出⾏。- **注意事项**:北京夏季天⽓炎热,⾼温多⾬;冬季寒冷⼲燥。建议根据季节和天⽓预报准备适合的⾐物。
+# 希望以上攻略对您能有所帮助,祝您在北京玩得愉快!"
+```
+
+(2) API调用
+
+```bash
+curl -X 'POST' http://127.0.0.1:8071/service/query -H "Content-Type: application/json" -d '{"question":"2024年8月6号从北京到上海的机票信息", "with_intent":true}'
+
+# "answer"
+# assistant: 2024年8月6日从北京到上海的航班信息如下:
+# 1. 航班号:MU456,出发时间:14:00,到达时间:16:00,价格:1300元
+# 2. 航班号:HU789,出发时间:18:00,到达时间:20:00,价格:1100元
+# 请注意选择合适的航班和时间。"
+```
diff --git a/example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/config.json b/example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/config.json
new file mode 100644
index 00000000..82ccd04d
--- /dev/null
+++ b/example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/config.json
@@ -0,0 +1,82 @@
+{
+ "intent": {
+ "retrieval": "关于一些通用的信息检索,比如搜索旅游攻略、搜索美食攻略、搜索注意事项等信息。",
+ "agent": "实时性的信息查询,比如查询航班信息、查询高铁信息、查询天气等时效性很强的信息。"
+ },
+ "agent": {
+ "system_prompt": "你是一个旅游小助手,可以帮助用户查询指定时间从A地区到B地区的机票信息,以及火车票信息等。请严格使用输入的工具,不要虚构任何细节。",
+ "functions": [
+ {
+ "name": "search_flight_ticket_api",
+ "api": "http://127.0.0.1:8070/demo/api/flights",
+ "headers": {
+ "Authorization": "Bearer YOUR_ACCESS_TOKEN"
+ },
+ "method": "GET",
+ "request_body_type": "params",
+ "description": "帮助用户获取机票信息,用户需要输入出发地、目的地",
+ "parameters": {
+ "from_city": {
+ "type": "str",
+ "description": "出发城市,如'北京'、'上海'、'南京''"
+ },
+ "to_city": {
+ "type": "str",
+ "description": "目的地城市,如'北京'、'上海'、'南京'"
+ },
+ "date": {
+ "type": "str",
+ "description": "出发时间,如'2024-03-29'"
+ }
+ },
+ "required": ["from_city", "to_city", "date"]
+ },
+ {
+ "name": "search_train_ticket_api",
+ "api": "http://127.0.0.1:8070/demo/api/trains",
+ "headers": {
+ "Authorization": "Bearer YOUR_ACCESS_TOKEN"
+ },
+ "method": "GET",
+ "request_body_type": "params",
+ "description": "帮助用户查询火车票或者高铁票信息",
+ "parameters": {
+ "from_city": {
+ "type": "str",
+ "description": "出发城市,如'北京'、'上海'、'南京''"
+ },
+ "to_city": {
+ "type": "str",
+ "description": "目的地城市,如'北京'、'上海'、'南京'"
+ },
+ "date": {
+ "type": "str",
+ "description": "出发时间,如'2024-03-29'"
+ }
+ },
+ "required": ["from_city", "to_city", "date"]
+ },
+ {
+ "name": "search_hotels_api",
+ "api": "http://127.0.0.1:8070/demo/api/hotels",
+ "headers": {
+ "Authorization": "Bearer YOUR_ACCESS_TOKEN"
+ },
+ "method": "GET",
+ "request_body_type": "params",
+ "description": "帮助用户查询酒店信息",
+ "parameters": {
+ "city": {
+ "type": "str",
+ "description": "查询的城市,如'北京'、'上海'、'南京''"
+ },
+ "date": {
+ "type": "str",
+ "description": "出发时间,如'2024-03-29'"
+ }
+ },
+ "required": ["city", "date"]
+ }
+ ]
+ }
+}
diff --git "a/example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/dataset/\344\270\212\346\265\267\346\224\273\347\225\245\344\277\241\346\201\257.pdf" "b/example_data/function_tools/api-tool-with-intent-detection-for-travel-assistant/dataset/\344\270\212\346\265\267\346\224\273\347\225\245\344\277\241\346\201\257.pdf"
new file mode 100644
index 0000000000000000000000000000000000000000..bab9665633a0bfec9c8f50ee10a3cb4c1873d09a
GIT binary patch
literal 152599
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