Chatpdflike
Um aplicativo de atendimento à pergunta de documento de ponta a ponta usando APIs de modelo de idioma grande.
NOTA : Este projeto não é afiliado ou endossado pelo chatpdf. Este é um projeto independente que tenta replicar funcionalidade semelhante.
Visão geral
O Chatpdf-Like é um aplicativo da Web que permite que os usuários enviem documentos em PDF e interajam com eles usando consultas de linguagem natural. O aplicativo aproveita os grandes modelos de idiomas (LLMS) como o GPT-3.5 Turbo da OpenAI para entender o conteúdo do PDF e fornecer respostas concisas e precisas para perguntas do usuário.
Características
- PDF Document Upload : Carregue arquivos PDF locais ou forneça um URL para um documento PDF.
- Interação da linguagem natural : faça perguntas sobre o conteúdo do PDF em linguagem natural.
- Respostas relevantes : receba respostas concisas com base no conteúdo do documento.
- Referências de origem : Exibir fontes (seções do PDF) que foram usadas para gerar a resposta.
- Vários fornecedores de LLM : suporte para modelos OpenAi e Ollama.
- Interface da Web : interface da Web simples e intuitiva criada com Flask e JavaScript.
Como funciona
O aplicativo segue estas etapas principais:
Extração e processamento de texto :
- O PDF é analisado usando
PyPDF2 . - O texto é extraído de cada página e grandes pedaços de texto são divididos em pedaços gerenciáveis.
Incorporação de geração :
- Para cada pedaço de texto, um vetor de incorporação é gerado usando o modelo de incorporação selecionado (por exemplo,
text-embedding-ada-002 do OpenAI). - Essas incorporações representam o significado semântico dos pedaços de texto e são armazenados para cálculos de similaridade.
Manuseio de consulta de usuário :
- Quando um usuário faz uma pergunta, um vetor de incorporação para a consulta é gerado usando o mesmo modelo de incorporação.
Pesquisa de similaridade :
- O aplicativo calcula a similaridade de cosseno entre a incorporação de consulta e as incorporações de pedaços de texto.
- Os pedaços de texto mais relevantes são selecionados com base nas maiores pontuações de similaridade.
Construção imediata :
- Um prompt é criado para o modelo de idioma, incorporando a pergunta do usuário e os pedaços de texto mais relevantes.
Geração de respostas :
- O prompt é enviado para o modelo de idioma (por exemplo, o GPT-3.5 Turbo da OpenAI).
- O modelo gera uma resposta para a pergunta do usuário com base no contexto fornecido.
Exibição de resposta :
- A resposta é exibida ao usuário na interface da web.
- Referências aos pedaços de texto de origem também são fornecidos para transparência.
Começando
Pré -requisitos
- Python : Versão 3.6 ou superior é necessário.
- Chaves da API :
- Chave da API OpenAI : necessário para usar os modelos do OpenAI para incorporação e geração de respostas.
- Chave da API do Ollama : Opcional. Necessário se você quiser usar os modelos Ollama.
Instalação
Clone o repositório
git clone https://github.com/Ulov888/chatpdflike.git
cd chatpdflike
Instalar dependências
Usando pip , instale os pacotes necessários:
pip install -r requirements.txt
Chaves da API
Para usar a API do OpenAI:
Inscreva -se para uma chave de API no OpenAI.
Defina a variável de ambiente OPENAI_API_KEY :
export OPENAI_API_KEY= " your_openai_api_key "
Para usar a API de Ollama (se desejar):
Obtenha uma chave da API de Ollama.
Defina a variável de ambiente OLLAMA_API_KEY :
export OLLAMA_API_KEY= " your_ollama_api_key "
Uso
Inicie o aplicativo
Execute o aplicativo Flask:
Por padrão, o servidor é executado em http://0.0.0.0:8080 .
Acesse a interface da web
Abra um navegador da web e navegue para http://localhost:8080 .
Carregue um documento em PDF
Você pode:
- Clique em "Carregar PDF" para selecionar e faça o upload de um arquivo PDF no seu computador.
- Digite um URL em um documento PDF e clique em "Enviar".
Interagir com o pdf
- Depois que o PDF for processado, você pode fazer perguntas sobre seu conteúdo usando a interface de bate -papo no lado direito da tela.
- Digite sua pergunta na caixa de entrada e pressione "Send".
Ver respostas
- A resposta do aplicativo aparecerá abaixo da sua pergunta.
- Referências de origem (por exemplo, números de página e trechos) são fornecidos para o contexto.

Personalização
Estratégias rápidas
O comportamento do modelo de idioma pode ser personalizado modificando as estratégias rápidas em generate_embedding.py , especificamente no método create_prompt da classe Chatbot .
As estratégias incluem:
- Artigo : para resumir artigos científicos.
- Manual : para resumir manuais financeiros (respostas em chinês).
- Contrato : para entender os contratos (respostas em chinês).
- Padrão : estratégia de uso geral (respostas em chinês).
Para selecionar uma estratégia, você pode modificar o parâmetro strategy ao chamar create_prompt .
Idioma e saída
Atualmente, o aplicativo está configurado para fornecer respostas em chinês para algumas estratégias. Você pode modificar os avisos para alterar o idioma ou ajustar o comportamento do modelo.
Limitações
- Custos da API OpenAI : O uso da API do OpenAI incorrerá em custos com base no uso. Certifique -se de monitorar seu uso da API para evitar cobranças inesperadas.
- PDF Parsing : O aplicativo usa
PyPDF2 , que pode não lidar com todos os PDFs perfeitamente. PDFs complexos com formatação incomum não podem analisar corretamente. - Limites de incorporação : o limite máximo de token para incorporação pode restringir o tamanho dos pedaços de texto ou o comprimento máximo do prompt.
- Respostas do modelo : a qualidade e a precisão das respostas dependem do desempenho do modelo de idioma e da relevância dos pedaços de texto recuperados.
Contribuindo
As contribuições são bem -vindas! Se você tiver alguma sugestão ou melhorias, sinta -se à vontade para enviar um problema ou solicitar a solicitação.
Licença
Este projeto está licenciado sob a licença Apache.