OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  llama-cpp-python — llama.cpp 的 Python 封装,便于本地跑大模型

llama-cpp-python — llama.cpp 的 Python 封装,便于本地跑大模型

 
  blue ·  2026-04-06 11:00:25 · 4 次点击  · 0 条评论  

llama.cpp 的 Python 绑定

Documentation Status
Tests
PyPI
PyPI - Python Version
PyPI - License
PyPI - Downloads
Github All Releases

@ggerganovllama.cpp 库提供的简单 Python 绑定。此包提供:

完整文档请访问 https://llama-cpp-python.readthedocs.io/en/latest

安装

要求:

  • Python 3.8+
  • C 编译器
    • Linux: gcc 或 clang
    • Windows: Visual Studio 或 MinGW
    • MacOS: Xcode

运行以下命令安装包:

pip install llama-cpp-python

这将同时从源码构建 llama.cpp 并将其与此 Python 包一起安装。

如果安装失败,请在 pip install 命令后添加 --verbose 以查看完整的 cmake 构建日志。

预构建的 Wheel(新功能)

也可以安装一个具有基础 CPU 支持的预构建 wheel。

pip install llama-cpp-python \
  --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cpu

安装配置

llama.cpp 支持多种硬件加速后端以提升推理速度,以及后端特定的选项。完整列表请参阅 llama.cpp README

所有 llama.cpp 的 cmake 构建选项都可以通过 CMAKE_ARGS 环境变量或在安装期间通过 --config-settings / -C 命令行标志来设置。

环境变量
# Linux 和 Mac
CMAKE_ARGS="-DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS" \
  pip install llama-cpp-python
# Windows
$env:CMAKE_ARGS = "-DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS"
pip install llama-cpp-python
CLI / requirements.txt 也可以通过 `pip install -C / --config-settings` 命令设置,并保存到 `requirements.txt` 文件中:
pip install --upgrade pip # 确保 pip 是最新版本
pip install llama-cpp-python \
  -C cmake.args="-DGGML_BLAS=ON;-DGGML_BLAS_VENDOR=OpenBLAS"
# requirements.txt

llama-cpp-python -C cmake.args="-DGGML_BLAS=ON;-DGGML_BLAS_VENDOR=OpenBLAS"

支持的后端

以下是一些常见的后端、它们的构建命令以及所需的额外环境变量。

OpenBLAS (CPU) 要安装 OpenBLAS 支持,请在安装前设置 `GGML_BLAS` 和 `GGML_BLAS_VENDOR` 环境变量:
CMAKE_ARGS="-DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS" pip install llama-cpp-python
CUDA 要安装 CUDA 支持,请在安装前设置 `GGML_CUDA=on` 环境变量:
CMAKE_ARGS="-DGGML_CUDA=on" pip install llama-cpp-python
**预构建的 Wheel(新功能)** 也可以安装具有 CUDA 支持的预构建 wheel。只要您的系统满足以下要求: - CUDA 版本为 12.1、12.2、12.3、12.4 或 12.5 - Python 版本为 3.10、3.11 或 3.12
pip install llama-cpp-python \
  --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/<cuda-version>
其中 `` 是以下之一: - `cu121`: CUDA 12.1 - `cu122`: CUDA 12.2 - `cu123`: CUDA 12.3 - `cu124`: CUDA 12.4 - `cu125`: CUDA 12.5 例如,安装 CUDA 12.1 的 wheel:
pip install llama-cpp-python \
  --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu121
Metal 要安装 Metal (MPS) 支持,请在安装前设置 `GGML_METAL=on` 环境变量:
CMAKE_ARGS="-DGGML_METAL=on" pip install llama-cpp-python
**预构建的 Wheel(新功能)** 也可以安装具有 Metal 支持的预构建 wheel。只要您的系统满足以下要求: - MacOS 版本为 11.0 或更高 - Python 版本为 3.10、3.11 或 3.12
pip install llama-cpp-python \
  --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/metal
hipBLAS (ROCm) 要为 AMD 显卡安装 hipBLAS / ROCm 支持,请在安装前设置 `GGML_HIPBLAS=on` 环境变量:
CMAKE_ARGS="-DGGML_HIPBLAS=on" pip install llama-cpp-python
Vulkan 要安装 Vulkan 支持,请在安装前设置 `GGML_VULKAN=on` 环境变量:
CMAKE_ARGS="-DGGML_VULKAN=on" pip install llama-cpp-python
SYCL 要安装 SYCL 支持,请在安装前设置 `GGML_SYCL=on` 环境变量:
source /opt/intel/oneapi/setvars.sh   
CMAKE_ARGS="-DGGML_SYCL=on -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx" pip install llama-cpp-python
RPC 要安装 RPC 支持,请在安装前设置 `GGML_RPC=on` 环境变量:
source /opt/intel/oneapi/setvars.sh   
CMAKE_ARGS="-DGGML_RPC=on" pip install llama-cpp-python

Windows 注意事项

错误:找不到 'nmake' 或 'CMAKE_C_COMPILER' 如果遇到无法找到 `'nmake'` `'?'` 或 CMAKE_C_COMPILER 的问题,可以按照 [llama.cpp 仓库中的说明](https://github.com/ggerganov/llama.cpp#openblas) 提取 w64devkit,并在运行 `pip install` 之前手动将这些路径添加到 CMAKE_ARGS 中:
$env:CMAKE_GENERATOR = "MinGW Makefiles"
$env:CMAKE_ARGS = "-DGGML_OPENBLAS=on -DCMAKE_C_COMPILER=C:/w64devkit/bin/gcc.exe -DCMAKE_CXX_COMPILER=C:/w64devkit/bin/g++.exe"
请参考上述说明,并根据需要将 `CMAKE_ARGS` 设置为您想要使用的 BLAS 后端。

MacOS 注意事项

详细的 MacOS Metal GPU 安装文档请访问 docs/install/macos.md

M1 Mac 性能问题 注意:如果您使用的是 Apple Silicon (M1) Mac,请确保安装了支持 arm64 架构的 Python 版本。例如:
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh
bash Miniforge3-MacOSX-arm64.sh
否则,安装过程中会构建 llama.cpp 的 x86 版本,这在 Apple Silicon (M1) Mac 上会慢 10 倍。
M 系列 Mac 错误:`(mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64'))` 尝试使用以下命令安装:
CMAKE_ARGS="-DCMAKE_OSX_ARCHITECTURES=arm64 -DCMAKE_APPLE_SILICON_PROCESSOR=arm64 -DGGML_METAL=on" pip install --upgrade --verbose --force-reinstall --no-cache-dir llama-cpp-python

升级和重新安装

要升级并重新构建 llama-cpp-python,请在 pip install 命令中添加 --upgrade --force-reinstall --no-cache-dir 标志,以确保从源码重新构建包。

高级 API

API 参考

高级 API 通过 Llama 类提供了一个简单的托管接口。

以下是一个简短的示例,演示如何使用高级 API 进行基本的文本补全:

from llama_cpp import Llama

llm = Llama(
      model_path="./models/7B/llama-model.gguf",
      # n_gpu_layers=-1, # 取消注释以使用 GPU 加速
      # seed=1337, # 取消注释以设置特定种子
      # n_ctx=2048, # 取消注释以增加上下文窗口
)
output = llm(
      "Q: Name the planets in the solar system? A: ", # 提示词
      max_tokens=32, # 最多生成 32 个 token,设置为 None 则生成到上下文窗口结束
      stop=["Q:", "\n"], # 在模型即将生成新问题前停止
      echo=True # 在输出中回显提示词
) # 生成补全,也可以调用 create_completion
print(output)

默认情况下,llama-cpp-python 以 OpenAI 兼容的格式生成补全:

{
  "id": "cmpl-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "object": "text_completion",
  "created": 1679561337,
  "model": "./models/7B/llama-model.gguf",
  "choices": [
    {
      "text": "Q: Name the planets in the solar system? A: Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune and Pluto.",
      "index": 0,
      "logprobs": None,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 14,
    "completion_tokens": 28,
    "total_tokens": 42
  }
}

文本补全功能可通过 Llama 类的 __call__create_completion 方法使用。

从 Hugging Face Hub 拉取模型

您可以使用 from_pretrained 方法直接从 Hugging Face 下载 gguf 格式的 Llama 模型。
您需要安装 huggingface-hub 包才能使用此功能 (pip install huggingface-hub)。

llm = Llama.from_pretrained(
    repo_id="lmstudio-community/Qwen3.5-0.8B-GGUF",
    filename="*Q8_0.gguf",
    verbose=False
)

默认情况下,from_pretrained 会将模型下载到 huggingface 缓存目录,然后您可以使用 hf 工具管理已安装的模型文件。

聊天补全

高级 API 还为聊天补全提供了一个简单的接口。

聊天补全要求模型知道如何将消息格式化为单个提示。Llama 类通过预注册的聊天格式(例如 chatmlllama-2gemma 等)或通过提供自定义聊天处理程序对象来实现这一点。

模型将按照以下优先级顺序将消息格式化为单个提示:
- 如果提供了 chat_handler,则使用它
- 如果提供了 chat_format,则使用它
- 使用 gguf 模型元数据中的 tokenizer.chat_template(对于大多数新模型应该有效,旧模型可能没有此信息)
- 否则,回退到 llama-2 聊天格式

设置 verbose=True 可以查看选中的聊天格式。

from llama_cpp import Llama
llm = Llama(
      model_path="path/to/llama-2/llama-model.gguf",
      chat_format="llama-2"
)
llm.create_chat_completion(
      messages = [
          {"role": "system", "content": "You are an assistant who perfectly describes images."},
          {
              "role": "user",
              "content": "Describe this image in detail please."
          }
      ]
)

聊天补全功能可通过 Llama 类的 create_chat_completion 方法使用。

为了兼容 OpenAI API v1,您可以使用 create_chat_completion_openai_v1 方法,该方法将返回 pydantic 模型而不是字典。

JSON 和 JSON Schema 模式

要将聊天响应限制为仅有效的 JSON 或特定的 JSON Schema,请在 create_chat_completion 中使用 response_format 参数。

JSON 模式

以下示例将把响应限制为仅有效的 JSON 字符串。

```python
from llama_cpp import Llama
llm = Llama(model_path="path/to/model.gguf", chat_format="chatml")
llm.create_chat_completion(
messages=[
{
"role": "system",
"content": "You are a helpful assistant that outputs in JSON.",
},
{"role

4 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 18 ms
Developed with Cursor