IMPORTANT: La guerre en Ukraine est toujours en cours. Chaque jour, des soldats russes violaient, assassinaient, torturent et déportent des civils ukrainiens. Visitez cette page pour voir comment vous pouvez soutenir l'Ukraine aujourd'hui.
Horace vous permet d'implémenter un chatbot personnalisé avec votre choix de LLM et un ensemble de plugins ChatGpt. Il s'exécute en tant que serveur WebSocket, vous permettant d'ajouter facilement un chatbot alimenté par LLM à votre application Web ou mobile.
Caractéristiques:
none , user_http , service_httpHorace s'appuie et étend Grace, mon chatbot d'origine alimenté par LLM. Voici Horace qui s'exécute en mode débogage avec le plugin Klarna Chatgpt, accessible via un client Web:
cd horacepython3 -m venv ./venvsource ./venv/bin/activatepip3 install -r requirements.txtapp : cd appOPENAI_API_KEY=openai-api-key python3 main.py (remplacer openai-api-key par votre touche API Openai - obtenez-le ici) cd horace
source ./venv/bin/activate
python3 app/horace-cli.py
client-demo/index.html dans Explorer / Finder, etc. pour l'ouvrir dans votre navigateur. cd horacedocker build -t horace:latest . docker run --rm
-e OPENAI_API_KEY=openai-api-key
-p 8001:8001
--name horace
horace:latest
docker exec -it horace python3 /app/horace-cli.pyclient-demo/index.html dans Explorer / Finder, etc. pour l'ouvrir dans votre navigateur. main.py et horace-cli.py prennent en charge quelques arguments en ligne de commande:
python3 main.py --help
usage: main.py [-h] [--host HOST] [--port PORT] [--debug]
optional arguments:
-h, --help show this help message and exit
--host HOST bind host name
--port PORT bind port number
--debug enable debug mode
python3 app/horace-cli.py --help
usage: horace-cli.py [-h] [--host HOST] [--port PORT]
optional arguments:
-h, --help show this help message and exit
--host HOST server host name
--port PORT server port number
Pour le moment, seul le backend API OpenAI est pris en charge. (Je ne suis pas au courant des LLM non openai avec un niveau de suivi des instructions suffisant pour l'invocation du plugin en ce moment.) Cependant, l'ajout d'un backend LLM personnalisé avec Horace est assez simple:
Backend située dans backends/backend.py et implémentez la méthode complete()backendsmain.pyBACKENDS dans main.py pour inclure l'alias de votre nouvel backend et le nom de la classeconfig.yaml : backend:
name: my_llm_backend
Reportez-vous au backend API OpenAI ( backends/openai_backend.py ) comme exemple.
Le backend API OpenAI vous permet de basculer entre les modèles suivants:
Voir config.yaml pour basculer entre les modèles API OpenAI.
Horace travaille avec les plugins Chatgpt hors de la boîte. Pour activer un plugin, ajoutez son nom d'hôte avec un numéro de port en option dans la section plugins dans config.yaml :
router:
plugins:
# For https://github.com/artmatsak/chatgpt-todo-plugin/
# - localhost:5002
- www.klarna.com
Au début, le serveur demande http://[hostname]/.well-known/ai-plugin.json pour chaque plugin et le prend à partir de là pour les charger.
Horace prend actuellement en charge les méthodes AUTH none , user_http et server_http pour les plugins ChatGPT. Si un jeton Auth est requis pour un plugin, Horace vous en demande un pendant le démarrage du serveur. Pour le moment, les jetons AUTH sont sauvés non cryptés dans .plugin_auth.json .
L'invite LLM par défaut pour Horace est conçue pour rendre le bot neutre. Le bot n'est ni limité aux demandes d'utilisateurs facilitées par le plugin (comme un bot de réservation de restaurant, par exemple), et il n'appuie pas de manière proactive la fonctionnalité compatible avec le plugin sur l'utilisateur. En d'autres termes, vous pouvez discuter avec le bot comme vous le feriez normalement avec Chatgpt; Si le bot estime que l'appel d'une méthode de plugin est nécessaire, il le fera.
Dans les scénarios du monde réel, vous voudrez peut-être limiter le bot à une portée particulière comme réserver une table (voir l'invite de Grace pour l'inspiration), ou peut-être lui fournir une voix / une personnalité unique. Pour ce faire, vous pouvez ajouter des instructions à l'invite LLM en utilisant la propriété extra_instructions dans config.yaml :
horace:
# Any extra instructions to prepend the prompt with
extra_instructions: >-
You are a helpful and polite AI assistant.
# extra_instructions: >-
# In your speech, you impersonate Jedi Master Yoda and crack jokes in response
# to mentions of other Star Wars characters.
Essayez de découverte le bloc Yoda ci-dessus pour voir comment la voix du chatbot change en conséquence. (N'oubliez pas de redémarrer le serveur après avoir apporté des modifications à la configuration.)
Les tests n'ont pas encore été mis à jour depuis la suppression de Grace. À fixer.