Kami sedang dalam misi untuk menyederhanakan lanskap LLM, Unify memungkinkan Anda:
? Gunakan LLM apa pun dari penyedia mana pun : dengan satu antarmuka, Anda dapat menggunakan semua LLM dari semua penyedia dengan hanya mengubah satu string. Tidak perlu mengelola beberapa tombol API atau menangani format input-output yang berbeda. Unify menangani semua itu untuk Anda!
Tingkatkan Kinerja LLM : Tambahkan tes dan eval kustom Anda sendiri, dan tolok ukur petunjuk Anda sendiri pada semua model dan penyedia. Membandingkan kualitas, biaya, dan kecepatan, dan mengulangi prompt sistem Anda sampai semua kasus uji lulus, dan Anda dapat menggunakan aplikasi Anda!
? Rute ke LLM Terbaik : Meningkatkan Kualitas, Biaya, dan Kecepatan dengan Routing ke Model dan Penyedia Sempurna untuk Setiap Prompt Individu.
Cukup instal paket:
pip install unifyaiKemudian daftar untuk mendapatkan kunci API Anda, lalu Anda siap untuk pergi!
import unify
client = unify . Unify ( "gpt-4o@openai" , api_key = < your_key > )
client . generate ( "hello world!" )Catatan
Kami merekomendasikan menggunakan python-dotenv untuk menambahkan UNIFY_KEY="My API Key" ke file .env Anda, menghindari kebutuhan untuk menggunakan argumen api_key seperti di atas. Untuk sisa readme, kami akan menganggap Anda mengatur kunci Anda sebagai variabel lingkungan.
Anda dapat mencantumkan semua model, penyedia dan titik akhir ( <model>@<provider> pair) sebagai berikut:
models = unify . list_models ()
providers = unify . list_providers ()
endpoints = unify . list_endpoints ()Anda juga dapat memfilter dalam fungsi -fungsi ini sebagai berikut:
import random
anthropic_models = unify . list_models ( "anthropic" )
client . set_endpoint ( random . choice ( anthropic_models ) + "@anthropic" )
latest_llama3p1_providers = unify . list_providers ( "llama-3.1-405b-chat" )
client . set_endpoint ( "llama-3.1-405b-chat@" + random . choice ( latest_llama3p1_providers ))
openai_endpoints = unify . list_endpoints ( "openai" )
client . set_endpoint ( random . choice ( openai_endpoints ))
mixtral8x7b_endpoints = unify . list_endpoints ( "mixtral-8x7b-instruct-v0.1" )
client . set_endpoint ( random . choice ( mixtral8x7b_endpoints )) Jika Anda ingin mengubah endpoint , model atau provider , Anda dapat melakukannya dengan menggunakan metode .set_endpoint , .set_model , .set_provider masing -masing.
client . set_endpoint ( "mistral-7b-instruct-v0.3@deepinfra" )
client . set_model ( "mistral-7b-instruct-v0.3" )
client . set_provider ( "deepinfra" ) Anda dapat mempengaruhi persona model menggunakan argumen system_message dalam fungsi .generate :
response = client . generate (
user_message = "Hello Llama! Who was Isaac Newton?" , system_message = "You should always talk in rhymes"
) Jika Anda ingin mengirim beberapa pesan menggunakan fungsi .generate , Anda harus menggunakan argumen messages sebagai berikut:
messages = [
{ "role" : "user" , "content" : "Who won the world series in 2020?" },
{ "role" : "assistant" , "content" : "The Los Angeles Dodgers won the World Series in 2020." },
{ "role" : "user" , "content" : "Where was it played?" }
]
res = client . generate ( messages = messages )Saat menanyakan LLMS, Anda sering ingin menyimpan banyak aspek dari prompt Anda tetap, dan hanya mengubah sebagian kecil dari prompt pada setiap panggilan berikutnya.
Misalnya, Anda mungkin ingin memperbaiki yang sedang, prompt sistem, dan alat yang tersedia, sementara menyampaikan pesan pengguna yang berbeda yang berasal dari aplikasi hilir. Semua klien di Unify membuat ini sangat sederhana melalui argumen default, yang dapat ditentukan dalam konstruktor, dan juga dapat diatur kapan saja menggunakan metode setter.
Misalnya, kode berikut akan melewati temperature=0.5 untuk semua permintaan berikutnya, tanpa perlu berulang kali diteruskan ke metode .generate() .
client = unify . Unify ( "claude-3-haiku@anthropic" , temperature = 0.5 )
client . generate ( "Hello world!" )
client . generate ( "What a nice day." )Semua parameter juga dapat diambil dengan getters, dan diatur melalui setter:
client = unify . Unify ( "claude-3-haiku@anthropic" , temperature = 0.5 )
print ( client . temperature ) # 0.5
client . set_temperature ( 1.0 )
print ( client . temperature ) # 1.0 Melewati nilai ke metode .generate() akan menimpa nilai default yang ditentukan untuk klien.
client = unify . Unify ( "claude-3-haiku@anthropic" , temperature = 0.5 )
client . generate ( "Hello world!" ) # temperature of 0.5
client . generate ( "What a nice day." , temperature = 1.0 ) # temperature of 1.0 Untuk kinerja optimal dalam menangani beberapa permintaan pengguna secara bersamaan, seperti dalam aplikasi chatbot, memprosesnya secara tidak sinkron direkomendasikan. Contoh minimal menggunakan AsyncUnify diberikan di bawah ini:
import unify
import asyncio
async_client = unify . AsyncUnify ( "llama-3-8b-chat@fireworks-ai" )
asyncio . run ( async_client . generate ( "Hello Llama! Who was Isaac Newton?" ))Lebih banyak contoh yang lebih diterapkan, memproses beberapa permintaan secara paralel kemudian dapat dilakukan sebagai berikut:
import unify
import asyncio
clients = dict ()
clients [ "gpt-4o@openai" ] = unify . AsyncUnify ( "gpt-4o@openai" )
clients [ "claude-3-opus@anthropic" ] = unify . AsyncUnify ( "claude-3-opus@anthropic" )
clients [ "llama-3-8b-chat@fireworks-ai" ] = unify . AsyncUnify ( "llama-3-8b-chat@fireworks-ai" )
async def generate_responses ( user_message : str ):
responses_ = dict ()
for endpoint_ , client in clients . items ():
responses_ [ endpoint_ ] = await client . generate ( user_message )
return responses_
responses = asyncio . run ( generate_responses ( "Hello, how's it going?" ))
for endpoint , response in responses . items ():
print ( "endpoint: {}" . format ( endpoint ))
print ( "response: {} n " . format ( response ))Fungsionalitas bijaksana, klien asinkron dan sinkron identik.
Anda dapat mengaktifkan respons streaming dengan mengatur stream=True dalam fungsi .generate .
import unify
client = unify . Unify ( "llama-3-8b-chat@fireworks-ai" )
stream = client . generate ( "Hello Llama! Who was Isaac Newton?" , stream = True )
for chunk in stream :
print ( chunk , end = "" )Ini bekerja dengan cara yang persis sama dengan klien Async.
import unify
import asyncio
async_client = unify . AsyncUnify ( "llama-3-8b-chat@fireworks-ai" )
async def stream ():
async_stream = await async_client . generate ( "Hello Llama! Who was Isaac Newton?" , stream = True )
async for chunk in async_stream :
print ( chunk , end = "" )
asyncio . run ( stream ())Untuk mempelajari lebih lanjut tentang fitur API kami yang lebih canggih, pembandingan, dan perutean LLM, periksa dokumen komprehensif kami!