大模型function calling demo
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.
old-tom 91d621e124
feat: 提交
5 months ago
.idea feat: 提交 5 months ago
llmagent feat: 提交 5 months ago
llmtools feat: 提交 5 months ago
.gitignore first commit 5 months ago
LICENSE Initial commit 5 months ago
Pipfile first commit 5 months ago
README.md feat: 提交 5 months ago
env.toml feat: 提交 5 months ago
log_conf.py feat: 部分修改 5 months ago
main.py feat: 提交 5 months ago
requirements.txt feat: 提交 5 months ago
vector_db.py feat: 提交 5 months ago

README.md

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

LLM function calling 示例

功能介绍

本项目用于验证语音控制大屏后端模块。获取用户输入后由LLM进行意图识别并通过function calling调用相关函数实现语音控制大屏。
使用的LLM是阿里开源QwQ-32B模型特点为有一定的推理能力并且运行速度快。DeepSeek-R1由于不是天生支持function calling所以不考虑。

安装

  1. clone 本项目
git clone http://1.14.96.249:3000/old-tom/llmFunctionCallDemo.git
  1. 创建虚拟环境
  • 这里使用的是pipenv,可以换成uv或者conda
  • python 版本为 3.10或以上稳定版即可
cd llmFunctionCallDemo clone的代码目录
pipenv install --python 3.10
  1. 安装依赖
pip install -r requirements.txt
  1. 向量库部署和初始化 (docker)
docker run --name marqo -it --privileged -p 8882:8882 --add-host host.docker.internal:host-gateway marqoai/marqo:latest

初始化:执行vector_db.py create_and_set_index()方法

测试:执行vector_db.py query_vector_db() 方法,参数为任意字符串

  1. 配置文件 env.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

参考main.py

  1. 多轮对话
    dsr = ChatAgent()
    dsr.multi_with_stream('你是什么模型', 1)
    dsr.multi_with_stream('你能做什么', 1)
    dsr.multi_with_stream('我的上一个问题是什么?请直接返回问题,不要有多余输出及思考过程', 1)
    dsr.multi_with_stream('我的第一个问题是什么?请直接返回问题,不要有多余输出及思考过程', 1)
  1. 多轮对话并调用工具
    dsr = ChatAgent()
    dsr.multi_with_tool_call_stream('播放南卡口相机', 1)
    dsr.multi_with_tool_call_stream('1', 1)

TODO

  1. 模型输出不稳定,提示词还需要进一步优化
  2. 日志跟踪
  3. 升级历史对话存储redis或sqllite