chat-with-your-doc é um aplicativo de demonstração que aproveita os recursos do ChatGPT/GPT-4 e Langchain para permitir que os usuários conversem com seus documentos. Este repositório hospeda a base de código, instruções e recursos necessários para configurar e executar o aplicativo.
O objetivo principal deste projeto é simplificar a interação com documentos e extrair informações valiosas com o uso da linguagem natural. Este projeto foi construído usando Langchain e GPT-4/ChatGPT para oferecer uma experiência de conversação suave e natural ao usuário, com suporte para Azure OpenAI Services e OpenAI

Azure OpenAI Services e OpenAI
Sugira instalar no Ubuntu em vez de no CentOS/Debian. Veja a edição #12
Para começar com Chat-with-your-doc , siga estas etapas:
git clone https://github.com/linjungz/chat-with-your-doc.gitchat-with-your-doc : cd chat-with-your-docCrie ambiente virtual:
python3 -m venv .venv
source .venv/bin/activateInstale as depenanciais:
pip install -r requirements.txtNeste projeto, estamos apoiando a API do serviço OpenAI e Azure Openai. Existem algumas variáveis ambientais que são comuns para as duas APIs, enquanto algumas são únicas. A tabela a seguir lista todos os vars ENV que são apoiados:
| Variáveis de ambiente | Serviço do Azure Openai | Openai |
|---|---|---|
| OpenAi_API_BASE | ✅ | |
| OpenAi_API_KEY | ✅ | ✅ |
| OpenAi_GPT_Deployment_Name | ✅ | |
| OpenAi_Embedding_DePlant_Name | ✅ | ✅ |
| Chat_model_name | ✅ | |
| Request_timeout | ✅ | ✅ |
| Vectordb_path | ✅ | ✅ |
| TEMPERATURA | ✅ | ✅ |
| Chunk_size | ✅ | ✅ |
| Chunk_overlap | ✅ | ✅ |
.env no Dir Root e defina as variáveis de ambiente no arquivo: OPENAI_API_BASE=https://your-endpoint.openai.azure.com
OPENAI_API_KEY=your-key-here
OPENAI_GPT_DEPLOYMENT_NAME=your-gpt-deployment-name
OPENAI_EMBEDDING_DEPLOYMENT_NAME=your-embedding-deployment-name
Aqui é onde você pode encontrar os nomes de implantação para GPT e incorporação: 
.env no Dir Root e defina a variável de ambiente no arquivo: OPENAI_API_KEY=your-key-here
CHAT_MODEL_NAME="gpt-4-0314"
Isso inicializará o aplicativo com base no Streamlit e abrirá a interface do usuário no seu navegador da Web padrão. Agora você pode fazer upload de um documento para criar uma base de conhecimento e iniciar uma conversa com ele.
$ streamlit run chat_web_st.py --server.address ' 0.0.0.0 '
Collecting usage statistics. To deactivate, set browser.gatherUsageStats to False.
You can now view your Streamlit app in your browser.
URL: http://0.0.0.0:8501 ` ` `Observe que a interface do usuário da web anterior criada usando graduio é preterida e não é mais mantida. Você pode encontrar o código no arquivo chat_web.py.
O aplicativo CLI é criado para suportar comandos ingest e chat . A biblioteca Python typer é usada para criar a interface da linha de comando.
Este comando consideraria os documentos como entrada, dividiria os textos, geraria as incorporações e armazenaria em um Vector Store FAISS . A loja Vector seria armazenada localmente para posteriormente para bate -papo.

Por exemplo, se você deseja colocar todos os PDFs no diretório em uma única loja de vetores chamada surface , você pode executar:
$ python chat_cli.py ingest --path " ./data/source_documents/*.pdf " --name surfaceObserve que o caminho deve ser fechado com cotações duplas para evitar a expansão da concha.
Este comando iniciaria um bate -papo interativo, com documentos como uma base de conhecimento externa em uma loja de vetores. Você pode escolher qual base de conhecimento carregar para bate -papo.

Dois documentos de amostra sobre a superfície foram fornecidos no diretório Data/Source_Document e já ingeridos no index de armazenamento de vetores padrão, armazenado no Data/Vector_store. Você pode executar o seguinte comando para iniciar um bate -papo com os documentos:
$ python chat_cli.py chatOu você pode especificar o Vector Store para carregar para bate -papo:
$ python chat_cli.py chat --name surface Langchain é aproveitado para construir rapidamente um fluxo de trabalho interagindo com o Azure GPT-4. ConversationalRetrievalChain é usado neste caso de uso específico para apoiar o histórico de bate -papo. Você pode se referir a este link para obter mais detalhes.
Para chaintype , por padrão stuff é usado. Para mais detalhes, consulte este link
chat-with-your-doc é lançado sob a licença do MIT. Consulte o arquivo LICENSE para obter mais detalhes.