Ce projet est une fourche de l'autogène d'origine mais réalisé en dactylographie.
AIBITAT est un cadre apatride et extensible conçu pour permettre l'interaction entre plusieurs agents tout en permettant la participation humaine.
Considérez-le comme Slack mais pour les agents de l'IA. Créez des agents, ajoutez-les aux canaux et laissez-les discuter les uns avec les autres. Vous pouvez également ajouter des agents intraitables aux canaux et les laisser participer à la conversation.
Pour un exemple plus complet, consultez le dossier Exemples.
Vous pouvez installer le package:
# to install bun go to https://bun.sh and follow the instructions
# then run to start a new project:
mkdir my-project
cd my-project
bun init
# then install aibitat
bun install aibitat Créez un fichier .env et ajoutez votre OPENAI_API_KEY :
OPENAI_API_KEY=... Créez ensuite un fichier appelé index.ts et ajoutez ce qui suit:
import { AIbitat } from 'aibitat'
import { cli } from 'aibitat/plugins'
const aibitat = new AIbitat ( )
. use ( cli ( ) )
. agent ( 'client' , {
interrupt : 'ALWAYS' ,
role : 'You are a human assistant. Reply "TERMINATE" when there is a correct answer or there`s no answer to the question.' ,
} )
. agent ( 'mathematician' , {
role : `You are a Mathematician and only solve math problems from @client` ,
} )
. agent ( 'reviewer' , {
role : `You are a Peer-Reviewer and you do not solve math problems.
Check the result from @mathematician and then confirm. Just confirm, no talk.` ,
} )
. channel ( 'management' , [ 'mathematician' , 'reviewer' , 'client' ] )
// aibitat.onMessage(console.log)
await aibitat . start ( {
from : 'client' ,
to : 'management' ,
content : 'How much is 2 + 2?' ,
} )
console . log ( aibitat . chats )Puis courez:
bun run index.ts| Fonctionnalité | Ce qu'il fait | Statut |
|---|---|---|
| Messages directs | Les agents parlent directement les uns avec les autres. | ✅ |
| Retour | Gardez le chat vivant jusqu'à ce qu'un agent interrompt le chat. | ✅ |
| Canaux | Les agents parlent avec beaucoup d'autres, comme dans une chaîne Slack. | ✅ |
| Gestion des erreurs | Gérez les limites de taux en douceur sans s'écraser. | ✅ |
| Exécution de la fonction | Les agents peuvent exécuter des tâches et comprendre les résultats. | ✅ |
| Navigation Web | Naviguer sur Internet. | ? |
| Cache | Enregistrez l'historique du chat pour des appels API plus rapides et moins. | ? |
| Interaction de fichier | Interagissez avec les fichiers locaux en lisant / écriture / exécution | ? |
| Exécution de code | Les agents peuvent exécuter du code et partager les résultats. | ? |
| Limite de coût | Limitez le nombre d'interactions par coût. | ? |
| Fournisseur | Statut |
|---|---|
| Openai | ✅ |
| Anthropique | ✅ |
| Adhérer | ? |
| Feux d'artifice.ai | ? |
| Visage étreint | ? |
| Reproduire | ? |
Quelques termes utilisés dans cette documentation:
interrupt : NEVER , ALWAYS . Quand NEVER , l'agent n'interrompra jamais la conversation. Quand ALWAYS , l'agent interrompra toujours la conversation. (Remarque: chacun d'eux peut interrompre la conversation s'ils répondent "interrompre" ou terminent le chat lors de la réponse "terminer".)role : le rôle de l'agent. Il est utilisé pour décrire le rôle que l'agent jouera dans le chat.maxRounds : le nombre maximal de chats qu'un agent ou un groupe répondra à la conversation. Il est utilisé pour empêcher les boucles.new AIbitat(config) Crée une nouvelle instance AIBITAT. L'objet config peut être utilisé pour configurer l'instance. Par défaut, AIBITAT utilise OpenAI et GPT-3.5-Turbo comme fournisseur de la conversation et GPT-4 pour prédire que l'agent suivant s'exprime. Vous pouvez le modifier en passant provider et model en constructeur AIbitat ou en les définissant sur la configuration d'agent / canal spécifique. Configage par défaut:
{
providers : 'openai' ,
model : 'gpt-3.5-turbo' ,
interrupt : 'NEVER' ,
maxRounds : 100 ,
chats : [
// {
// from: '?',
// to: '?',
// content: `Talk about something`,
// state: 'success',
// },
] ,
}.agent(name, config) Crée un nouvel agent. L'objet config peut être utilisé pour configurer l'agent. Par défaut, les agents utilisent l' interrupt à partir de la configuration AIbitat .
.channel(name, agents, config) Crée un nouveau canal. L'objet config peut être utilisé pour configurer le canal. Par défaut, maxRounds est défini sur 100 .
.function(config) Les fonctions sont utilisées pour exécuter du code et renvoyer le résultat à la conversation. Pour l'utiliser, appelez la méthode function passant les définitions de la fonction et ajoutez son nom à la propriété functions à la configuration du nœud:
const aibitat = new AIbitat ( )
. agent ( '...' , { functions : [ 'doSomething' ] } )
. function ( {
name : 'doSomething' ,
description : 'Let me do something for you.' ,
parameters : {
type : 'object' ,
properties : { } ,
} ,
async handler ( ) {
return '...'
} ,
} )Les résultats seront ensuite envoyés au fournisseur et retournés à la conversation.
.use(plugin) Les plugins sont utilisés pour étendre les fonctionnalités de l'AIBITAT. Ils peuvent être utilisés pour ajouter de nouvelles fonctionnalités ou pour s'intégrer à d'autres services. Vous pouvez créer votre propre plugin en implémentant l'interface AIbitatPlugin .
Pour utiliser un plugin, appelez la méthode use :
...
import { cli } from 'aibitat/plugins'
const aibitat = new AIbitat ( ) . use ( cli ( ) ) Vous pouvez également créer votre propre plugin en implémentant l'interface AIbitatPlugin :
import { AIbitatPlugin } from 'aibitat'
export function myPlugin ( ) : AIbitatPlugin {
return {
name : 'my-plugin' ,
setup ( aibitat ) {
console . log ( `setting up my plugin` )
aibitat . onMessage ( ( { from , to , content } ) => {
console . log ( ` ${ from } : ${ content } ` )
} )
} ,
}
}Liste des plugins disponibles:
cli : ajoute une interaction CLI au chat.fileHistory : enregistre l'historique du chat dans un fichier JSON. Le dossier history par défautexperimental_webBrowsing : ajoute une fonction web-browsing au chat qui permette aux agents de rechercher et de naviguer sur Internet. Remarque: Ce plugin est expérimental et peut ne pas fonctionner comme prévu.Aibitat soutient les événements du cycle de vie, qui se déclenchent à des moments spécifiques. Le diagramme suivant montre le cycle de vie d'une conversation:

Les événements du cycle de vie à Aibitat sont constitués de:
start : appelé lorsque le chat commence.error : appelée lorsqu'il y a une erreur connue (voir src/error.ts ). Pour réessayer, appelez .retry() .message : appelé lorsqu'un message est ajouté à l'historique du chat.terminate : appelé lorsque la conversation est terminée. Généralement, il n'y a rien d'autre à faire et une nouvelle conversation doit être lancée.interrupt : appelé lorsque la conversation est interrompue par un agent. Signifie généralement que l'agent a une question ou a besoin d'aide. La conversation peut être reprise en appelant .continue(feedback) . Copiez le fichier .env.example sur .env et ajoutez vos clés / jetons là-dedans.
Pour installer les dépendances:
bun installPour courir:
bun run examples/beginner-chat.tsConsultez le dossier Exemples pour plus d'exemples.
Ce projet a été créé à l'aide de bun init dans BUN V1.0.3. BUN est un runtime JavaScript tout-en-un rapide.
Mit