ملحوظة
العمل قيد التقدم.
Lugha من اللغة السواحلية وتعني "اللغة" هي إطار عمل PHP Geneative AI الذي يوفر طريقة بسيطة وسهلة للتفاعل مع مختلف موفري الذكاء الاصطناعي. الفكرة الرئيسية هي توفير واجهة برمجة تطبيقات موحدة لا تعتمد على المزود لنماذج الذكاء الاصطناعي، مما يسهل التبديل بين مقدمي الخدمة.
هذا المشروع مستوحى بشكل كبير من LangChain وLLPhant، المصمم لتطبيقات Chatbot وRAG (الجيل المعزز للاسترجاع) مع تكامل نماذج التضمين والإكمال وإعادة الترتيب.
مقدمي الخدمة المدعومين:
مزود | وصلة | سمات |
---|---|---|
OpenAI | openai.com | الإكمال، التضمينات |
ميسترال | ميسترال.ai | الإكمال، التضمينات |
جوجل | ai.google | الإكمال، التضمينات |
جيثب | github.com | الإكمال، التضمينات |
أنثروبي | anthropic.com | انتهاء |
Voyager.ai | voyageai.com | التضمين، إعادة الترتيب |
أولاما | ollama.com | الإكمال، التضمينات |
composer require devscast/lugha
التضمين هو نوع من تمثيل الكلمات الذي يسمح للكلمات ذات المعنى المماثل أن يكون لها تمثيل مماثل. يمكن استخدامها للعثور على التشابه بين الكلمات أو العبارات أو الجمل. مفيد لتصنيف المستندات وتجميعها واسترجاع المعلومات.
$ client = ClientFactory :: create ( Provider :: GOOGLE );
$ embeddings = $ client -> embeddings (
prompt: ' Hello, world! ' ,
config: new EmbeddingsConfig (
model: ' text-embedding-004 ' ,
dimensions: 512
)
)-> embedding ;
تم تصميم نماذج الإكمال لإنشاء نص يشبه الإنسان بناءً على موجه الإدخال.
$ client = ClientFactory :: create ( Provider :: OPENAI );
// from a prompt
$ completion = $ client -> completion (
input: ' Hello, world! ' ,
config: new CompletionConfig (
model: ' gpt-3.5-turbo ' ,
temperature: 0.5 ,
maxTokens: 100 ,
frequencyPenalty: 0.5 ,
presencePenalty: 0.5
)
)-> completion ;
// from a chat history
$ chat = $ client -> chat (
input: History :: fromMessages ([
new Message ( ' You are a chatbot, expert in philosophy ' , Role :: SYSTEM ),
new Message ( ' what is the meaning of life ? ' , Role :: USER )
]),
config: new ChatConfig (
model: ' gpt-4-turbo ' ,
temperature: 0.5 ,
maxTokens: 100 ,
frequencyPenalty: 0.5 ,
presencePenalty: 0.5
)
)-> completion ;
تم تصميم نماذج إعادة الترتيب لإعادة ترتيب قائمة المستندات بناءً على موجه الإدخال. مفيد لمحركات البحث وأنظمة التوصية واسترجاع المعلومات.
$ client = ClientFactory :: create ( Provider :: VOYAGER );
$ ranking = $ client -> reranking (
prompt: ' What is the meaning of life ? ' ,
documents: [
new Document ( ' The best way to predict the future is to create it. ' )
new Document ( ' The only way to do great work is to love what you do. ' )
new Document ( ' Life is short, smile while you still have teeth. ' ),
new Document ( ' The best time to plant a tree was 20 years ago. The second best time is now. ' )
],
config: new RerankingConfig (
model: ' voyager-1.0 ' ,
topK: 3
)
)-> documents ;