Observação
Trabalho em andamento.
Lugha, do suaíli, que significa "Linguagem", é um PHP Generative AI Framework que fornece uma maneira simples e fácil de interagir com vários provedores de IA. A ideia principal é fornecer uma API unificada independente de provedor para modelos de IA, facilitando a alternância entre provedores.
Este projeto é altamente inspirado em LangChain e LLPhant, projetado para aplicações baseadas em Chatbot, RAG (Retrieval-Augmented Generation) com integração de modelos de Embeddings, Completion e Reranking.
provedores suportados:
Provedor | Link | Características |
---|---|---|
OpenAI | openai. com | Conclusão, incorporações |
Mistral | mistral.ai | Conclusão, incorporações |
ai.google | Conclusão, incorporações | |
GitHub | github.com | Conclusão, incorporações |
Antrópico | anthropic.com | Conclusão |
Voyager.ai | voyageai.com | Incorporações, reclassificação |
Ollama | ollama. com | Conclusão, incorporações |
composer require devscast/lugha
Embeddings são um tipo de representação de palavras que permite que palavras com significados semelhantes tenham uma representação semelhante. eles podem ser usados para encontrar a semelhança entre palavras, frases ou sentenças. útil para classificação de documentos, agrupamento e recuperação de informações.
$ client = ClientFactory :: create ( Provider :: GOOGLE );
$ embeddings = $ client -> embeddings (
prompt: ' Hello, world! ' ,
config: new EmbeddingsConfig (
model: ' text-embedding-004 ' ,
dimensions: 512
)
)-> embedding ;
Os modelos de conclusão são projetados para gerar texto semelhante ao humano com base no prompt 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 ;
Os modelos de reclassificação são projetados para reclassificar uma lista de documentos com base no prompt de entrada. útil para mecanismos de pesquisa, sistemas de recomendação e recuperação de informações.
$ 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 ;