Note
Travaux en cours.
Lugha du swahili signifiant « Langage » est un framework d'IA générative PHP qui fournit un moyen simple et facile d'interagir avec divers fournisseurs d'IA. L'idée principale est de fournir une API unifiée indépendante du fournisseur pour les modèles d'IA, facilitant ainsi le basculement entre les fournisseurs.
Ce projet est fortement inspiré de LangChain et LLPhant, conçus pour les applications basées sur Chatbot, RAG (Retrieval-Augmented Generation) avec intégration de modèles Embeddings, Completion et Reranking.
Fournisseurs pris en charge :
Fournisseur | Lien | Caractéristiques |
---|---|---|
OpenAI | openai.com | Complétion, intégrations |
Mistral | mistral.ai | Complétion, intégrations |
ai.google | Complétion, intégrations | |
GitHub | github.com | Complétion, intégrations |
Anthropique | anthropique.com | Achèvement |
Voyager.ai | voyageai.com | Intégrations, reclassement |
Ollama | ollama.com | Complétion, intégrations |
composer require devscast/lugha
Les incorporations sont un type de représentation de mots qui permet à des mots ayant une signification similaire d'avoir une représentation similaire. ils peuvent être utilisés pour trouver la similitude entre des mots, des expressions ou des phrases. utile pour la classification, le regroupement et la récupération d'informations de documents.
$ client = ClientFactory :: create ( Provider :: GOOGLE );
$ embeddings = $ client -> embeddings (
prompt: ' Hello, world! ' ,
config: new EmbeddingsConfig (
model: ' text-embedding-004 ' ,
dimensions: 512
)
)-> embedding ;
Les modèles d'achèvement sont conçus pour générer un texte de type humain basé sur l'invite de saisie.
$ 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 ;
Les modèles de reclassement sont conçus pour reclasser une liste de documents en fonction de l'invite de saisie. utile pour les moteurs de recherche, les systèmes de recommandation et la recherche d'informations.
$ 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 ;