菜单

Python 绑定

相关源文件

此页面记录了 GPT4All 的 Python 绑定,它提供了一种从 Python 应用程序以编程方式与 GPT4All 模型交互的方式。Python 接口能够以最少的代码加载模型、生成文本和创建嵌入,同时支持 GPT4All 的全部功能。

有关基于这些绑定的命令行界面的信息,请参阅 CLI 界面

概述

GPT4All Python 绑定包含一个简化了 GPT4All 模型使用的高级 API,以及与 C/C++ llmodel 后端的低级绑定。这些绑定允许 Python 开发人员

  1. 本地加载和运行大型语言模型
  2. 生成文本补全和进行聊天对话
  3. 为文本处理和向量搜索创建嵌入
  4. 访问兼容硬件上的 GPU 加速

Python 绑定的设计直观,同时仍然暴露底层 C/C++ 引擎的功能。

来源

安装

可以使用 pip 直接从 PyPI 安装 Python 绑定

为兼容系统上的 CUDA 提供支持

出于开发目的

从源代码构建

从源代码构建

  1. 克隆 GPT4All 仓库
  1. 构建后端
  1. 安装 Python 包

来源

架构

Python 绑定采用分层架构,将 Python 代码桥接到底层的 C/C++ 实现。

来源

关键组件

  1. GPT4All 类:处理模型加载、文本生成和聊天会话的主要面向用户的 API。
  2. Embed4All 类:用于从文本生成嵌入的专用类。
  3. LLModel 类:通过 ctypes 与 C/C++ 后端进行交互的低级接口。
  4. ChatSession:表示一个带有上下文的持续聊天对话。

这些组件之间的通信流程如下:

来源

用途

基本文本生成

聊天会话

生成嵌入

使用 GPU 加速

来源

模型管理

GPT4All Python 绑定包括发现、下载和管理模型的功能。

列出可用模型

下载模型

模型在首次实例化时如果本地不存在,则会自动下载

手动下载模型

来源

高级配置

生成参数

generate 方法接受几个参数来控制文本生成

参数描述默认
max_tokens要生成的最大 token 数200
temp温度(越高越有创意,越低越专注)0.7
top_k将词汇限制在前 K 个选项40
top_p将词汇限制在构成前 P 概率质量的选项0.4
min_p仅对概率至少为该值的 token 进行采样0.0
repeat_penalty重复token的惩罚1.18
repeat_last_n应用重复惩罚的范围64
n_batch要并行处理的提示 token 数量8
streaming是否在生成 token 时进行流式传输

示例

线程管理

控制用于推理的 CPU 线程数

来源

低级集成

Python 绑定使用 ctypes 来与 C/C++ llmodel 库进行接口,该库提供了模型执行的核心功能。本节介绍 Python 与原生代码之间的集成。

低级集成的关键组件

  1. LLModel 类:创建和管理 C 模型句柄的 Python 包装器
  2. 回调函数:允许在生成 token 时将 token 从 C 传递回 Python
  3. ctypes 类型定义:将 C 类型映射到 Python 以用于参数和结构
  4. 内存管理:确保模型资源的正确清理

来源

库加载过程

绑定程序根据操作系统动态加载适当的 llmodel

Python 安装过程在安装期间会将必要的 C 库文件和头文件复制到 Python 包目录。

来源

常见问题和故障排除

Windows 上缺少库

在 Windows 上,Python 绑定需要 Microsoft Visual C++ 运行时库。如果缺少这些库,您将收到一条错误消息,其中包含从 Microsoft 下载它们的说明。

The Microsoft Visual C++ runtime libraries were not found. Please install them from
https://aka.ms/vs/17/release/vc_redist.x64.exe

CUDA 支持

要在 Windows 和 Linux 上启用 CUDA 支持,请安装 CUDA 附加组件

如果您使用的是自定义构建并且收到有关缺少 CUDA 库的错误,则可以手动安装它们

资源使用

大型模型可能需要大量内存。如果您遇到内存不足的错误

  1. 尝试使用较低量化级别的较小模型(例如,Q4_0 变体)
  2. 减小上下文窗口大小(n_ctx 参数)
  3. 如果您的 GPU VRAM 有限,请使用 CPU 模式而不是 GPU 模式

来源

近期更新与版本历史

Python 绑定保持活跃维护,并定期更新。近期一些值得注意的更改包括:

  • 为输入与之前上下文共享前缀时,增加了缓存以加快预填充速度
  • 增加了修改或替换活动聊天会话历史记录的功能
  • 修复了与各种 Python 版本的不兼容问题
  • 增加了对包括 GPT-NeoX、Gemma 2、OpenELM、ChatGLM 等新型号架构的支持
  • 改进了 GPU 加速支持

有关更改的完整列表,请参阅 CHANGELOG.md 文件。

来源

与其他组件的关系

Python 绑定在更广泛的 GPT4All 生态系统中的作用如下:

Python 绑定既可作为 Python 开发者的直接接口,也可作为命令行界面 (CLI) 的基础。它们通过通用的 llmodel C API 与桌面应用程序共享相同的后端。

来源