Perguntas e respostas da faculdade Chatbot
Este projeto é um chatbot de perguntas e respostas projetado para responder a perguntas relacionadas à Academia Global de Tecnologia (GAT) usando uma combinação de grandes modelos de linguagem (LLMS), embebidos em texto, geração de recuperação de recuperação (RAG) e técnicas de engenharia rápida. O chatbot pode processar entradas de texto e áudio, fornecendo respostas relevantes com base no histórico de conversas e nos documentos pré -carregados.
Características
- Entrada de texto e áudio : aceita consultas de usuário por entrada de texto ou gravação de voz.
- Geração de recuperação de recuperação (RAG) : aprimora as respostas usando informações relevantes recuperadas de documentos pré-carregados.
- Respostas com conhecimento de contexto : utiliza o histórico de conversas para fornecer respostas coerentes e contextualmente apropriadas.
- Interface do streamlit : interface amigável, criada com o streamlit, apresentando opções para o modo de acompanhamento e a personalização da profundidade da pesquisa.
Instalação
Clone o repositório
git clone https://github.com/mahadev0811/CollegeChatbot.git
cd CollegeChatbot
Crie um ambiente virtual
python -m venv venv
source venv/bin/activate # On Windows use `venvScriptsactivate`
Instalar dependências
pip install -r requirements.txt
Configure a chave da API
- Crie um arquivo
config.json no diretório raiz com sua chave da API do Google:
{
"google_api_key" : " YOUR_GOOGLE_API_KEY "
}
Uso
Execute o aplicativo
Interagir com o chatbot
- Use a caixa de entrada de texto ou o gravador de áudio para enviar suas consultas.
- Ajuste as configurações usando as opções da barra lateral:
- Modo de perguntas de acompanhamento : alternar para usar o histórico de conversas para respostas.
- Profundidade de pesquisa : ajuste o número de parágrafos para pesquisar nos documentos para obter informações relevantes.
Estrutura do projeto
- st_app.py : script de aplicativo principal.
- incorpingding_generator.py : script para gerar incorporações a partir do arquivo de dados.
- WebScrapper.ipynb : Notebook Jupyter para raspar dados de texto dos URLs para gerar o arquivo de dados brutos.
- config.json : arquivo de configuração para chaves da API.
- requisitos.txt : Lista de pacotes Python necessários.
- Data_generation/gat_raw.txt : dados raspados em bruto contendo informações sobre o GAT.
- Data_generation/gat_refined.txt : versão supervisionada e editado dos dados brutos.
- gat_embeddings.pkl : incorporações pré -computadas para o documento pré -carregado.
Gerando dados
Para gerar o arquivo de dados brutos iniciais ( gat_raw.txt ), use o notebook webscrapper.ipynb . Este notebook elimina o conteúdo de texto de URLs e formatos determinados adequadamente.
Gerando incorporações
Para gerar incorporação a partir do seu arquivo de dados, use o script incorpedding_generator.py . Este script lê um arquivo de texto que contém os dados, gera incorporação usando o modelo de flagembedding e salva as incorporações como um arquivo de picles.
Executando o gerador de incorporação
Prepare seu arquivo de dados
- Verifique se o seu arquivo de dados (por exemplo, data_generation/gat_refined.txt) está no formato correto, com parágrafos separados por linhas de novo duplo ( n n).
Execute o script
Execute o script incorpingding_generator.py com o caminho para o seu arquivo de dados como argumento:
python embedding_generator.py --data_file data_generation/gat_refined.txt
O script gerará incorporações para os parágrafos no arquivo de dados e os salvará como um arquivo de picles ( gat_embeddings.pkl ).
Capturas de tela
- Este vídeo mostra o chatbot em ação, respondendo a perguntas sobre GAT:
gravações.mp4
Créditos
- FlagEmbding: modelo de incorporação personalizado usado para codificar consultas.
- Streamlit: estrutura de aplicativos de código aberto para projetos de ML e ciência de dados.
- Abraçando Transformers de rosto: Biblioteca para modelos de PNL de última geração.
- API de fala para texto do Google Cloud: Serviço para converter fala em texto.
- Google AI generativo: usado para gerar respostas.
Licença
Este projeto está licenciado sob a licença do MIT - consulte o arquivo de licença para obter detalhes.