llama.cpp
Binding Python sederhana untuk perpustakaan llama.cpp
@ggerganov . Paket ini menyediakan:
ctypes
.Dokumentasi tersedia di https://llama-cpp-python.readthedocs.io/en/latest.
Persyaratan:
Untuk menginstal paket, jalankan:
pip install llama-cpp-python
Ini juga akan membangun llama.cpp
dari sumber dan menginstalnya bersama paket python ini.
Jika gagal, tambahkan --verbose
ke pip install
lihat log build cmake lengkap.
Roda Pra-bangun (Baru)
Dimungkinkan juga untuk memasang roda yang sudah dibuat sebelumnya dengan dukungan CPU dasar.
pip install llama-cpp-python
--extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cpu
llama.cpp
mendukung sejumlah backend akselerasi perangkat keras untuk mempercepat inferensi serta opsi spesifik backend. Lihat README llama.cpp untuk daftar lengkap.
Semua opsi build cmake llama.cpp
dapat diatur melalui variabel lingkungan CMAKE_ARGS
atau melalui flag cli --config-settings / -C
selama instalasi.
# Linux and 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
Mereka juga dapat diatur melalui perintah pip install -C / --config-settings
dan disimpan ke file requirements.txt
:
pip install --upgrade pip # ensure pip is up to date
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"
Di bawah ini adalah beberapa backend umum, perintah build-nya, dan variabel lingkungan tambahan apa pun yang diperlukan.
Untuk menginstal dengan OpenBLAS, setel variabel lingkungan GGML_BLAS
dan GGML_BLAS_VENDOR
sebelum menginstal:
CMAKE_ARGS= " -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS " pip install llama-cpp-python
Untuk menginstal dengan dukungan CUDA, setel variabel lingkungan GGML_CUDA=on
sebelum menginstal:
CMAKE_ARGS= " -DGGML_CUDA=on " pip install llama-cpp-python
Roda Pra-bangun (Baru)
Dimungkinkan juga untuk memasang roda yang sudah dibuat sebelumnya dengan dukungan CUDA. Selama sistem Anda memenuhi beberapa persyaratan:
pip install llama-cpp-python
--extra-index-url https://abetlen.github.io/llama-cpp-python/whl/ < cuda-version >
Dimana <cuda-version>
adalah salah satu dari berikut ini:
cu121
: CUDA 12.1cu122
: CUDA 12.2cu123
: CUDA 12.3cu124
: CUDA 12.4cu125
: CUDA 12.5Misalnya, untuk memasang roda CUDA 12.1:
pip install llama-cpp-python
--extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu121
Untuk menginstal dengan Metal (MPS), setel variabel lingkungan GGML_METAL=on
sebelum menginstal:
CMAKE_ARGS= " -DGGML_METAL=on " pip install llama-cpp-python
Roda Pra-bangun (Baru)
Dimungkinkan juga untuk memasang roda yang sudah dibuat sebelumnya dengan dukungan Logam. Selama sistem Anda memenuhi beberapa persyaratan:
pip install llama-cpp-python
--extra-index-url https://abetlen.github.io/llama-cpp-python/whl/metal
Untuk menginstal dengan dukungan hipBLAS / ROCm pada kartu AMD, atur variabel lingkungan GGML_HIPBLAS=on
sebelum menginstal:
CMAKE_ARGS= " -DGGML_HIPBLAS=on " pip install llama-cpp-python
Untuk menginstal dengan dukungan Vulkan, setel variabel lingkungan GGML_VULKAN=on
sebelum menginstal:
CMAKE_ARGS= " -DGGML_VULKAN=on " pip install llama-cpp-python
Untuk menginstal dengan dukungan SYCL, setel variabel lingkungan GGML_SYCL=on
sebelum menginstal:
source /opt/intel/oneapi/setvars.sh
CMAKE_ARGS= " -DGGML_SYCL=on -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx " pip install llama-cpp-python
Untuk menginstal dengan dukungan RPC, setel variabel lingkungan GGML_RPC=on
sebelum menginstal:
source /opt/intel/oneapi/setvars.sh
CMAKE_ARGS= " -DGGML_RPC=on " pip install llama-cpp-python
Jika Anda mengalami masalah yang dikeluhkannya, ia tidak dapat menemukan 'nmake'
'?'
atau CMAKE_C_COMPILER, Anda dapat mengekstrak w64devkit seperti yang disebutkan dalam repo llama.cpp dan menambahkannya secara manual ke CMAKE_ARGS sebelum menjalankan pip
install:
$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"
Lihat petunjuk di atas dan setel CMAKE_ARGS
ke backend BLAS yang ingin Anda gunakan.
Dokumentasi instalasi MacOS Metal GPU yang terperinci tersedia di docs/install/macos.md
Catatan: Jika Anda menggunakan Apple Silicon (M1) Mac, pastikan Anda telah menginstal versi Python yang mendukung arsitektur arm64. Misalnya:
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh
bash Miniforge3-MacOSX-arm64.sh
Jika tidak, saat menginstalnya akan membuat versi llama.cpp x86 yang 10x lebih lambat di Apple Silicon (M1) Mac.
Coba instal dengan
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
Untuk meningkatkan dan membangun kembali llama-cpp-python
tambahkan tanda --upgrade --force-reinstall --no-cache-dir
ke perintah pip install
untuk memastikan paket dibuat ulang dari sumber.
Referensi API
API tingkat tinggi menyediakan antarmuka terkelola sederhana melalui kelas Llama
.
Di bawah ini adalah contoh singkat yang menunjukkan cara menggunakan API tingkat tinggi untuk penyelesaian teks dasar:
from llama_cpp import Llama
llm = Llama (
model_path = "./models/7B/llama-model.gguf" ,
# n_gpu_layers=-1, # Uncomment to use GPU acceleration
# seed=1337, # Uncomment to set a specific seed
# n_ctx=2048, # Uncomment to increase the context window
)
output = llm (
"Q: Name the planets in the solar system? A: " , # Prompt
max_tokens = 32 , # Generate up to 32 tokens, set to None to generate up to the end of the context window
stop = [ "Q:" , " n " ], # Stop generating just before the model would generate a new question
echo = True # Echo the prompt back in the output
) # Generate a completion, can also call create_completion
print ( output )
Secara default llama-cpp-python
menghasilkan penyelesaian dalam format yang kompatibel dengan 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
}
}
Penyelesaian teks tersedia melalui metode __call__
dan create_completion
dari kelas Llama
.
Anda dapat mendownload model Llama
dalam format gguf
langsung dari Hugging Face menggunakan metode from_pretrained
. Anda harus menginstal paket huggingface-hub
untuk menggunakan fitur ini ( pip install huggingface-hub
).
llm = Llama . from_pretrained (
repo_id = "Qwen/Qwen2-0.5B-Instruct-GGUF" ,
filename = "*q8_0.gguf" ,
verbose = False
)
Secara default from_pretrained
akan mengunduh model ke direktori cache Huggingface, Anda kemudian dapat mengelola file model yang diinstal dengan alat huggingface-cli
.
API tingkat tinggi juga menyediakan antarmuka sederhana untuk penyelesaian obrolan.
Penyelesaian obrolan mengharuskan model mengetahui cara memformat pesan menjadi satu perintah. Kelas Llama
melakukan ini menggunakan format obrolan yang telah didaftarkan sebelumnya (mis. chatml
, llama-2
, gemma
, dll) atau dengan menyediakan objek pengendali obrolan khusus.
Model akan memformat pesan menjadi satu prompt menggunakan urutan prioritas berikut:
chat_handler
jika disediakanchat_format
jika tersediatokenizer.chat_template
dari metadata model gguf
(seharusnya berfungsi untuk sebagian besar model baru, model lama mungkin tidak memiliki ini)llama-2
Atur verbose=True
untuk melihat format obrolan yang dipilih.
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."
}
]
)
Penyelesaian obrolan tersedia melalui metode create_chat_completion
dari kelas Llama
.
Untuk kompatibilitas OpenAI API v1, Anda menggunakan metode create_chat_completion_openai_v1
yang akan mengembalikan model pydantic alih-alih dicts.
Untuk membatasi respons obrolan hanya pada JSON yang valid atau Skema JSON tertentu, gunakan argumen response_format
di create_chat_completion
.
Contoh berikut akan membatasi respons terhadap string JSON yang valid saja.
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" : "user" , "content" : "Who won the world series in 2020" },
],
response_format = {
"type" : "json_object" ,
},
temperature = 0.7 ,
)
Untuk membatasi respons lebih jauh ke Skema JSON tertentu, tambahkan skema ke properti schema
argumen response_format
.
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" : "user" , "content" : "Who won the world series in 2020" },
],
response_format = {
"type" : "json_object" ,
"schema" : {
"type" : "object" ,
"properties" : { "team_name" : { "type" : "string" }},
"required" : [ "team_name" ],
},
},
temperature = 0.7 ,
)
API tingkat tinggi mendukung fungsi dan pemanggilan alat yang kompatibel dengan OpenAI. Hal ini dimungkinkan melalui format obrolan model terlatih functionary
atau melalui format obrolan chatml-function-calling
umum.
from llama_cpp import Llama
llm = Llama ( model_path = "path/to/chatml/llama-model.gguf" , chat_format = "chatml-function-calling" )
llm . create_chat_completion (
messages = [
{
"role" : "system" ,
"content" : "A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions. The assistant calls functions with appropriate input when necessary"
},
{
"role" : "user" ,
"content" : "Extract Jason is 25 years old"
}
],
tools = [{
"type" : "function" ,
"function" : {
"name" : "UserDetail" ,
"parameters" : {
"type" : "object" ,
"title" : "UserDetail" ,
"properties" : {
"name" : {
"title" : "Name" ,
"type" : "string"
},
"age" : {
"title" : "Age" ,
"type" : "integer"
}
},
"required" : [ "name" , "age" ]
}
}
}],
tool_choice = {
"type" : "function" ,
"function" : {
"name" : "UserDetail"
}
}
)
Berbagai file yang dikonversi gguf untuk kumpulan model ini dapat ditemukan di sini. Fungsionaris mampu memanggil fungsi dengan cerdas dan juga menganalisis keluaran fungsi yang disediakan untuk menghasilkan respons yang koheren. Semua model fungsi v2 mendukung pemanggilan fungsi paralel . Anda dapat menyediakan functionary-v1
atau functionary-v2
untuk chat_format
saat menginisialisasi kelas Llama.
Karena perbedaan antara llama.cpp dan tokenizer HuggingFace, maka diperlukan untuk menyediakan HF Tokenizer untuk fungsionaris. Kelas LlamaHFTokenizer
dapat diinisialisasi dan diteruskan ke kelas Llama. Ini akan menggantikan tokenizer llama.cpp default yang digunakan di kelas Llama. File tokenizer sudah disertakan dalam masing-masing repositori HF yang menampung file gguf.
from llama_cpp import Llama
from llama_cpp . llama_tokenizer import LlamaHFTokenizer
llm = Llama . from_pretrained (
repo_id = "meetkai/functionary-small-v2.2-GGUF" ,
filename = "functionary-small-v2.2.q4_0.gguf" ,
chat_format = "functionary-v2" ,
tokenizer = LlamaHFTokenizer . from_pretrained ( "meetkai/functionary-small-v2.2-GGUF" )
)
CATATAN : Tidak perlu menyediakan pesan sistem default yang digunakan di Fungsionaris karena pesan tersebut ditambahkan secara otomatis di pengendali obrolan Fungsionaris. Oleh karena itu, pesan harus hanya berisi pesan obrolan dan/atau pesan sistem yang memberikan konteks tambahan untuk model (misalnya: waktu tanggal, dll.).
dukungan llama-cpp-python
seperti llava1.5 yang memungkinkan model bahasa membaca informasi dari teks dan gambar.
Di bawah ini adalah model multi-modal yang didukung dan masing-masing penangan obrolan (API Python) dan format obrolan (Server API).
Model | LlamaChatHandler | chat_format |
---|---|---|
llava-v1.5-7b | Llava15ChatHandler | llava-1-5 |
llava-v1.5-13b | Llava15ChatHandler | llava-1-5 |
llava-v1.6-34b | Llava16ChatHandler | llava-1-6 |
mimpi bulan2 | MoondreamChatHandler | moondream2 |
nanollava | NanollavaChatHandler | nanollava |
llama-3-visi-alpha | Llama3VisionAlphaChatHandler | llama-3-vision-alpha |
minicpm-v-2.6 | MiniCPMv26ChatHandler | minicpm-v-2.6 |
Kemudian Anda harus menggunakan penangan obrolan khusus untuk memuat model klip dan memproses pesan obrolan dan gambar.
from llama_cpp import Llama
from llama_cpp . llama_chat_format import Llava15ChatHandler
chat_handler = Llava15ChatHandler ( clip_model_path = "path/to/llava/mmproj.bin" )
llm = Llama (
model_path = "./path/to/llava/llama-model.gguf" ,
chat_handler = chat_handler ,
n_ctx = 2048 , # n_ctx should be increased to accommodate the image embedding
)
llm . create_chat_completion (
messages = [
{ "role" : "system" , "content" : "You are an assistant who perfectly describes images." },
{
"role" : "user" ,
"content" : [
{ "type" : "text" , "text" : "What's in this image?" },
{ "type" : "image_url" , "image_url" : { "url" : "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg" } }
]
}
]
)
Anda juga dapat menarik model dari Hugging Face Hub menggunakan metode from_pretrained
.
from llama_cpp import Llama
from llama_cpp . llama_chat_format import MoondreamChatHandler
chat_handler = MoondreamChatHandler . from_pretrained (
repo_id = "vikhyatk/moondream2" ,
filename = "*mmproj*" ,
)
llm = Llama . from_pretrained (
repo_id = "vikhyatk/moondream2" ,
filename = "*text-model*" ,
chat_handler = chat_handler ,
n_ctx = 2048 , # n_ctx should be increased to accommodate the image embedding
)
response = llm . create_chat_completion (
messages = [
{
"role" : "user" ,
"content" : [
{ "type" : "text" , "text" : "What's in this image?" },
{ "type" : "image_url" , "image_url" : { "url" : "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg" } }
]
}
]
)
print ( response [ "choices" ][ 0 ][ "text" ])
Catatan : Model multimodal juga mendukung pemanggilan alat dan mode JSON.
Gambar dapat diteruskan sebagai URI data yang dikodekan base64. Contoh berikut menunjukkan cara melakukan hal ini.
import base64
def image_to_base64_data_uri ( file_path ):
with open ( file_path , "rb" ) as img_file :
base64_data = base64 . b64encode ( img_file . read ()). decode ( 'utf-8' )
return f"data:image/png;base64, { base64_data } "
# Replace 'file_path.png' with the actual path to your PNG file
file_path = 'file_path.png'
data_uri = image_to_base64_data_uri ( file_path )
messages = [
{ "role" : "system" , "content" : "You are an assistant who perfectly describes images." },
{
"role" : "user" ,
"content" : [
{ "type" : "image_url" , "image_url" : { "url" : data_uri }},
{ "type" : "text" , "text" : "Describe this image in detail please." }
]
}
]
llama-cpp-python
mendukung decoding spekulatif yang memungkinkan model menghasilkan penyelesaian berdasarkan draf model.
Cara tercepat untuk menggunakan decoding spekulatif adalah melalui kelas LlamaPromptLookupDecoding
.
Teruskan saja ini sebagai draf model ke kelas Llama
selama inisialisasi.
from llama_cpp import Llama
from llama_cpp . llama_speculative import LlamaPromptLookupDecoding
llama = Llama (
model_path = "path/to/model.gguf" ,
draft_model = LlamaPromptLookupDecoding ( num_pred_tokens = 10 ) # num_pred_tokens is the number of tokens to predict 10 is the default and generally good for gpu, 2 performs better for cpu-only machines.
)
Untuk menghasilkan penyematan teks, gunakan create_embedding
atau embed
. Perhatikan bahwa Anda harus meneruskan embedding=True
ke konstruktor saat pembuatan model agar dapat berfungsi dengan baik.
import llama_cpp
llm = llama_cpp . Llama ( model_path = "path/to/model.gguf" , embedding = True )
embeddings = llm . create_embedding ( "Hello, world!" )
# or create multiple embeddings at once
embeddings = llm . create_embedding ([ "Hello, world!" , "Goodbye, world!" ])
Ada dua gagasan utama tentang penyematan dalam model gaya Transformer: level token dan level urutan . Penyematan tingkat urutan dihasilkan dengan "menggabungkan" penyematan tingkat token, biasanya dengan merata-ratakannya atau menggunakan token pertama.
Model yang secara eksplisit ditujukan untuk penyematan biasanya akan mengembalikan penyematan tingkat urutan secara default, satu untuk setiap string masukan. Model non-penyematan seperti yang dirancang untuk pembuatan teks biasanya hanya akan mengembalikan penyematan tingkat token, satu untuk setiap token di setiap urutan. Dengan demikian, dimensi tipe pengembalian akan menjadi lebih tinggi untuk penyematan tingkat token.
Dalam beberapa kasus, dimungkinkan untuk mengontrol perilaku pengumpulan menggunakan tanda pooling_type
pada pembuatan model. Anda dapat memastikan penyematan tingkat token dari model apa pun menggunakan LLAMA_POOLING_TYPE_NONE
. Sebaliknya, membuat model berorientasi generasi untuk menghasilkan penyematan tingkat urutan saat ini tidak memungkinkan, namun Anda selalu dapat melakukan pengumpulan secara manual.
Jendela konteks model Llama menentukan jumlah maksimum token yang dapat diproses sekaligus. Secara default, ini diatur ke 512 token, tetapi dapat disesuaikan berdasarkan kebutuhan Anda.
Misalnya, jika Anda ingin bekerja dengan konteks yang lebih besar, Anda dapat memperluas jendela konteks dengan mengatur parameter n_ctx saat menginisialisasi objek Llama:
llm = Llama ( model_path = "./models/7B/llama-model.gguf" , n_ctx = 2048 )
llama-cpp-python
menawarkan server web yang bertujuan untuk bertindak sebagai pengganti OpenAI API. Hal ini memungkinkan Anda untuk menggunakan model yang kompatibel dengan llama.cpp dengan klien apa pun yang kompatibel dengan OpenAI (perpustakaan bahasa, layanan, dll).
Untuk menginstal paket server dan memulai:
pip install ' llama-cpp-python[server] '
python3 -m llama_cpp.server --model models/7B/llama-model.gguf
Mirip dengan bagian Akselerasi Perangkat Keras di atas, Anda juga dapat menginstal dengan dukungan GPU (cuBLAS) seperti ini:
CMAKE_ARGS= " -DGGML_CUDA=on " FORCE_CMAKE=1 pip install ' llama-cpp-python[server] '
python3 -m llama_cpp.server --model models/7B/llama-model.gguf --n_gpu_layers 35
Navigasikan ke http://localhost:8000/docs untuk melihat dokumentasi OpenAPI.
Untuk mengikat ke 0.0.0.0
guna mengaktifkan koneksi jarak jauh, gunakan python3 -m llama_cpp.server --host 0.0.0.0
. Demikian pula, untuk mengubah port (defaultnya adalah 8000), gunakan --port
.
Anda mungkin juga ingin mengatur format prompt. Untuk chatml, gunakan
python3 -m llama_cpp.server --model models/7B/llama-model.gguf --chat_format chatml
Itu akan memformat prompt sesuai dengan ekspektasi model. Anda dapat menemukan format prompt di kartu model. Untuk opsi yang memungkinkan, lihat llama_cpp/llama_chat_format.py dan cari baris yang dimulai dengan "@register_chat_format".
Jika Anda telah menginstal huggingface-hub
, Anda juga dapat menggunakan flag --hf_model_repo_id
untuk memuat model dari Hugging Face Hub.
python3 -m llama_cpp.server --hf_model_repo_id Qwen/Qwen2-0.5B-Instruct-GGUF --model ' *q8_0.gguf '
Gambar Docker tersedia di GHCR. Untuk menjalankan server:
docker run --rm -it -p 8000:8000 -v /path/to/models:/models -e MODEL=/models/llama-model.gguf ghcr.io/abetlen/llama-cpp-python:latest
Docker di termux (membutuhkan root) saat ini merupakan satu-satunya cara yang diketahui untuk menjalankan ini di ponsel, lihat masalah dukungan termux
Referensi API
API tingkat rendah adalah pengikatan ctypes
langsung ke API C yang disediakan oleh llama.cpp
. Seluruh API tingkat rendah dapat ditemukan di llama_cpp/llama_cpp.py dan secara langsung mencerminkan C API di llama.h.
Di bawah ini adalah contoh singkat yang menunjukkan cara menggunakan API tingkat rendah untuk memberi token pada prompt:
import llama_cpp
import ctypes
llama_cpp . llama_backend_init ( False ) # Must be called once at the start of each program
params = llama_cpp . llama_context_default_params ()
# use bytes for char * params
model = llama_cpp . llama_load_model_from_file ( b"./models/7b/llama-model.gguf" , params )
ctx = llama_cpp . llama_new_context_with_model ( model , params )
max_tokens = params . n_ctx
# use ctypes arrays for array params
tokens = ( llama_cpp . llama_token * int ( max_tokens ))()
n_tokens = llama_cpp . llama_tokenize ( ctx , b"Q: Name the planets in the solar system? A: " , tokens , max_tokens , llama_cpp . c_bool ( True ))
llama_cpp . llama_free ( ctx )
Lihat folder contoh untuk mengetahui lebih banyak contoh penggunaan API tingkat rendah.
Dokumentasi tersedia melalui https://llama-cpp-python.readthedocs.io/. Jika Anda menemukan masalah apa pun dengan dokumentasi, silakan buka terbitan atau kirimkan PR.
Paket ini sedang dalam pengembangan aktif dan saya menyambut baik kontribusi apa pun.
Untuk memulai, kloning repositori dan instal paket dalam mode yang dapat diedit/pengembangan:
git clone --recurse-submodules https://github.com/abetlen/llama-cpp-python.git
cd llama-cpp-python
# Upgrade pip (required for editable mode)
pip install --upgrade pip
# Install with pip
pip install -e .
# if you want to use the fastapi / openapi server
pip install -e .[server]
# to install all optional dependencies
pip install -e .[all]
# to clear the local build cache
make clean
Anda juga dapat menguji komitmen spesifik llama.cpp
dengan memeriksa komitmen yang diinginkan di submodul vendor/llama.cpp
lalu menjalankan make clean
dan pip install -e .
lagi. Setiap perubahan pada API llama.h
akan memerlukan perubahan pada file llama_cpp/llama_cpp.py
agar sesuai dengan API baru (perubahan tambahan mungkin diperlukan di tempat lain).