Nota
Trabajo en progreso.
Lugha, del suajili que significa "Idioma", es un marco de IA generativa PHP que proporciona una manera sencilla y fácil de interactuar con varios proveedores de IA. La idea principal es proporcionar una API unificada independiente del proveedor para los modelos de IA, facilitando el cambio entre proveedores.
Este proyecto está muy inspirado en LangChain y LLPhant, diseñado para Chatbot, aplicaciones basadas en RAG (Recuperación-Generación Aumentada) con integración de modelos de Incrustación, Finalización y Reclasificación.
proveedores compatibles:
Proveedor | Enlace | Características |
---|---|---|
AbiertoAI | openai.com | Finalización, incrustaciones |
Mistral | mistral.ai | Finalización, incrustaciones |
ai.google | Finalización, incrustaciones | |
GitHub | github.com | Finalización, incrustaciones |
antrópico | antrópico.com | Terminación |
Voyager.ai | voyageai.com | Incrustaciones, reclasificación |
Ollama | ollama.com | Finalización, incrustaciones |
composer require devscast/lugha
Las incrustaciones son un tipo de representación de palabras que permite que palabras con significado similar tengan una representación similar. se pueden utilizar para encontrar la similitud entre palabras, frases u oraciones. útil para la clasificación de documentos, agrupación y recuperación de información.
$ client = ClientFactory :: create ( Provider :: GOOGLE );
$ embeddings = $ client -> embeddings (
prompt: ' Hello, world! ' ,
config: new EmbeddingsConfig (
model: ' text-embedding-004 ' ,
dimensions: 512
)
)-> embedding ;
Los modelos de finalización están diseñados para generar texto similar a un humano según el mensaje de entrada.
$ 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 ;
Los modelos de reclasificación están diseñados para reclasificar una lista de documentos según el mensaje de entrada. Útil para motores de búsqueda, sistemas de recomendación y recuperación de información.
$ 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 ;