开源 LLM 作为 LangChain 代理
开源的大型语言模型(LLM)已经达到了一个性能阈值,能够在代理工作流中充当有效的推理引擎。Hugging Face 的基准测试显示,Mixtral-8x7B 在集成到代理系统后,可在通用推理方面超越 GPT-3.5,这表明进一步针对函数调用的微调可能会将开源模型的性能推向 GPT-4 水平。
理解 LLM 代理与 ReAct 框架
LLM 代理是使用 LLM 作为核心引擎,根据观察对环境执行操作的系统。这类系统通常遵循感知 → 反思 → 行动的循环以实现目标,常常辅以规划或知识管理系统。
ReAct 方法
ReAct(Reasoning and Acting)是一种构建代理的特定方法,它将 Chain-of-Thought 提示与动作执行相结合。模型被提示“逐步思考”以规划并执行动作。内部循环如下运行:
- 思考:LLM 对当前状态进行反思并规划下一步。
- 行动:LLM 使用特定格式(例如 JSON)调用工具。
- 观察:系统执行工具并将结果追加到提示中。
- 最终答案:在收集到足够信息后,LLM 给出最终响应。
代理系统的核心挑战
实现可靠的代理需要克服三个主要技术难题:
- 工具选择:从提供的列表中选择正确的工具以推进目标。
- 参数格式化:保持严格的格式(如 JSON)以避免拼写错误或参数值不正确。
- 信息整合:高效利用收集到的观察结果和初始上下文来指导后续推理步骤。
使用 LangChain 与 Hugging Face 实现代理
Hugging Face 已将 ChatHuggingFace 包装器集成到 LangChain 中,简化了使用开源模型创建代理的过程。这使开发者能够将 HuggingFaceEndpoint 模型绑定到 ReAct 风格的提示以及一组工具(例如用于搜索的 SerpAPI 或用于计算的 LLM-math)。
通过在 LangChain 中使用 AgentExecutor,模型可以处理复杂查询——例如查找世界纪录保持者的年龄并对该年龄进行数学运算——通过迭代搜索数据并使用计算器工具来实现。
性能基准:开源模型 vs. 专有模型
为了评估通用推理能力,Hugging Face 使用一个结合了 HotpotQA(互联网搜索)、GSM8K(小学数学)和 GAIA(通用 AI 助手)样本的数据集,对多种模型进行了测试。
评估模型
- 开源:Llama2-70b-chat、Mixtral-8x7B-Instruct-v0.1、OpenHermes-2.5-Mistral-7B、Zephyr-7b-beta 和 SOLAR-10.7B-Instruct-v1.0。
- 专有:GPT-3.5 和 GPT-4(使用 OpenAI 特定的函数调用模板)。
关键发现
- Mixtral-8x7B 的优势:Mixtral-8x7B 表现异常出色,在基准测试中击败了 GPT-3.5。值得注意的是,Mixtral 并未专门针对代理工作流进行微调,而 GPT-3.5 则有。
- 模型差异:开源模型之间的性能差异显著;虽然 Mixtral 表现突出,但 Llama2-70b 在此特定代理情境下表现出乎意料地差。
- 工具使用的影响:代理工作流显著提升模型性能。例如,在一小批 GSM8K 题目上,Mixtral-8x7B 在提供计算器的情况下零样本表现达到 73%,而在 LLM Leaderboard 上使用 5-shot 提示报告的为 57.6%。
改进潜力
在 GAIA 基准测试中,约有 10% 的 Mixtral 失误是由于工具参数格式错误。Hugging Face 认为,针对函数调用和任务规划的有针对性微调可以进一步提升开源模型的性能,甚至有可能挑战 GPT-4。