llama.cpp python 库是@ggerganovllama.cpp 的简单 Python 绑定。 此包提供:
- 通过 ctypes 接口低级访问 C API。
- 用于文本完成的高级 Python API
OpenAI风格 APILangChain兼容性LlamaIndex兼容性- 兼容 OpenAI 的 Web 服务器
- 本地 Copilot 替代品
- 支持 Function Calling
- 支持 Vision API
- 多模型支持
概述
集成详情
| 类 | 包 | 可序列化 | JavaScript 支持 |
|---|---|---|---|
ChatLlamaCpp | langchain-community | ❌ | ❌ |
模型功能
| 工具调用 | 结构化输出 | 图像输入 | 音频输入 | 视频输入 | Token 级流式传输 | 原生异步 | Token 使用情况 | Logprobs |
|---|---|---|---|---|---|---|---|---|
| ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ |
设置
为了开始并使用下面展示的所有功能,我们建议使用经过微调以支持工具调用的模型。 我们将使用 NousResearch 的 Hermes-2-Pro-Llama-3-8B-GGUF。Hermes 2 Pro 是 Nous Hermes 2 的升级版本,包含更新和清理过的 OpenHermes 2.5 数据集,以及内部新开发的 Function Calling 和 JSON Mode 数据集。这个新版本的 Hermes 保持了其出色的通用任务和对话能力——而且在 Function Calling 方面表现出色。查看我们的本地模型指南以深入了解:
安装
LangChain LlamaCpp 集成位于langchain-community 和 llama-cpp-python 包中:
实例化
现在我们可以实例化模型对象并生成聊天完成:调用
工具调用
首先,它的工作方式与 OpenAI Function Calling 基本相同。 OpenAI 有一个 tool calling(我们在此互换使用“工具调用”和“函数调用”)API,它允许你描述工具及其参数,并让模型返回一个包含要调用的工具及该工具输入的 JSON 对象。工具调用对于构建工具使用链和代理非常有用,并且通常用于从模型获取结构化输出。 使用ChatLlamaCpp.bind_tools,我们可以轻松地将 Pydantic 类、dict 模式、LangChain 工具甚至函数作为工具传递给模型。在底层,这些被转换为 OpenAI 工具模式,如下所示:
{"type": "function", "function": {"name": <<tool_name>>}}.
结构化输出
流式传输
连接这些文档 到 Claude, VSCode 等 via MCP 以获得实时答案。

