|
|
|
|
# 基于reAct范式实现的agent
|
|
|
|
|
|
|
|
|
|
本项目用于验证语音控制大屏后端模块。获取用户输入后,由LLM进行意图识别,并通过function calling调用相关函数,实现语音控制大屏。
|
|
|
|
|
使用的LLM是阿里开源QwQ-32B,模型特点为有一定的推理能力并且运行速度快。DeepSeek-R1由于不是天生支持function calling所以不考虑。
|
|
|
|
|
|
|
|
|
|
# 环境搭建
|
|
|
|
|
|
|
|
|
|
1. clone 本项目
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
git clone http://1.14.96.249:3000/old-tom/reActLLMDemo.git
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. 安装依赖
|
|
|
|
|
推荐使用uv创建虚拟环境,python版本为3.12及以上
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
uv sync
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
3.向量库部署和初始化 (docker)
|
|
|
|
|
|
|
|
|
|
注:向量库使用marqo,嵌入模型为hf/e5-base-v2,相似度查询效果不太好。
|
|
|
|
|
```shell
|
|
|
|
|
docker run --name marqo -it --privileged -p 8882:8882 --add-host host.docker.internal:host-gateway marqoai/marqo:latest
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
初始化:执行[vector_db.py](src/vector_db.py) create_and_set_index()方法
|
|
|
|
|
|
|
|
|
|
测试:执行[vector_db.py](src/vector_db.py) query_vector_db() 方法,参数为任意字符串
|
|
|
|
|
|
|
|
|
|
4.配置文件
|
|
|
|
|
[env.toml](src/env.toml)
|
|
|
|
|
|
|
|
|
|
```toml
|
|
|
|
|
[base]
|
|
|
|
|
# 向量库相似度阈值
|
|
|
|
|
similarity_threshold = 0.93
|
|
|
|
|
# 模型供应商
|
|
|
|
|
model_form = 'siliconflow'
|
|
|
|
|
####### 模型配置 #######
|
|
|
|
|
[siliconflow]
|
|
|
|
|
# 硅基流动
|
|
|
|
|
# 密钥
|
|
|
|
|
api_key = ''
|
|
|
|
|
# 模型名称
|
|
|
|
|
model = ''
|
|
|
|
|
# API地址
|
|
|
|
|
base_url = ''
|
|
|
|
|
# 最大token数
|
|
|
|
|
max_tokens = 4096
|
|
|
|
|
# 温度系数
|
|
|
|
|
temperature = 0.6
|
|
|
|
|
# 是否流式返回
|
|
|
|
|
streaming = true
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
# 本地测试
|
|
|
|
|
|
|
|
|
|
环境搭建完成后,本地运行[local_test.py](src/local_test.py) 即可在终端体验对话
|
|
|
|
|
|
|
|
|
|
# 服务端简单实现
|
|
|
|
|
|
|
|
|
|
服务端使用fastapi实现,启动[server.py](src/server.py) 即可, 完整接口文档请访问 http://ip:port/docs
|
|
|
|
|
|
|
|
|
|
1. 建立sse连接,用于接收模型返回(流式)
|
|
|
|
|
[GET] http://ip:port/sse/{client_id}
|
|
|
|
|
|
|
|
|
|
参数:client_id: 客户端ID,用于区分不同客户端及历史聊天
|
|
|
|
|
|
|
|
|
|
2. 请求对话
|
|
|
|
|
[GET] http://ip:port/chat/{client_id}?ask=xxx
|
|
|
|
|
|
|
|
|
|
参数:client_id: 客户端ID,用于区分不同客户端及历史聊天 ask: 请求内容
|
|
|
|
|
|
|
|
|
|
# 系统提示词
|
|
|
|
|
|
|
|
|
|
# todo
|
|
|
|
|
1. 替换向量库并升级嵌入模型为bge-m3
|