gpt4all/gpt4all-bindings/python
Jacob Nguyen 4e55940edf
feat(typescript)/dynamic template (#1287) (#1326)
* feat(typescript)/dynamic template (#1287)

* remove packaged yarn

* prompt templates update wip

* prompt template update

* system prompt template, update types, remove embed promises, cleanup

* support both snakecased and camelcased prompt context

* fix #1277 libbert, libfalcon and libreplit libs not being moved into the right folder after build

* added support for modelConfigFile param, allowing the user to specify a local file instead of downloading the remote models.json. added a warning message if code fails to load a model config. included prompt context docs by amogus.

* snakecase warning, put logic for loading local models.json into listModels, added constant for the default remote model list url, test improvements, simpler hasOwnProperty call

* add DEFAULT_PROMPT_CONTEXT, export new constants

* add md5sum testcase and fix constants export

* update types

* throw if attempting to list models without a source

* rebuild docs

* fix download logging undefined url, toFixed typo, pass config filesize in for future progress report

* added overload with union types

* bump to 2.2.0, remove alpha

* code speling

---------

Co-authored-by: Andreas Obersteiner <8959303+iimez@users.noreply.github.com>
2023-08-14 12:45:45 -04:00
..
docs feat(typescript)/dynamic template (#1287) (#1326) 2023-08-14 12:45:45 -04:00
gpt4all black & isort 2023-07-31 01:34:06 +02:00
.gitignore transfer python bindings code 2023-05-10 13:38:32 -04:00
.isort.cfg Python Bindings: Improved unit tests, documentation and unification of API (#1090) 2023-06-30 16:02:02 -04:00
LICENSE.txt transfer python bindings code 2023-05-10 13:38:32 -04:00
makefile python bindings: typing fixes, misc fixes (#1131) 2023-07-03 21:30:24 -04:00
MANIFEST.in transfer python bindings code 2023-05-10 13:38:32 -04:00
mkdocs.yml Move Chat GUI out of the Bindings group in the docs navigation. 2023-07-31 01:34:06 +02:00
README.md Add build hint to Python Readme 2023-07-31 01:34:06 +02:00
setup.py Python version bump 2023-07-27 12:19:23 -04:00

Python GPT4All

This package contains a set of Python bindings around the llmodel C-API.

Package on PyPI: https://pypi.org/project/gpt4all/

Documentation

https://docs.gpt4all.io/gpt4all_python.html

Installation

pip install gpt4all

Local Build Instructions

NOTE: If you are doing this on a Windows machine, you must build the GPT4All backend using MinGW64 compiler.

  1. Setup llmodel
git clone --recurse-submodules git@github.com:nomic-ai/gpt4all.git
cd gpt4all/gpt4all-backend/
mkdir build
cd build
cmake ..
cmake --build . --parallel  # optionally append: --config Release

Confirm that libllmodel.* exists in gpt4all-backend/build.

  1. Setup Python package
cd ../../gpt4all-bindings/python
pip3 install -e .

Usage

Test it out! In a Python script or console:

from gpt4all import GPT4All
model = GPT4All("orca-mini-3b.ggmlv3.q4_0.bin")
output = model.generate("The capital of France is ", max_tokens=3)
print(output)

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.