llama-cpp-agent
llama-cpp-agent 是一个旨在简化与大语言模型(LLM)交互的开源框架。它不仅能让用户轻松与模型进行自然对话,还能执行结构化的函数调用并生成规范的输出格式(如 JSON 对象)。
该工具核心解决了中小参数模型(如 7B 级别)或非专门微调模型难以稳定输出结构化数据的问题。通过独特的“引导采样”技术,结合语法规则和 JSON 模式约束,llama-cpp-agent 能强制模型按预定格式回答,即使模型本身未针对函数调用进行过训练也能完美胜任。此外,它还支持检索增强生成(RAG)、并行函数调用以及多种智能体工作流链。
llama-cpp-agent 非常适合 Python 开发者、AI 研究人员以及希望在本地的构建智能应用的技术人员使用。它具有极高的兼容性,支持 llama.cpp、TGI 和 vllm 等多种后端服务,并能无缝对接 Pydantic、llama-index 及 OpenAI 工具标准。无论是需要构建复杂的自动化代理流程,还是仅需简单的结构化数据提取,llama-cpp-agent 都能提供灵活且高效的解决方案。
需要注意的是,该项目目前已停止维护,官方建议新用户转向使用 ToolAgents 或其他更新的 Python 智能体框架,但其设计思路和技术实现仍具有重要的参考价值。
使用场景
某初创团队希望利用本地部署的轻量级大模型(如 7B 参数),构建一个能自动查询库存并生成标准 JSON 报告的智能客服系统,但受限于硬件资源无法使用超大模型或昂贵的云端 API。
没有 llama-cpp-agent 时
- 功能受限严重:选用的轻量级模型未经过专门的函数调用或 JSON 输出微调,经常输出废话而非程序可执行的代码或数据。
- 解析成本高昂:开发者需要编写复杂的正则表达式和错误重试逻辑,试图从模型不稳定的自由文本中“抠”出结构化数据,维护难度极大。
- 交互流程断裂:难以实现“先查询数据库再回答用户”的多步操作,模型无法可靠地触发外部 Python 函数,导致自动化流程频繁中断。
- 资源与效果难平衡:为了获得稳定的结构化输出,被迫升级硬件运行更大模型或转向付费云服务,显著增加了运营成本。
使用 llama-cpp-agent 后
- 解锁原生能力:利用引导采样(Guided Sampling)技术,强制 7B 小模型严格遵循预定义的 JSON 格式或函数签名,无需模型微调即可实现精准输出。
- 开发效率飞跃:直接定义 Pydantic 模型或 Python 函数,llama-cpp-agent 自动处理约束生成,彻底告别繁琐的正则解析和容错代码。
- 智能代理闭环:轻松构建代理链,让模型自主判断何时调用库存查询工具、何时整合信息回复用户,实现流畅的单次或并行函数执行。
- 本地低成本落地:在原有低配服务器上即可稳定运行具备复杂逻辑处理能力的智能体,无需额外硬件投入或依赖外部 API。
llama-cpp-agent 的核心价值在于通过语法约束技术,让资源受限的本地小模型也能具备企业级的结构化输出与工具调用能力,大幅降低了智能体应用的落地门槛。
运行环境要求
未说明(框架兼容 llama.cpp、TGI、vllm 等后端,具体 GPU 需求取决于所选后端及运行的模型大小)
未说明(取决于运行的 LLM 模型大小)

快速开始
llama-cpp-agent
已不再维护。请改用 ToolAgents 或其他 Python 代理框架。
[
]

简介
llama-cpp-agent 框架旨在简化与大型语言模型(LLMs)的交互。它提供了一个用于与 LLMs 聊天、执行函数调用、生成结构化输出、进行检索增强生成以及使用带有工具的代理链处理文本的接口。
该框架使用引导采样技术,将模型输出限制在用户定义的结构内。这样一来,即使未经微调以执行函数调用和 JSON 输出的模型也能做到这一点。
该框架兼容 llama.cpp 服务器、llama-cpp-python 及其服务器,以及 TGI 和 vllm 服务器。
主要特性
- 简单聊天界面:与 LLMs 进行无缝对话。
- 结构化输出:从 LLMs 生成结构化输出(对象)。
- 单次及并行函数调用:使用 LLMs 执行函数。
- RAG - 检索增强生成:结合 colbert 重排序进行检索增强生成。
- 代理链:使用带有工具的代理链处理文本,支持会话式、顺序式和映射式链。
- 引导采样:使大多数 7B 参数量的 LLMs 能够执行函数调用和结构化输出。这得益于语法和 JSON 模式的生成,用于引导采样。
- 多提供商支持:可作为提供商与 llama-cpp-python、llama.cpp 服务器、TGI 服务器和 vllm 服务器配合使用!
- 兼容性:兼容 Python 函数、Pydantic 工具、LlamaIndex 工具以及 OpenAI 工具模式。
- 灵活性:适用于各种应用场景,从日常聊天到特定功能的执行。
目录
安装
使用 pip 安装 llama-cpp-agent 框架:
pip install llama-cpp-agent
文档
您可以在[这里]找到最新文档!(https://llama-cpp-agent.readthedocs.io/en/latest/)
快速入门
您可以在[这里]找到快速入门指南!(https://llama-cpp-agent.readthedocs.io/en/latest/get-started/)
Discord 社区
加入 Discord 社区这里
使用示例
llama-cpp-agent 框架提供了大量示例,展示了其功能。以下是一些关键示例:
使用 llama.cpp 服务器后端的简单聊天示例
此示例演示如何使用 llama.cpp 服务器后端与 LLM 模型开始聊天。
并行函数调用代理示例
此示例展示了使用 FunctionCallingAgent 类进行并行函数调用。它演示了如何同时定义和执行多个函数。
结构化输出
此示例说明如何使用 StructuredOutputAgent 类生成结构化输出对象。它展示了如何从非结构化数据中创建一本书的数据条目。
RAG - 检索增强生成
此示例演示了带有 colbert 重排序的检索增强生成(RAG)。它需要安装可选的 rag 依赖项(ragatouille)。
LlamaIndex 工具示例
此示例展示了如何使用 LlamaIndex 工具和查询引擎与 FunctionCallingAgent 类一起使用。
顺序链示例
此示例演示了如何使用顺序链创建完整的产品发布活动。
映射链示例
此示例说明了如何创建映射链,将多篇文章总结为一篇摘要。
知识图谱创建示例
此示例基于 Instructor 库中关于 OpenAI 的一个例子,展示了如何使用 llama-cpp-agent 框架创建知识图谱。
附加信息
预定义消息格式化器
llama-cpp-agent 框架提供了预定义的消息格式化器,用于为 LLM 模型格式化消息。MessagesFormatterType 枚举定义了可用的格式化器:
MessagesFormatterType.MISTRAL:使用 MISTRAL 格式化消息。MessagesFormatterType.CHATML:使用 CHATML 格式化消息。MessagesFormatterType.VICUNA:使用 VICUNA 格式化消息。MessagesFormatterType.LLAMA_2:使用 LLAMA 2 格式化消息。MessagesFormatterType.SYNTHIA:使用 SYNTHIA 格式化消息。MessagesFormatterType.NEURAL_CHAT:使用 NEURAL CHAT 格式化消息。MessagesFormatterType.SOLAR:使用 SOLAR 格式化消息。MessagesFormatterType.OPEN_CHAT:使用 OPEN CHAT 格式化消息。MessagesFormatterType.ALPACA:使用 ALPACA 格式化消息。MessagesFormatterType.CODE_DS:使用 CODE DS 格式化消息。MessagesFormatterType.B22:使用 B22 格式化消息。MessagesFormatterType.LLAMA_3:使用 LLAMA 3 格式化消息。MessagesFormatterType.PHI_3:使用 PHI 3 格式化消息。MessagesFormatterType.AUTOCODER:使用 Autocoder 格式化消息。MessagesFormatterType.DEEP_SEEK_CODER_2:使用 DeepSeek Coder v2 格式化消息。
创建自定义消息格式化器
你可以通过使用所需参数实例化 MessagesFormatter 类来创建自己的自定义消息格式化器:
from llama_cpp_agent.messages_formatter import MessagesFormatter, PromptMarkers, Roles
custom_prompt_markers = {
Roles.system: PromptMarkers("<|system|>", "<|endsystem|>"),
Roles.user: PromptMarkers("<|user|>", "<|enduser|>"),
Roles.assistant: PromptMarkers("<|assistant|>", "<|endassistant|>"),
Roles.tool: PromptMarkers("<|tool|>", "<|endtool|>"),
}
custom_formatter = MessagesFormatter(
pre_prompt="",
prompt_markers=custom_prompt_markers,
include_sys_prompt_in_first_user_message=False,
default_stop_sequences=["<|endsystem|>", "<|enduser|>", "<|endassistant|>", "<|endtool|>"]
)
贡献
我们欢迎对 llama-cpp-agent 框架的贡献!如果您想参与贡献,请遵循以下指南:
- 克隆仓库并基于
master分支创建您的分支。 - 确保您的代码符合项目的编码风格和规范。
- 编写清晰、简洁的提交信息和拉取请求描述。
- 在提交拉取请求之前,彻底测试您的更改。
- 向
master分支发起拉取请求。
如果您遇到任何问题或有改进建议,请在 GitHub 仓库 上提交问题。
许可证
llama-cpp-agent 框架采用 MIT 许可证 发布。
常见问题解答
问:如何安装 RAG 的可选依赖项?
答:要使用 RAGColbertReranker 类和 RAG 示例,您需要安装 RAG 的可选依赖项(ragatouille)。可以通过运行 pip install llama-cpp-agent[rag] 来完成安装。
问:我可以为 llama-cpp-agent 项目做出贡献吗?
答:当然可以!我们非常欢迎社区的贡献。请参阅“贡献”部分,了解如何参与贡献的指南。
问:llama-cpp-agent 是否与最新版本的 llama-cpp-python 兼容?
答:是的,llama-cpp-agent 旨在与最新版本的 llama-cpp-python 配合使用。不过,如果您遇到任何兼容性问题,请在 GitHub 仓库中提交问题。
版本历史
0.2.352024/06/290.2.342024/06/230.2.332024/06/190.2.322024/06/120.2.312024/06/120.2.302024/06/110.2.292024/06/110.2.282024/06/110.2.272024/06/110.2.262024/06/110.2.252024/06/060.2.242024/06/050.2.232024/05/310.2.222024/05/310.2.212024/05/300.2.202024/05/270.2.192024/05/270.2.182024/05/260.2.172024/05/260.2.162024/05/26常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。