Chaz est Chaz.
Il s'agit d'un bot matriciel qui se connecte à plusieurs fournisseurs LLM pour permettre de discuter avec l'un des modèles LLM. Il est compatible avec n'importe quel modèle utilisant l'API OpenAI.
De plus, il est également possible d'utiliser Aichat comme fournisseur, de sorte que tous les modèles disponibles via Aichat sont également accessibles.
Vous aurez besoin de vos propres clés API ou de votre propre IA locale déjà configurée.
Annonce de blog: Chaz: An LLM <-> Matrix Chatbot
Il y a une salle de matrice publique disponible chez #chaz: jackson.dev
Si vous avez vos propres clés API et que vous me faites confiance pour ne pas les abuser, vous pouvez commencer rapidement avec @chaz: jackson.dev. Ajoutez simplement cet utilisateur de matrice dans votre chambre, configurez-le avec vos propres clés API à un backend compatible API OpenAI, et vous êtes prêt à y aller.
Chaz acceptera automatiquement les invitations de salle pour tout utilisateur dans la allow_list .
Quand il est dans une pièce, il surveillera les commandes qui sont préfixées par !chaz . S'il s'agit d'un DM, il répondra à chaque message qu'il ne reconnaîtra pas comme une commande. S'il se trouve dans une pièce plus grande, il ne répondra qu'aux messages qui lui sont envoyés en utilisant !chaz .
Donc, dans une pièce plus grande, envoyez Just !chaz et il sera envoyé tous les messages récents dans la salle et a demandé une réponse. Vous pouvez également envoyer une demande avec cela, par exemple !chaz explain that to me , et il recevra votre message et le contexte de la salle et répondra.
Les commandes qu'il reconnaît sont:
!chaz help
Available commands:
!chaz print - Print the conversation
!chaz send < message > - Send a message without context
!chaz model < model > - Select the model to use
!chaz backend < name > <api_base> <api_key> - Manually enter an OpenAI Compatible Backend
!chaz role [ < role > ] [ < prompt > ] - Get the role info, set the role, or define a new role
!chaz list - List available models
!chaz clear - Ignore all messages before this point
!chaz rename - Rename the room and set the topic based on the chat content
!chaz help - Show this message La commande !chaz role prend 0, 1 ou plusieurs arguments.
!chaz role pour afficher le rôle actuel et répertorier tous les rôles disponibles.!chaz role <name> pour définir un rôle existant par défaut.!chaz role <name> <prompt> pour créer un nouveau rôle avec l'invite donnée. chaz n'est emballé que sur Crates.io, mais il est recommandé de courir de Git Head pour l'instant.
Pour les utilisateurs de Nix, ce repo contient un flocon Nix. Voir la section Configuration pour plus de détails sur la configuration.
Il existe une image Docker disponible sur Docker Hub. Voici un exemple de composition Docker:
services :
chaz :
image : arcuru/chaz:main # Set to your desired version
restart : unless-stopped
network_mode : host
volumes :
# Mount your config file to /config.yaml
- ./config.yaml:/config.yaml
# Mount your aichat config to /aichat, AND SET THAT LOCATION IN CHAZ'S CONFIG.YAML
- aichat-state:/aichat
- ./aichat.yaml:/aichat/config.yaml
# Mount the volume into the same location specified in config.yaml
- chaz-state:/state
volumes :
# Persists the logged in session
chaz-state :
aichat-state :Notez que cela nécessite que 2 fichiers de configuration soient montés dans le conteneur, un pour Chaz et un pour Aichat. Vous devrez également définir les répertoires State / Cache dans votre fichier Chaz Config.
Le fichier de configuration Chaz doit ressembler à ceci:
homeserver_url : https://matrix.jackson.dev
username : " chaz "
password : " "
state_dir : " /state "
aichat_config_dir : " /aichat "
allow_list : " @.*:jackson.dev|@arcuru:matrix.org " Tout d'abord, configurez un compte sur n'importe quel serveur matriciel pour le bot à utiliser.
Créez un fichier de configuration pour le bot avec ses informations de connexion.
IMPORTANT : Assurez-vous que vous configurez votre perte_list ou le bot ne répondra pas
Les défauts sont configurés dans src / default.rs
homeserver_url : https://matrix.org
username : " chaz "
password : " " # Optional, if not given it will ask for it on first run
allow_list : " " # Regex for allowed accounts.
# message_limit: 0 # Set a per-account message limit, it will not allow more than this many messages per account.
# room_size_limit: 0 # Set a room size limit. It will refuse join if the room is too large.
state_dir : " $XDG_STATE_HOME/chaz " # Optional, for setting the chaz state directory
aichat_config_dir : " $AICHAT_CONFIG_DIR " # Optional, for using a separate aichat config
chat_summary_model : " " # Optional, set a different model than the default to use for summarizing the chat
disable_media_context : false # Optional, set to true to disable sending media context to aichat
role : chaz # Optionally set a role, AKA system prompt. Set to `chaz` for the full chaz experience, or `cave-chaz` for even more chaz
# Define backends. If more than 1 is defined, model names will be prefixed by the backends name.
# If none are defined, Chaz will look for Aichat
backends :
- name : openai # Name of the backend, models will be shown with this as a prefix, e.g. openai:gpt-4
type : openaicompatible
api_key :
api_base : https://api.openai.com/v1
models : # Listing models here is not necessary, but does make Chaz aware of them. You can still switch to a model not listed here through '!chaz model ....'
- name : gpt-4o
- name : gpt-4o-mini
- name : tog # Name can be anything. Model names will be "tog:<model>"
type : openaicompatible
api_key :
api_base : https://api.together.xyz/v1
- name : aic
type : aichat
roles : # Optional, define your own roles
- name : chaz # This one is predefined
description : Chaz is Chaz
prompt : " Your name is Chaz, you are an AI assistant, and you refer to yourself in the third person. "
example : # Optionally define example messages.
- user : User
message : " Are you ready? "
- user : Assistant
message : " Chaz is ready. "
- name : bash
description : Get a single shell command
prompt : >
Based on the following user description, generate a corresponding Bash shell command.
Focus solely on interpreting the requirements and translating them into a single, executable Bash command.
Ensure accuracy and relevance to the user's description.
The output should be a valid Bash command that directly aligns with the user's intent, ready for execution in a command-line environment.
Do not output anything except for the command.
No code block, no English explanation, no newlines, and no start/end tags. Pour l'exécuter, simplement:
chaz --config config.yaml .Le bot ne répondra pas aux messages plus anciens envoyés alors qu'il n'était pas en cours d'exécution pour éviter de submerger le backend.
Le développement se fait en utilisant un flocon Nix. La façon la plus simple d'installer Chaz est d'utiliser Nix Flakes.
❯ nix run github:arcuru/chazLe flocon contient une superposition pour faciliter l'importation dans votre propre configuration de flocons. Pour utiliser, ajoutez-le à vos entrées:
inputs . chaz . url = "github:arcuru/chaz" ; Puis ajoutez les inputs.chaz.overlays.default superposition.chaz.overlays.default à vos PKG.
Le flocon contient également un module de gestionnaire à domicile pour installer Chaz en tant que service. Importez le module dans votre configuration de manager domestique et vous pouvez configurer chaz tout à partir de Nix:
{ inputs , ... } : {
imports = [ inputs . chaz . homeManagerModules . default ] ;
services . chaz = {
enable = true ;
settings = {
homeserver_url = "https://matrix.jackson.dev" ;
username = "chaz" ;
password = "hunter2" ;
allow_list = "@me:matrix.org|@myfriend:matrix.org" ;
} ;
} ;
} Reflété sur GitHub et Codeberg. GitHub est le dépôt officiel, mais utilisez l'un ou l'autre référentiel pour contribuer. Les problèmes ne peuvent pas être synchronisés, il peut donc y avoir des doublons.