Olá Sajal!
Visão geral
Este projeto foi projetado para apresentar um aplicativo de chatbot abrangente que aproveita o modelo GPT-4 da OpenAI, juntamente com os recursos mais recentes do Langchain, incluindo Langchain Expression Language e LangGraph, integrados a uma interface Gradio para fácil interação.
Ele está encapsulado em um contêiner Docker para facilitar a implantação e a escalabilidade.
Começando
Construindo o contêiner Docker
- Clone o repositório em sua máquina local:
git clone <repository-link>
cd <repository-name>
- Crie a imagem Docker a partir do Dockerfile fornecido no projeto:
docker build -t hello-sajal-app .
Este comando cria uma imagem Docker chamada hello-sajal-app com base nas instruções do Dockerfile.
- Executando o aplicativo
Após construir a imagem, você pode executar o aplicativo usando o seguinte comando:
docker run -p 7860:7860 gradio-openai-app
Este comando executa o contêiner e mapeia a porta 7860 do contêiner para a porta 7860 em seu host, permitindo que você acesse o aplicativo Gradio por meio de seu navegador da web.
- Acessando o aplicativo Assim que o contêiner Docker estiver em execução, abra um navegador da web e navegue até http://localhost:7860 para interagir com o aplicativo Gradio.
Sob o capô
Tanto o contêiner docker quanto o aplicativo gradio seguem o fluxo:
- src/ingest_data.py: Extração e ingestão de dados em um banco de dados vetorial ChromaDB, que é persistido como em disco.
- src/app.py: Inicialização do aplicativo gradio, conduzido por langchain para orquestração.
Diretórios e arquivos
- Dados:
- source.md: fonte de informações sobre Sajal Sharma em formato markdown.
- chroma_db: diretório persistente para chromadb.
- fonte:
- app.py: ponto de entrada para o aplicativo, código para aplicativo gradio.
- graph.py: código para o gráfico de orquestração langgraph.
- ingest_data.py: código para extração, transformação e ingestão de dados.
- retriever.py: código para pesquisa no índice vetorial ChromaDb.
- chains/*.py: cadeias langchain personalizadas e prontas para uso para funcionalidades específicas do LLM.
Componentes
- ChromaDB para indexação e pesquisa de documentos fragmentados.
- Langchain para engenharia de fluxo.
- Modelos OpenAI para execução de chamadas LLM.
- Gradio para interface básica de chat.
- Langsmith pelo rastreamento imediato.
Recursos e arquitetura do aplicativo GenAI
O aplicativo utiliza fortemente langchain para prompts, cadeias, ferramentas, chamada de função LLM e engenharia de fluxo, demonstrando alguns dos casos de uso avançados.
Arquitetura de alto nível:
Cada mensagem recebida do usuário passa por módulos de reconhecimento de intenção, RAG, RAG corretivo e cadeia de conversa fiada.
O diagrama a seguir representa o fluxo de cada mensagem recebida do usuário no aplicativo de chat: