通过大模型调用其他工具到底可不可行?ChatGPT 或许能轻松搞定一切,但同样的需求落在本地大模型上,恐怕就要打个问号了。法国开发工程师 Emilien Lancelot 尝试了多款号称具备工具调用功能的 agent 框架,来看看本地大模型到底能不能完成任务,结果证明许多框架在本地化支持上存在显著缺陷。
AutoGPT:配置复杂且依赖云端验证
AutoGPT 是款看似强大的框架,提供 CLI 和 Flutter UI,能够通过浏览器创建 agent。其主要功能是处理用户的文档、音频、视频等本地内容。但是,它主要依靠 ChatGPT 或其他专有大模型服务来完成繁重工作。
若要使用 Ollama 端点,必须对配置文件进行'糊弄'式修改,让其误认为是 ChatGPT。
代码语言:bash
## OPENAI_API_KEY - OpenAI API Key (Example: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)
OPENAI_API_KEY="helloworld"
## OPENAI_API_BASE_URL - OpenAI API 的自定义 URL,可用于接入自定义后端。
OPENAI_API_BASE_URL=http://localhost:11434/v1
## SMART_LLM - 智能语言模型 (Default: gpt-4-turbo)
SMART_LLM=dolphin-mixtral:8x7b-v2.7-q4_K_M
## FAST_LLM - 快速语言模型 (Default: gpt-3.5-turbo)
FAST_LLM=mistral:latest
运行后常遇到模型名称枚举错误,因为 AutoGPT 强制要求特定的专有模型名称(如 gpt-4-turbo),而本地模型通常不在此白名单中。
代码语言:console
value is not a valid enumeration member; permitted: 'text-embedding-ada-002', ... 'gpt-4-turbo' ...
即使伪造模型名称,API Key 验证也会失败,提示需要有效的 OpenAI 密钥。项目链接:https://github.com/Significant-Gravitas/AutoGPT
实验小结:要想解决模型名称问题,可以在 Ollama 当中创建一个名为 GPT4-turbo 的自定义模型,但这只是重命名,无法解决 API key 错误。网上的相关文件没有介绍使用本地模型的任何内容。AutoGPT 恐怕还没有准备好对接本地模型,只能等后续升级。
网友 Wladastic 评价道,没有任何本地模型可以完全与 Auto-GPT 配合使用,因为 GPT-4 可以保持上下文长度而不会过于关注它,但其他有效的模型确实过于关注给予 LLM 的提示。如果让 Mistral 7B AWQ 运行,唯一的问题是必须从头开始编写自己的 Auto-GPT,因为 Auto-GPT 的提示对于本地 llms 来说太长且混乱。它们有时会返回正确的提示,但有时会通过 Auto-GPT 专注于系统提示,导致无限循环。
LangChain:语法晦涩且工具支持有限
Langchain 已经成为诸多项目的核心,但其语法太过复杂,很多开发者没时间去学习和适应。提供的是一种相当晦涩的 Python 功能使用方式。
代码语言:python
chain = prompt | model | outputparser
chain.invoke("Question.")
Python 的 LCEL 系统使用 pipes(「|」)将事物串连起来。具体在 Python 之内,就是通过覆盖 Python 的 or 方法来实现。换句话说,Langchain 会像在 C++ 那些覆盖掉运算符。
针对本地模型,Langchain 提供 2 款插件:
- Ollama chat: 允许用户与大模型对话。
- Ollama-functions: 允许大模型通过特定输出格式回答问题。


