项目介绍:llama-cpp-agent
llama-cpp-agent 是一个框架工具,旨在简化与大型语言模型(LLMs)的互动。它为用户提供了一个便捷的界面来与语言模型聊天、执行功能调用、生成结构化输出、进行检索增强生成,以及通过工具链处理文本。该框架通过引导采样将模型的输出限制在用户定义的结构中,即使是未经过微调的模型也能够进行功能调用和 JSON 输出。
此框架与多个服务器和工具兼容,包括 llama.cpp server、llama-cpp-python 及其服务器,以及 TGI 和 vllm 服务器。
主要特性
- 简单的聊天界面:支持无缝与语言模型进行对话。
- 结构化输出:能够从语言模型生成结构化输出(对象)。
- 单一与并行功能调用:可以通过语言模型执行函数。
- RAG - 检索增强生成:进行具有 Colbert 重排序的检索增强生成。
- 代理链:支持使用工具的代理链来处理文本,包括对话链、顺序链和映射链。
- 引导采样:大多数 7B LLMs 都能够进行函数调用和结构化输出,得益于语法和 JSON 模式生成的引导采样。
- 多个提供者:兼容 llama-cpp-python、llama.cpp 服务器、TGI 服务器和 vllm 服务器。
- 兼容性:可以与 Python 函数、Pydantic工具、llama-index 工具以及 OpenAI 工具模式一起使用。
- 灵活性:适用于从日常聊天到特定功能执行的各种应用场景。
安装
用户可以通过 pip 进行简单安装:
pip install llama-cpp-agent
文档
最新的文档可以在 这里 找到。如需快速入门指南,可以访问 这里。
社区与支持
用户可以加入 Discord 社区 找到支持与交流机会。
使用示例
llama-cpp-agent 框架提供了多个示例展示其功能:
- 简单聊天示例:展示如何使用 llama.cpp 服务器后台与语言模型进行对话。
- 并行功能调用示例:通过 FunctionCallingAgent 类并行执行多个函数。
- 结构化输出示例:使用 StructuredOutputAgent 类生成结构化输出对象。
- 检索增强生成(RAG)示例:进行带有 Colbert 重排序的检索增强生成。
- llama-index 工具示例:展示如何使用 FunctionCallingAgent 类与 llama-index 工具和查询引擎。
- 顺序链示例:展示如何创建完整的产品发布活动的顺序链。
- 映射链示例:展示如何创建映射链以总结多篇文章。
- 知识图谱创建示例:基于 OpenAI 的 Instructor 库示例,展示如何创建知识图谱。
贡献
llama-cpp-agent 框架欢迎用户贡献。如果您希望贡献,可以遵循以下指南:
- 从
master
分支 fork 仓库并创建您的分支。 - 确保代码遵循项目的编码风格和惯例。
- 提交清晰、简洁的提交信息和拉取请求描述。
- 在提交拉取请求之前,彻底测试您的更改。
- 向
master
分支提交拉取请求。
如果遇到任何问题或有改进建议,请在 GitHub 仓库 上提交问题。
许可证
llama-cpp-agent 框架采用 MIT 许可证 发布。
常见问题
- 如何安装 RAG 的可选依赖项? 使用 RAGColbertReranker 类和 RAG 示例需要安装可选的 RAG 依赖项。可以通过运行
pip install llama-cpp-agent[rag]
来完成。 - 可以为 llama-cpp-agent 项目做贡献吗? 当然可以!我们欢迎来自社区的贡献。请参考 贡献 部分以获得相关指南。
- llama-cpp-agent 支持最新版本的 llama-cpp-python 吗? 是的,该框架设计与最新版本的 llama-cpp-python 兼容。如果遇到任何兼容性问题,请在 GitHub 仓库中提交问题。