一个简单的LLM代理人项目,使用硅基流动API。 使用System-Prompt让模型结构化输出与调用工具,使用不同模型处理不同模态的数据,并交给当前对话模型进行总结。
后端使用FastAPI框架,使用uvicorn作为服务器。前端使用Vue.js框架。
- 安装依赖
后端:Python版本:3.12.4,推荐使用虚拟环境
pip install -r requirements.txt前端:
cd web
npm install- 配置
修改script/setting/settings.py中的API_URL与API_KEY为自己平台的地址与密钥,前提是平台中得有settings中配置的几个模型。不过也可以自己专门写:)
- 运行
后端:直接运行script/__main__.py即可
前端:
cd web
npm run dev端口默认为5173,也可自己修改
在script/tools/tools.py中,按照指定格式书写工具注释,prompt模块导入工具时会自动调用相应的解析函数生成工具列表与其相应的描述并嵌入System-Prompt中,
具体的格式如下:
def tool(**kwargs):
"""
工具描述
--------------------
:param arg1: 参数1描述
:param arg2: 参数2描述
...
:type arg1: 参数1类型
:type arg2: 参数2类型
...
:enum arg1: 参数1可选值
:required: arg1, arg2
"""
# 工具主要部分
return # 返回值其中,工具描述下的分割线必不可少,这是因为这是用于区分工具描述与参数描述的重要部分。具体如何解析的参考script/tools/__init__.py中的simple_tool_des方法,方法很简单,是暴力解析的。
-
目前使用System-Prompt让模型结构化输出,但模型上下文有限,多轮对话过后可能不会结构化输出或忘记调用工具,后续需要改进。
-
搜索工具使用
urllib3请求bing,请求可能不成功。 -
较多的工具会导致较长的System-Prompt,可能考虑优化。
-
RAG部分研究还在进行......