
O PIPPA é um projeto de chatbot de modelo de idioma grande de código aberto (LLM) com base na estrutura de Langchain. O objetivo é oferecer uma experiência de conversação personalizada e adaptativa.
O PIPPA incorpora vários recursos para aprimorar o processo de adaptação, incluindo a capacidade de personalizar a personalidade do chatbot, ingerir documentos para aprender, lembrar do histórico de conversas, alternar entre diferentes caracteres e se adaptar às necessidades do usuário.
O módulo de QA de recuperação foi inspirado pelo LocalGPT por engenharia imediata.
O projeto Pippa começou como um hobby pessoal para explorar a possibilidade de criar um personagem filha da IA. Embora ainda nos estágios iniciais, o projeto é atualizado regularmente com novos recursos e melhorias. Os papéis padrão em Pippa são "sistema" para mensagens do sistema, "Pippa" como personagem da filha carinhosa e "Bundy" como seu pai.
Ao usar os motores TTS/STT, o PIPPA usa a API do Elevenlabs. Você pode se inscrever em uma conta gratuita: https://elevenlabs.io.
Para uma experiência melhor, atribua vozes únicas aos personagens.
Testado com Python 3.10.
Para instalar Pippa, siga estas etapas:
git clone https://github.com/neobundy/pippaGPT.git cd pippaGPT pip install -r requirements.txtNota: Se você encontrar erros, pode ser necessário instalar dependências adicionais como
ffmpegeportaudio. No MacOS, você pode usar o Homebrew.Para instalá -los, execute os seguintes comandos:
brew install ffmpeg brew install portaudio
env_sample para o arquivo .env na pasta raiz do projeto e adicione suas teclas de API:Observe que hugging_face_api_key é para uso futuro.
OPENAI_API_KEY=
XI_API_KEY=
HUGGING_FACE_API_KEY=
SERPAPI_API_KEY=Como alternativa, você pode exportar essas variáveis de ambiente em seu terminal.
Copie characters_samply.py para characters.py e edite o arquivo para personalizar o nome e a personalidade da sua IA.
Copie settings_private_sample.py para settings_private.py . settings_sample.py para settings.py e edite os arquivos para personalizar suas configurações.
Escolha o modelo LLMS no arquivo settings.py :
DEFAULT_GPT_MODEL = "gpt-3.5-turbo"
DEFAULT_GPT_HELPER_MODEL = "gpt-3.5-turbo-16k"
DEFAULT_GPT_QA_HELPER_MODEL = "gpt-3.5-turbo-16k"Grande contexto precisa de mais tokens. 16k tokens é suficiente para a maioria dos casos.
O modelo GPT-4 para default_gpt_model é altamente recomendado para uma melhor experiência, mas observe que é caro 10x e disponível apenas para contas do OpenAI pré-pago.
settings_private.py , como o ZEP Vector Store Server ou o Audio Server. ZEP_API_URL = "http://localhost:8000"
DEFAULT_MEMORY_TYPE = "Summary Buffer"
AUDIO_SERVER_URL = "http://localhost:5000" Por padrão, a memória "resumo" de Langchain é usada para manter o contexto da conversa.
Pippa suporta seis tipos de memórias:
O ZEP é altamente recomendado para um grande contexto. Ele pode ser executado localmente como um recipiente do docker. Edite o settings_private.py .
Os resumos aparecem quando a memória do tipo de resumo é selecionada, incluindo ZEP. Os resumos são gerados pelo modelo Helper GTP Summarization.
Observe que leva um tempo para o ZEP indexar e gerar resumos. Quando não estiver pronto, "resumindo ... por favor, seja paciente". mensagem aparecerá.
ZEP_API_URL = "http://localhost:8000" O servidor ZEP pode ser executado em qualquer host ou porta. Se você executá -lo em um host diferente, atualize a variável ZEP_API_URL em settings_private.py .
Visite https://www.getzep.com/ para aprender a executar o ZEP.
Para executar o aplicativo Pippa, use o seguinte comando:
streamlit run main.py O aplicativo iniciará automaticamente o servidor de áudio que ouve na porta 5000. Se necessário, você poderá executar manualmente o servidor de áudio executando audio_server.py .
Para ingerir seus próprios documentos para Pippa aprender, siga estas etapas:
docs .vectordb.py para criar seu banco de dados vetorial: python vectordb.pySe você possui uma chave de API do Elevenlabs, poderá usar o motor TTS (texto em fala) com PIPPA.
O STT (fala para texto) é tratado pelo modelo Whisper-1 do OpenAI.
Siga estas etapas:
tts.py para obter os nomes de voz e IDs disponíveis da sua conta Elevenlabs: python tts.py Atualize as seguintes variáveis em settings_private.py com os IDs de voz apropriados:
VOICE_ID_AI = ""
VOICE_ID_SYSTEM = ""
VOICE_ID_HUMAN = ""audio_server.py . Você pode personalizar os prefixos de palavras -chave imediatas usadas no PIPPA, editando o arquivo settings.py :
PROMPT_KEYWORD_PREFIX_SYSTEM : usado para mensagens temporárias do sistema (padrão: "System:")PROMPT_KEYWORD_PREFIX_CI : usado para substituir instruções personalizadas (padrão: "CI:")PROMPT_KEYWORD_PREFIX_QA : usado para QA de recuperação com base em seus documentos na pasta docs (padrão: "QA:")PROMPT_KEYWORD_PREFIX_GOOGLE : usado para pesquisar na Web para obter informações determinadas (padrão: "Google:")PROMPT_KEYWORD_PREFIX_WIKI : usado para pesquisar a Wikipedia (padrão: "Wiki:")PROMPT_KEYWORD_PREFIX_MATH : usado para consulta matemática (padrão: "Math:")PROMPT_KEYWORD_PREFIX_MIDJOURNEY : usado para gerar prompts de Midjourney (padrão: "Midjourney:") O streaming é ativado por padrão. Para desativá -lo, modifique o arquivo Settings.py da seguinte forma:
STREAMING_ENABLED = TrueQuando o streaming é ativado, os custos são aproximações com base na documentação do OpenAI. Para obter custos exatos, você precisará desativar a transmissão.
Observe que o cálculo de custos não inclui outras despesas incorridas pelos modelos Auxiliares GPT, como os de resumo e controle de qualidade.
Defina a seguinte constante em settings.py :
DEFAULT_GPT_AGENT_HELPER_MODEL = "gpt-4" MAX_AGENTS_ITERATIONS = 8O número de iterações determina quantas vezes o agente será executado. Um número maior de iterações geralmente leva a respostas mais precisas, mas também consome mais tokens.
Observe que o agente de pesquisa do Google pode precisar executar várias consultas para obter a melhor resposta.
Por exemplo, se você perguntar "quem é o mais antigo entre os chefes de estado da Coréia do Sul, EUA e Japão?", O agente provavelmente precisará consultar pelo menos 3-4 vezes para obter a resposta final.
O mesmo modelo pode responder de maneira diferente à mesma consulta. Até o 'GPT-4' nem sempre tem o melhor desempenho, mas altamente recomendado. Experimente com diferentes modelos.
Observe que, mesmo no nível de Langchain, é altamente experimental. Pode não funcionar como esperado.
É uma situação de sucesso ou falta, dependendo de suas habilidades de promoção. Você precisa de uma chave da API Serpapi para usar o recurso de pesquisa do Google: https://serpapi.com. A resposta final fornecida serve como um prompt intermediário para o modelo principal.
O agente primeiro tenta encontrar a página da Wikipedia relevante para a consulta fornecida. Se encontrado, ele retornará o resumo da página e procurará o termo específico dentro do resumo.
Os LLMs não são conhecidos por sua proficiência em matemática. O agente de matemática fornece respostas precisas para problemas matemáticos altamente complexos.
Para gerenciar o banco de dados vetorial, execute o script vectordb.py .
python vectordb.pyVocê tem as seguintes opções:
settings.CHROMA_DB_FOLDER com uma coleção chamada settings.VECTORDB_COLLECTION .settings.CONVERSATION_SAVE_FOLDER no banco de dados do vetor para servir como memória de longo prazo. Observe que, quando você escolhe a opção de conversas (e), apenas as conversas exportadas existentes *.json serão incorporadas ao banco de dados do vetor, excluindo snapshot.json .
Se você encontrar erros ao executar o aplicativo, tente as seguintes etapas:
pip install --upgrade charset_normalizer
pip install --upgrade openai
pip install --upgrade langchain
O PIPPA é liberado sob a licença Apache 2.0. Sinta -se à vontade para usar, modificar e distribuir o código para fins pessoais ou comerciais.