เราอยู่ในภารกิจที่จะทำให้ภูมิทัศน์ LLM ง่ายขึ้นรวมกันช่วยให้คุณ:
- ใช้ LLM ใด ๆ จากผู้ให้บริการใด ๆ : ด้วยอินเทอร์เฟซเดียวคุณสามารถใช้ LLM ทั้งหมดจากผู้ให้บริการทั้งหมดได้เพียงแค่เปลี่ยนหนึ่งสตริง ไม่จำเป็นต้องจัดการคีย์ API หลายตัวหรือจัดการรูปแบบอินพุตเอาต์พุตที่แตกต่างกัน Unify จัดการทั้งหมดสำหรับคุณ!
ปรับปรุงประสิทธิภาพของ LLM : เพิ่มการทดสอบและ evals ที่กำหนดเองของคุณเองและเปรียบเทียบการแจ้งเตือนของคุณเองในทุกรุ่นและผู้ให้บริการ การเปรียบเทียบคุณภาพต้นทุนและความเร็วและวนซ้ำบนระบบของคุณจนกว่ากรณีทดสอบทั้งหมดจะผ่านไปและคุณสามารถปรับใช้แอปของคุณได้!
- เส้นทางสู่ LLM ที่ดีที่สุด : ปรับปรุงคุณภาพต้นทุนและความเร็วโดยการกำหนดเส้นทางไปยังโมเดลและผู้ให้บริการที่สมบูรณ์แบบสำหรับพรอมต์แต่ละตัว
เพียงติดตั้งแพ็คเกจ:
pip install unifyaiจากนั้นลงทะเบียนเพื่อรับคีย์ API ของคุณจากนั้นคุณก็พร้อมที่จะไป!
import unify
client = unify . Unify ( "gpt-4o@openai" , api_key = < your_key > )
client . generate ( "hello world!" )บันทึก
เราขอแนะนำให้ใช้ Python-Dotenv เพื่อเพิ่ม UNIFY_KEY="My API Key" ในไฟล์ .env ของคุณหลีกเลี่ยงความจำเป็นในการใช้อาร์กิวเมนต์ api_key ดังกล่าวข้างต้น สำหรับส่วนที่เหลือของ readMe เราจะสมมติว่าคุณตั้งค่าคีย์ของคุณเป็นตัวแปรสภาพแวดล้อม
คุณสามารถแสดงรายการทุกรุ่นผู้ให้บริการและจุดสิ้นสุด ( <model>@<provider> คู่) ดังนี้:
models = unify . list_models ()
providers = unify . list_providers ()
endpoints = unify . list_endpoints ()นอกจากนี้คุณยังสามารถกรองภายในฟังก์ชั่นเหล่านี้ได้ดังนี้:
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 )) หากคุณต้องการเปลี่ยน endpoint model หรือ provider คุณสามารถทำได้โดยใช้ .set_endpoint , .set_model , .set_provider วิธีการตามลำดับ
client . set_endpoint ( "mistral-7b-instruct-v0.3@deepinfra" )
client . set_model ( "mistral-7b-instruct-v0.3" )
client . set_provider ( "deepinfra" ) คุณสามารถมีอิทธิพลต่อบุคลิกของโมเดลโดยใช้อาร์กิวเมนต์ system_message ในฟังก์ชัน .generate :
response = client . generate (
user_message = "Hello Llama! Who was Isaac Newton?" , system_message = "You should always talk in rhymes"
) หากคุณต้องการส่งข้อความหลายข้อความโดยใช้ฟังก์ชัน .generate คุณควรใช้อาร์กิวเมนต์ messages ดังนี้:
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 )เมื่อสอบถาม LLMS คุณมักจะต้องการให้หลายแง่มุมของการแก้ไขที่ได้รับการแก้ไขและเปลี่ยนเฉพาะชุดย่อยเล็ก ๆ ของพรอมต์ในแต่ละการโทรที่ตามมา
ตัวอย่างเช่นคุณอาจต้องการแก้ไขอุณหภูมิพรอมต์ระบบและเครื่องมือที่มีอยู่ในขณะที่ผ่านข้อความผู้ใช้ที่แตกต่างกันมาจากแอปพลิเคชันดาวน์สตรีม ลูกค้าทั้งหมดใน Unify ทำให้สิ่งนี้ง่ายมากผ่านอาร์กิวเมนต์เริ่มต้นซึ่งสามารถระบุได้ในตัวสร้างและยังสามารถตั้งค่าได้ตลอดเวลาโดยใช้วิธีการตั้งค่า
ตัวอย่างเช่นรหัสต่อไปนี้จะผ่าน temperature=0.5 ไปยังคำขอที่ตามมาทั้งหมดโดยไม่จำเป็นต้องส่งผ่านไปยังวิธี. .generate() ซ้ำ ๆ
client = unify . Unify ( "claude-3-haiku@anthropic" , temperature = 0.5 )
client . generate ( "Hello world!" )
client . generate ( "What a nice day." )พารามิเตอร์ทั้งหมดสามารถเรียกคืนได้โดย getters และตั้งค่าผ่าน setters:
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 การส่งผ่านค่าไปยังวิธี .generate() จะ เขียนทับ ค่าเริ่มต้นที่ระบุไว้สำหรับไคลเอนต์
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 สำหรับประสิทธิภาพที่ดีที่สุดในการจัดการคำขอผู้ใช้หลายรายการพร้อมกันเช่นในแอปพลิเคชัน chatbot แนะนำให้ประมวลผลแบบอะซิงโครนัส ตัวอย่างน้อยที่สุดที่ใช้ AsyncUnify ได้รับด้านล่าง:
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?" ))ตัวอย่างเพิ่มเติมที่นำไปใช้มากขึ้นการประมวลผลหลายคำขอแบบขนานสามารถทำได้ดังนี้:
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 ))ฟังก์ชั่นที่ชาญฉลาดลูกค้าแบบอะซิงโครนัสและซิงโครนัสนั้นเหมือนกัน
คุณสามารถเปิดใช้งานการตอบสนองการสตรีมโดยการตั้งค่า stream=True ในฟังก์ชัน. .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 = "" )มันทำงานในลักษณะเดียวกันกับลูกค้า 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 ())หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับคุณสมบัติ API ขั้นสูงของเราการเปรียบเทียบและการกำหนดเส้นทาง LLM ให้ไปดูเอกสารที่ครอบคลุมของเรา!