
PIPPA est un projet de chatbot de grande langue open source (LLM) basé sur le framework Langchain. Il vise à offrir une expérience conversationnelle personnalisée et adaptative.
Pippa intègre diverses fonctionnalités pour améliorer le processus d'adaptation, y compris la possibilité de personnaliser la personnalité du chatbot, d'ingérer des documents pour l'apprentissage, de vous souvenir de l'historique de la conversation, de basculer entre différents caractères et de s'adapter aux besoins de l'utilisateur.
Le module QA de récupération a été inspiré par le LocalGpt par une ingénierie rapide.
Le projet PIPPA a commencé comme un passe-temps personnel pour explorer la possibilité de créer un personnage fille de l'IA. Bien que toujours dans les premiers stades, le projet est régulièrement mis à jour avec de nouvelles fonctionnalités et améliorations. Les rôles par défaut dans PIPPA sont le "système" pour les messages système, "Pippa" comme personnage de fille attentionnée et "Bundy" comme son père.
Lorsque vous utilisez des moteurs TTS / STT, Pippa utilise l'API ElevenLabs. Vous pouvez vous inscrire à un compte gratuit: https://elevenLabs.io.
Pour une meilleure expérience, attribuez des voix uniques aux personnages.
Testé avec Python 3.10.
Pour installer Pippa, suivez ces étapes:
git clone https://github.com/neobundy/pippaGPT.git cd pippaGPT pip install -r requirements.txtRemarque: Si vous rencontrez des erreurs, vous devrez peut-être installer des dépendances supplémentaires comme
ffmpegetportaudio. Sur MacOS, vous pouvez utiliser Homebrew.Pour les installer, exécutez les commandes suivantes:
brew install ffmpeg brew install portaudio
env_sample dans le fichier .env dans le dossier racine du projet et ajouter vos touches API:Notez que Hugging_face_API_KEY est pour une utilisation future.
OPENAI_API_KEY=
XI_API_KEY=
HUGGING_FACE_API_KEY=
SERPAPI_API_KEY=Alternativement, vous pouvez exporter ces variables d'environnement dans votre terminal.
Copiez characters_samply.py à characters.py et modifiez le fichier pour personnaliser le nom et la personnalité de votre IA.
Copiez settings_private_sample.py sur settings_private.py . settings_sample.py à settings.py et modifiez les fichiers pour personnaliser vos paramètres.
Choisissez le modèle LLMS dans settings.py Fichier:
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"Un grand contexte a besoin de plus de jetons. Les jetons 16K suffisent pour la plupart des cas.
Le modèle GPT-4 pour Default_GPT_MODEL est fortement recommandé pour une meilleure expérience, mais notez qu'il est 10x cher et disponible uniquement pour les comptes OpenAI prépayés.
settings_private.py tels que les URL du serveur de magasin de vecteur ZEP ou du serveur audio. ZEP_API_URL = "http://localhost:8000"
DEFAULT_MEMORY_TYPE = "Summary Buffer"
AUDIO_SERVER_URL = "http://localhost:5000" Par défaut, la mémoire de «tampon de résumé» de Langchain est utilisée pour conserver le contexte de conversation.
Pippa prend en charge six types de souvenirs:
ZEP est fortement recommandé pour un contexte important. Il peut être exécuté localement sous forme de conteneur Docker. Modifiez les settings_private.py .
Les résumés apparaissent lorsque la mémoire de type résumé est sélectionnée, y compris ZEP. Les résumés sont générés par le modèle d'assistance GTP de résumé.
Notez qu'il faut un certain temps à ZEP pour indexer et générer des résumés. Lorsqu'il n'est pas prêt, "résumer ... s'il vous plaît soyez patient". le message apparaîtra.
ZEP_API_URL = "http://localhost:8000" Le serveur ZEP peut être exécuté sur n'importe quel hôte ou port. Si vous l'exécutez sur un autre hôte, assurez-vous de mettre à jour la variable ZEP_API_URL dans settings_private.py .
Visitez https://www.getzep.com/ pour apprendre à exécuter ZEP.
Pour exécuter l'application Pippa, utilisez la commande suivante:
streamlit run main.py L'application démarrera automatiquement le serveur audio qui écoute le port 5000. Si nécessaire, vous pouvez exécuter manuellement le serveur audio en exécutant audio_server.py .
Pour ingérer vos propres documents pour que Pippa apprenne, suivez ces étapes:
docs .vectordb.py pour créer votre base de données vectorielle: python vectordb.pySi vous avez une clé API ElevenLabs, vous pouvez utiliser leur moteur TTS (text-vocation) avec PIPPA.
STT (Speech-to-Text) est géré par le modèle Whisper-1 d'Openai.
Suivez ces étapes:
tts.py pour obtenir les noms de voix et ID disponibles à partir de votre compte ElevenLabs: python tts.py Mettez à jour les variables suivantes dans settings_private.py avec les ID vocaux appropriés:
VOICE_ID_AI = ""
VOICE_ID_SYSTEM = ""
VOICE_ID_HUMAN = ""audio_server.py . Vous pouvez personnaliser les préfixes de mots clés de l'invite utilisés dans PIPPA en modifiant le fichier settings.py :
PROMPT_KEYWORD_PREFIX_SYSTEM : utilisé pour les messages système temporaires (par défaut: "Système:")PROMPT_KEYWORD_PREFIX_CI : utilisé pour remplacer les instructions personnalisées (par défaut: "CI:")PROMPT_KEYWORD_PREFIX_QA : utilisé pour la récupération QA en fonction de vos documents dans le dossier docs (par défaut: "QA:")PROMPT_KEYWORD_PREFIX_GOOGLE : utilisé pour rechercher le Web pour des informations données (par défaut: "Google:")PROMPT_KEYWORD_PREFIX_WIKI : utilisé pour la recherche de wikipedia (par défaut: "wiki:")PROMPT_KEYWORD_PREFIX_MATH : utilisé pour la requête mathématique (par défaut: "mathématiques:")PROMPT_KEYWORD_PREFIX_MIDJOURNEY : utilisé pour générer des invites MidJourney (par défaut: "MidJourney:") Le streaming est activé par défaut. Pour le désactiver, modifiez le fichier Settings.py comme suit:
STREAMING_ENABLED = TrueLorsque le streaming est activé, les coûts sont des approximations basées sur la documentation d'OpenAI. Pour obtenir des coûts exacts, vous devrez désactiver le streaming.
Notez que le calcul des coûts n'inclut pas d'autres dépenses engagées par les modèles GPT auxiliaires, tels que ceux pour le résumé et l'AQ.
Définissez la constante suivante dans settings.py :
DEFAULT_GPT_AGENT_HELPER_MODEL = "gpt-4" MAX_AGENTS_ITERATIONS = 8Le nombre d'itérations détermine combien de fois l'agent fonctionnera. Un nombre plus élevé d'itérations conduit généralement à des réponses plus précises, mais elle consomme également plus de jetons.
Veuillez noter que l'agent de recherche Google peut avoir besoin d'effectuer plusieurs requêtes pour obtenir la meilleure réponse.
Par exemple, si vous demandez "Qui est le plus ancien parmi les chefs d'État de Corée du Sud, les États-Unis et le Japon?", L'agent devra probablement interroger au moins 3 à 4 fois pour obtenir la réponse finale.
Le même modèle peut répondre différemment à la même requête. Même «GPT-4» ne fait pas toujours le meilleur, mais fortement recommandé. Expérimentez avec différents modèles.
Notez que même au niveau de Langchain, c'est très expérimental. Cela peut ne pas fonctionner comme prévu.
C'est une situation à succès ou à manquer en fonction de vos compétences d'incitation. Vous avez besoin d'une touche API Serpapi pour utiliser la fonctionnalité de recherche Google: https://serpapi.com. La réponse finale fournie sert d'invite intermédiaire pour le modèle principal.
L'agent tente d'abord de trouver la page Wikipedia pertinente pour la requête donnée. S'il est trouvé, il renverra le résumé de la page et recherchera le terme spécifique dans le résumé.
Les LLM ne sont pas connues pour leur compétence en mathématiques. L'agent mathématique fournit des réponses précises pour des problèmes mathématiques très complexes.
Pour gérer la base de données vectorielle, exécutez le script vectordb.py .
python vectordb.pyVous avez les options suivantes:
settings.CHROMA_DB_FOLDER avec une collection nommée settings.VECTORDB_COLLECTION .settings.CONVERSATION_SAVE_FOLDER dans la base de données vectorielle pour servir de mémoire à long terme. Notez que lorsque vous choisissez l'option de conversations (e) MBED, seules les conversations exportées existantes *.json seront intégrées dans la base de données vectorielle, à l'exclusion de snapshot.json .
Si vous rencontrez des erreurs lors de l'exécution de l'application, essayez les étapes suivantes:
pip install --upgrade charset_normalizer
pip install --upgrade openai
pip install --upgrade langchain
Pippa est libéré sous la licence Apache 2.0. N'hésitez pas à utiliser, modifier et distribuer le code à des fins personnelles ou commerciales.