Basaran adalah alternatif sumber terbuka untuk API penyelesaian teks OpenAI. Ini menyediakan API streaming yang kompatibel untuk model pembuatan teks berbasis Hugging Face Transformers Anda.
Komunitas sumber terbuka pada akhirnya akan menyaksikan momen Difusi Stabil untuk model bahasa besar (LLM), dan Basaran memungkinkan Anda mengganti layanan OpenAI dengan model sumber terbuka terbaru untuk mendukung aplikasi Anda tanpa mengubah satu baris kode pun.
Fitur utama Basaran adalah:
Ganti user/repo
dengan model pilihan Anda dan XYZ
dengan versi terbaru, lalu jalankan:
docker run -p 80:80 -e MODEL=user/repo hyperonym/basaran:X.Y.Z
Dan Anda siap berangkat!
Playground: http://127.0.0.1/
API: http://127.0.0.1/v1/completions
Gambar Docker tersedia di Docker Hub dan Paket GitHub.
Untuk akselerasi GPU, Anda juga perlu menginstal Driver NVIDIA dan NVIDIA Container Runtime. Image Basaran sudah dilengkapi dengan perpustakaan terkait seperti CUDA dan cuDNN, sehingga tidak perlu menginstalnya secara manual.
Gambar Basaran dapat digunakan dalam tiga cara:
MODEL="user/repo"
, model terkait dapat diunduh dari Hugging Face Hub saat startup pertama.MODEL
ke jalur yang sesuai.Untuk kasus penggunaan di atas, Anda dapat menemukan contoh Dockerfiles dan file docker-compose di direktori penerapan.
Basaran diuji pada Python 3.8+ dan PyTorch 1.13+. Anda harus membuat lingkungan virtual dengan versi Python yang ingin Anda gunakan, dan mengaktifkannya sebelum melanjutkan.
pip
: pip install basaran
pip install accelerate bitsandbytes
user/repo
dengan model yang dipilih dan jalankan Basaran: MODEL=user/repo PORT=80 python -m basaran
Untuk daftar lengkap variabel lingkungan, lihat __init__.py
.
Jika Anda ingin mengakses fitur-fitur terbaru atau meretasnya sendiri, Anda dapat memilih untuk menjalankan dari sumber menggunakan git
.
git clone https://github.com/hyperonym/basaran.git && cd basaran
pip install -r requirements.txt
user/repo
dengan model yang dipilih dan jalankan Basaran: MODEL=user/repo PORT=80 python -m basaran
Format permintaan dan respons HTTP Basaran konsisten dengan OpenAI API.
Mengambil penyelesaian teks sebagai contoh:
curl http://127.0.0.1/v1/completions
-H ' Content-Type: application/json '
-d ' { "prompt": "once upon a time,", "echo": true } '
{
"id" : " cmpl-e08c701b4ba032c09ef080e1 " ,
"object" : " text_completion " ,
"created" : 1678003509 ,
"model" : " bigscience/bloomz-560m " ,
"choices" : [
{
"text" : " once upon a time, the human being faces a complicated situation and he needs to find a new life. " ,
"index" : 0 ,
"logprobs" : null ,
"finish_reason" : " length "
}
],
"usage" : {
"prompt_tokens" : 5 ,
"completion_tokens" : 21 ,
"total_tokens" : 26
}
}
Jika aplikasi Anda menggunakan pustaka klien yang disediakan oleh OpenAI, Anda hanya perlu mengubah variabel lingkungan OPENAI_API_BASE
agar sesuai dengan titik akhir Basaran:
OPENAI_API_BASE= " http://127.0.0.1/v1 " python your_app.py
Direktori contoh berisi contoh penggunaan pustaka OpenAI Python.
Basaran juga tersedia sebagai perpustakaan di PyPI. Ini dapat digunakan langsung dengan Python tanpa perlu memulai server API terpisah.
pip
: pip install basaran
load_model
untuk memuat model: from basaran . model import load_model
model = load_model ( "user/repo" )
for choice in model ( "once upon a time" ):
print ( choice )
Direktori contoh berisi contoh penggunaan Basaran sebagai perpustakaan.
Format API Basaran konsisten dengan OpenAI, dengan perbedaan kompatibilitas terutama dalam hal dukungan parameter dan bidang respons. Bagian berikut memberikan informasi rinci tentang kompatibilitas setiap titik akhir.
Setiap proses Basaran hanya melayani satu model, sehingga hasilnya hanya akan memuat model tersebut.
Meskipun Basaran tidak mendukung parameter model
, perpustakaan klien OpenAI mengharuskannya untuk ada. Oleh karena itu, Anda dapat memasukkan nama model acak apa pun.
Parameter | basaran | OpenAI | Nilai Bawaan | Nilai Maksimum |
---|---|---|---|---|
model | ○ | ● | - | - |
prompt | ● | ● | "" | COMPLETION_MAX_PROMPT |
suffix | ○ | ● | - | - |
min_tokens | ● | ○ | 0 | COMPLETION_MAX_TOKENS |
max_tokens | ● | ● | 16 | COMPLETION_MAX_TOKENS |
temperature | ● | ● | 1.0 | - |
top_p | ● | ● | 1.0 | - |
n | ● | ● | 1 | COMPLETION_MAX_N |
stream | ● | ● | false | - |
logprobs | ● | ● | 0 | COMPLETION_MAX_LOGPROBS |
echo | ● | ● | false | - |
stop | ○ | ● | - | - |
presence_penalty | ○ | ● | - | - |
frequency_penalty | ○ | ● | - | - |
best_of | ○ | ● | - | - |
logit_bias | ○ | ● | - | - |
user | ○ | ● | - | - |
Menyediakan API obrolan terpadu saat ini sulit karena setiap model memiliki format riwayat obrolan yang berbeda.
Oleh karena itu, disarankan untuk memformat riwayat obrolan terlebih dahulu berdasarkan persyaratan model tertentu dan menggunakannya sebagai perintah untuk API penyelesaian.
**Summarize a long document into a single sentence and ...**
<human>: Last year, the travel industry saw a big ...
<bot>: If you're traveling this spring break, ...
<human>: But ...
<bot>:
[Round 0]
问:你好
答:你好!有什么我可以帮助你的吗?
[Round 1]
问:你是谁?
答:
Lihat terbitan terbuka untuk daftar lengkap fitur yang diusulkan.
Proyek ini bersumber terbuka. Jika Anda memiliki ide atau pertanyaan, silakan menghubungi kami dengan membuat masalah!
Kontribusi sangat dihargai, silakan merujuk ke CONTRIBUTING.md untuk informasi lebih lanjut.
Basaran tersedia di bawah Lisensi MIT.
© 2023 Hiperonim