?️? GoLC
Construindo aplicativos Go com LLMs por meio de composição
GoLC é um projeto inovador fortemente inspirado no projeto LangChain, que visa construir aplicações com Large Language Models (LLMs) aproveitando o conceito de composibilidade. Ele fornece uma estrutura que permite aos desenvolvedores criar e integrar aplicativos baseados em LLM de maneira integrada. Através dos princípios de composição, GoLC permite a construção modular de componentes baseados em LLM, oferecendo flexibilidade e extensibilidade para desenvolver aplicações poderosas de processamento de linguagem. Ao aproveitar os recursos dos LLMs e adotar a capacidade de composição, o GoLC traz novas oportunidades ao ecossistema Golang para o desenvolvimento de aplicativos de processamento de linguagem natural.
Características
GoLC oferece uma gama de recursos para aprimorar o desenvolvimento de aplicativos de processamento de linguagem:
- ? LLMs e Prompts: GoLC simplifica o gerenciamento e otimização de prompts e fornece uma interface genérica para trabalhar com Large Language Models (LLMs). Isso simplifica a utilização de LLMs em suas aplicações.
- ? Cadeias: GoLC permite a criação de sequências de chamadas para LLMs ou outras utilidades. Ele fornece uma interface padronizada para cadeias, permitindo integração perfeita com diversas ferramentas. Além disso, GoLC oferece cadeias ponta a ponta pré-construídas, projetadas para cenários de aplicativos comuns, economizando tempo e esforço de desenvolvimento.
- Geração Aumentada de Recuperação (RAG): GoLC oferece suporte a tipos específicos de cadeias que interagem com fontes de dados. Essa funcionalidade permite tarefas como resumo de textos longos e resposta a perguntas com base em conjuntos de dados específicos. Com GoLC, você pode aproveitar os recursos RAG para aprimorar seus aplicativos de processamento de linguagem.
- ? Agentes: GoLC capacita a criação de agentes que aproveitam LLMs para tomar decisões informadas, agir, observar resultados e iterar até a conclusão. Ao incorporar agentes em seus aplicativos, você pode aprimorar sua inteligência e adaptabilidade.
- ? Memória: GoLC inclui funcionalidade de memória que facilita a persistência de estado entre chamadas em cadeia ou de agente. Esse recurso permite que seus aplicativos mantenham o contexto e retenham informações importantes em todo o pipeline de processamento. GoLC fornece uma interface de memória padronizada junto com uma seleção de implementações de memória para flexibilidade.
- ? Avaliação: GoLC simplifica a avaliação de modelos generativos, que são tradicionalmente difíceis de avaliar usando métricas convencionais. Ao utilizar os próprios modelos de linguagem para avaliação, o GoLC fornece uma abordagem inovadora para avaliar o desempenho de modelos generativos.
- ? Moderação: GoLC incorpora funcionalidades essenciais de moderação para aumentar a segurança e adequação dos aplicativos de processamento de linguagem. Isso inclui detecção imediata de injeção, detecção e redação de informações de identificação pessoal (PII), identificação de conteúdo tóxico e muito mais.
- ? Processamento de documentos: GoLC fornece recursos abrangentes de processamento de documentos, incluindo carregamento, transformação e compactação. Ele oferece um conjunto versátil de ferramentas para agilizar tarefas relacionadas a documentos, tornando-o uma solução ideal para aplicativos de processamento de linguagem centrados em documentos.
Instalação
Use módulos Go para incluir golc em seu projeto:
go get github.com/hupe1980/golc
Uso
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/hupe1980/golc"
"github.com/hupe1980/golc/chain"
"github.com/hupe1980/golc/model/chatmodel"
)
func main () {
openai , err := chatmodel . NewOpenAI ( os . Getenv ( "OPENAI_API_KEY" ))
if err != nil {
log . Fatal ( err )
}
conversationChain , err := chain . NewConversation ( openai )
if err != nil {
log . Fatal ( err )
}
ctx := context . Background ()
result1 , err := golc . SimpleCall ( ctx , conversationChain , "What year was Einstein born?" )
if err != nil {
log . Fatal ( err )
}
fmt . Println ( result1 )
result2 , err := golc . SimpleCall ( ctx , conversationChain , "Multiply the year by 3." )
if err != nil {
log . Fatal ( err )
}
fmt . Println ( result2 )
}
Saída:
Einstein was born in 1879.
1879 multiplied by 3 equals 5637.
Para obter mais exemplos de uso, consulte exemplos.
Contribuindo
Contribuições são bem-vindas! Sinta-se à vontade para abrir um problema ou enviar uma solicitação de pull para quaisquer melhorias ou novos recursos que você gostaria de ver.
Referências
- https://github.com/langchain-ai/langchain/
- https://www.promptingguide.ai/
Licença
Este projeto está licenciado sob a licença MIT. Consulte o arquivo LICENSE para obter detalhes.