You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.3 KiB

5 months ago
# LLM function calling 示例
## 功能介绍
5 months ago
本项目用于验证语音控制大屏后端模块。获取用户输入后由LLM进行意图识别并通过function calling调用相关函数实现语音控制大屏。
使用的LLM是阿里开源QwQ-32B模型特点为有一定的推理能力并且运行速度快。DeepSeek-R1由于不是天生支持function calling所以不考虑。
5 months ago
## 安装
1. clone 本项目
```shell
git clone http://1.14.96.249:3000/old-tom/llmFunctionCallDemo.git
```
2. 创建虚拟环境
+ 这里使用的是pipenv,可以换成uv或者conda
+ python 版本为 3.10或以上稳定版即可
```shell
cd llmFunctionCallDemo clone的代码目录
```
```shell
pipenv install --python 3.10
```
3. 安装依赖
```shell
pip install -r requirements.txt
```
4. 向量库部署和初始化 (docker)
```shell
docker run --name marqo -it --privileged -p 8882:8882 --add-host host.docker.internal:host-gateway marqoai/marqo:latest
```
初始化:执行[vector_db.py](vector_db.py) create_and_set_index()方法
测试:执行[vector_db.py](vector_db.py) query_vector_db() 方法,参数为任意字符串
5. 配置文件
[env.toml](env.toml)
```toml
[base]
# 多轮对话历史存储类型memory内存
history_chat_store = 'memory'
# 相似度阈值
similarity_threshold = 0.93
# dev
dev = true
####### 模型配置 #######
[siliconflow]
# 硅基流动
# 密钥
api_key = ''
# 模型名称
model = ''
# API地址
base_url = ''
# 最大token数
max_tokens = 4096
# 温度系数
temperature = 0.6
# 是否流式返回
streaming = true
```
## TestCase
5 months ago
参考[main.py](main.py)
1. 多轮对话
```python
dsr = ChatAgent()
dsr.multi_with_stream('你是什么模型', 1)
dsr.multi_with_stream('你能做什么', 1)
dsr.multi_with_stream('我的上一个问题是什么?请直接返回问题,不要有多余输出及思考过程', 1)
dsr.multi_with_stream('我的第一个问题是什么?请直接返回问题,不要有多余输出及思考过程', 1)
```
2. 多轮对话并调用工具
```python
dsr = ChatAgent()
dsr.multi_with_tool_call_stream('播放南卡口相机', 1)
dsr.multi_with_tool_call_stream('1', 1)
```
5 months ago
5 months ago
## TODO
1. 模型输出不稳定,提示词还需要进一步优化
2. 日志跟踪
3. 升级历史对话存储redis或sqllite