2023-05-10 17:38:32 +00:00
|
|
|
# Python GPT4All
|
|
|
|
|
2023-05-11 15:02:44 +00:00
|
|
|
This package contains a set of Python bindings around the `llmodel` C-API.
|
2023-05-10 17:38:32 +00:00
|
|
|
|
2023-06-08 17:43:31 +00:00
|
|
|
Package on PyPI: https://pypi.org/project/gpt4all/
|
|
|
|
|
2023-05-12 14:30:03 +00:00
|
|
|
## Documentation
|
2023-06-08 17:43:31 +00:00
|
|
|
https://docs.gpt4all.io/gpt4all_python.html
|
2023-05-12 14:30:03 +00:00
|
|
|
|
2023-05-11 18:29:17 +00:00
|
|
|
## Installation
|
|
|
|
|
2024-01-22 00:53:55 +00:00
|
|
|
The easiest way to install the Python bindings for GPT4All is to use pip:
|
|
|
|
|
2023-05-11 18:29:17 +00:00
|
|
|
```
|
|
|
|
pip install gpt4all
|
|
|
|
```
|
2023-05-10 17:38:32 +00:00
|
|
|
|
2024-01-22 00:53:55 +00:00
|
|
|
This will download the latest version of the `gpt4all` package from PyPI.
|
|
|
|
|
|
|
|
## Local Build
|
|
|
|
|
|
|
|
As an alternative to downloading via pip, you may build the Python bindings from source.
|
2023-05-10 17:38:32 +00:00
|
|
|
|
2023-10-18 16:09:52 +00:00
|
|
|
### Prerequisites
|
|
|
|
|
|
|
|
On Windows and Linux, building GPT4All requires the complete Vulkan SDK. You may download it from here: https://vulkan.lunarg.com/sdk/home
|
|
|
|
|
|
|
|
macOS users do not need Vulkan, as GPT4All will use Metal instead.
|
|
|
|
|
|
|
|
### Building the python bindings
|
|
|
|
|
2024-01-22 00:53:55 +00:00
|
|
|
1. Clone GPT4All and change directory:
|
|
|
|
```
|
|
|
|
git clone --recurse-submodules https://github.com/nomic-ai/gpt4all.git
|
|
|
|
cd gpt4all/gpt4all-backend
|
|
|
|
```
|
|
|
|
|
|
|
|
2. Build the backend.
|
2023-05-16 19:29:27 +00:00
|
|
|
|
2024-01-22 00:53:55 +00:00
|
|
|
If you are using Windows and have Visual Studio installed:
|
|
|
|
```
|
|
|
|
cmake -B build
|
|
|
|
cmake --build build --parallel --config RelWithDebInfo
|
|
|
|
```
|
2023-05-10 17:38:32 +00:00
|
|
|
|
2024-01-22 00:53:55 +00:00
|
|
|
For all other platforms:
|
2023-05-10 17:38:32 +00:00
|
|
|
```
|
2024-01-22 00:53:55 +00:00
|
|
|
cmake -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo
|
|
|
|
cmake --build build --parallel
|
2023-05-10 17:38:32 +00:00
|
|
|
```
|
|
|
|
|
2024-01-22 00:53:55 +00:00
|
|
|
`RelWithDebInfo` is a good default, but you can also use `Release` or `Debug` depending on the situation.
|
2023-05-10 17:38:32 +00:00
|
|
|
|
2024-01-22 00:53:55 +00:00
|
|
|
2. Install the Python package:
|
2023-05-10 17:38:32 +00:00
|
|
|
```
|
2023-05-10 17:48:36 +00:00
|
|
|
cd ../../gpt4all-bindings/python
|
2024-01-22 00:53:55 +00:00
|
|
|
pip install -e .
|
2023-05-10 17:38:32 +00:00
|
|
|
```
|
|
|
|
|
2023-06-09 08:13:35 +00:00
|
|
|
## Usage
|
|
|
|
|
|
|
|
Test it out! In a Python script or console:
|
2023-05-10 17:38:32 +00:00
|
|
|
|
|
|
|
```python
|
|
|
|
from gpt4all import GPT4All
|
2023-10-22 15:58:28 +00:00
|
|
|
model = GPT4All("orca-mini-3b-gguf2-q4_0.gguf")
|
2023-07-01 22:52:39 +00:00
|
|
|
output = model.generate("The capital of France is ", max_tokens=3)
|
2023-09-01 17:01:40 +00:00
|
|
|
print(output)
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
GPU Usage
|
|
|
|
```python
|
|
|
|
from gpt4all import GPT4All
|
2023-10-22 15:58:28 +00:00
|
|
|
model = GPT4All("orca-mini-3b-gguf2-q4_0.gguf", device='gpu') # device='amd', device='intel'
|
2023-09-01 17:01:40 +00:00
|
|
|
output = model.generate("The capital of France is ", max_tokens=3)
|
2023-07-01 22:52:39 +00:00
|
|
|
print(output)
|
2023-05-10 17:38:32 +00:00
|
|
|
```
|
2023-06-18 18:08:43 +00:00
|
|
|
|
|
|
|
## Troubleshooting a Local Build
|
|
|
|
- If you're on Windows and have compiled with a MinGW toolchain, you might run into an error like:
|
|
|
|
```
|
|
|
|
FileNotFoundError: Could not find module '<...>\gpt4all-bindings\python\gpt4all\llmodel_DO_NOT_MODIFY\build\libllmodel.dll'
|
|
|
|
(or one of its dependencies). Try using the full path with constructor syntax.
|
|
|
|
```
|
|
|
|
The key phrase in this case is _"or one of its dependencies"_. The Python interpreter you're using
|
|
|
|
probably doesn't see the MinGW runtime dependencies. At the moment, the following three are required:
|
|
|
|
`libgcc_s_seh-1.dll`, `libstdc++-6.dll` and `libwinpthread-1.dll`. You should copy them from MinGW
|
|
|
|
into a folder where Python will see them, preferably next to `libllmodel.dll`.
|
|
|
|
|
|
|
|
- Note regarding the Microsoft toolchain: Compiling with MSVC is possible, but not the official way to
|
|
|
|
go about it at the moment. MSVC doesn't produce DLLs with a `lib` prefix, which the bindings expect.
|
|
|
|
You'd have to amend that yourself.
|