Skip to main content

Python bindings for llama.cpp

Project description

PyLLaMaCpp

Python bindings for llama.cpp + A simple web UI


For those who don't know, llama.cpp is a port of Facebook's LLaMA model in pure C/C++.

The main features are:

  • Plain C/C++ implementation without dependencies
  • Apple silicon first-class citizen - optimized via ARM NEON
  • AVX2 support for x86 architectures
  • Mixed F16 / F32 precision
  • 4-bit quantization support
  • Runs on the CPU

Table of contents

Installation

  1. The easy way is to use the prebuilt wheels
pip install pyllamacpp

However, the compilation process of llama.cpp is taking into account the architecture of the target CPU, so you might need to build it from source:

git clone --recursive https://github.com/abdeladim-s/pyllamacpp && cd pyllamacpp
pip install .

Usage

Web UI

The package contains a simple web UI to test the bindings:

  • Lightweight, and easy to use.
  • Only needs Python.
  • Has the option to convert the models to ggml format.
  • A code like editor.
  • Different options to tweak the llama.cpp parameters.
  • Ability to export the generated text.

From the command line, run:

pyllamacpp-webui

That's it!
A web page will be opened on your default browser, otherwise navigate to the links provided by the command.

Python bindings

You can call the package directly from Python, if you want to create your own scripts or APIs:

from pyllamacpp.model import Model

def new_text_callback(text: str):
    print(text, end="")

model = Model(ggml_model='./models/ggml-model-f16-q4_0.bin', n_ctx=512)
model.generate("hello, my name is ", n_predict=55, new_text_callback=new_text_callback)

If you don't want to use the callback, you can get the results from the generate method once the inference is finished:

generated_text = model.generate("hello, my name is ", n_predict=55)
print(generated_text)

You can always refer to the short documentation for more details.

Discussions and contributions

If you find any bug, please open an issue.

If you have any feedback, or you want to share how you are using this project, feel free to use the Discussions and open a new topic.

License

This project is licensed under the same license as llama.cpp (MIT License).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyllamacpp-1.0.0.tar.gz (214.0 kB view hashes)

Uploaded Source

Built Distributions

pyllamacpp-1.0.0-pp39-pypy39_pp73-win_amd64.whl (196.5 kB view hashes)

Uploaded PyPy Windows x86-64

pyllamacpp-1.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (266.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

pyllamacpp-1.0.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (277.5 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

pyllamacpp-1.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (225.9 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

pyllamacpp-1.0.0-pp38-pypy38_pp73-win_amd64.whl (196.4 kB view hashes)

Uploaded PyPy Windows x86-64

pyllamacpp-1.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (266.8 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

pyllamacpp-1.0.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (277.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

pyllamacpp-1.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (226.0 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

pyllamacpp-1.0.0-cp311-cp311-win_amd64.whl (197.3 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

pyllamacpp-1.0.0-cp311-cp311-win32.whl (162.8 kB view hashes)

Uploaded CPython 3.11 Windows x86

pyllamacpp-1.0.0-cp311-cp311-musllinux_1_1_x86_64.whl (786.0 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

pyllamacpp-1.0.0-cp311-cp311-musllinux_1_1_i686.whl (846.3 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

pyllamacpp-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (266.5 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pyllamacpp-1.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (276.6 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

pyllamacpp-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl (226.8 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

pyllamacpp-1.0.0-cp311-cp311-macosx_10_9_universal2.whl (415.5 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

pyllamacpp-1.0.0-cp310-cp310-win_amd64.whl (197.4 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

pyllamacpp-1.0.0-cp310-cp310-win32.whl (162.8 kB view hashes)

Uploaded CPython 3.10 Windows x86

pyllamacpp-1.0.0-cp310-cp310-musllinux_1_1_x86_64.whl (785.3 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

pyllamacpp-1.0.0-cp310-cp310-musllinux_1_1_i686.whl (846.3 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

pyllamacpp-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (266.5 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pyllamacpp-1.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (276.6 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

pyllamacpp-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl (226.7 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

pyllamacpp-1.0.0-cp310-cp310-macosx_10_9_universal2.whl (415.5 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

pyllamacpp-1.0.0-cp39-cp39-win_amd64.whl (197.5 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

pyllamacpp-1.0.0-cp39-cp39-win32.whl (162.8 kB view hashes)

Uploaded CPython 3.9 Windows x86

pyllamacpp-1.0.0-cp39-cp39-musllinux_1_1_x86_64.whl (786.2 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

pyllamacpp-1.0.0-cp39-cp39-musllinux_1_1_i686.whl (847.7 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

pyllamacpp-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (266.7 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pyllamacpp-1.0.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (276.9 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

pyllamacpp-1.0.0-cp39-cp39-macosx_10_9_x86_64.whl (226.9 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

pyllamacpp-1.0.0-cp39-cp39-macosx_10_9_universal2.whl (415.7 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

pyllamacpp-1.0.0-cp38-cp38-win_amd64.whl (197.3 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

pyllamacpp-1.0.0-cp38-cp38-win32.whl (162.8 kB view hashes)

Uploaded CPython 3.8 Windows x86

pyllamacpp-1.0.0-cp38-cp38-musllinux_1_1_x86_64.whl (786.2 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

pyllamacpp-1.0.0-cp38-cp38-musllinux_1_1_i686.whl (847.2 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

pyllamacpp-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (266.4 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

pyllamacpp-1.0.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (276.5 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

pyllamacpp-1.0.0-cp38-cp38-macosx_10_9_x86_64.whl (226.7 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

pyllamacpp-1.0.0-cp38-cp38-macosx_10_9_universal2.whl (415.6 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page