Este proyecto es una bifurcación del autógeno original pero realizado en TypeScript.
AIBITAT es un marco apátrido y extensible diseñado para permitir la interacción entre múltiples agentes al tiempo que permite la participación humana.
Piense en ello como flojo pero para los agentes de IA. Crea agentes, agrégalos a los canales y déjelos charlar entre sí. También puede agregar agentes intratables a los canales y dejar que participen en la conversación.
Para obtener un ejemplo más completo, consulte la carpeta de ejemplos.
Puede instalar el paquete:
# 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 Cree un archivo .env y agregue su OPENAI_API_KEY :
OPENAI_API_KEY=... Luego cree un archivo llamado index.ts y agregue lo siguiente:
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 )Luego corre:
bun run index.ts| Característica | Que hace | Estado |
|---|---|---|
| Mensajes directos | Los agentes hablan directamente entre sí. | ✅ |
| Comentario | Mantenga el chat con vida hasta que algún agente interrumpa el chat. | ✅ |
| Canales | Los agentes hablan con muchos otros, como en un canal flojo. | ✅ |
| Manejo de errores | Administre los límites de velocidad sin problemas sin chocar. | ✅ |
| Ejecución de la función | Los agentes pueden ejecutar tareas y comprender los resultados. | ✅ |
| Navegación web | Navegue en Internet. | ? |
| Cache | Guarde el historial de chat para obtener menos llamadas API más rápidas y menos. | ? |
| Interacción de archivo | Interactuar con archivos locales por leer/escribir/ejecutar | ? |
| Ejecución del código | Los agentes pueden ejecutar código y compartir los resultados. | ? |
| Límite de costos | Limite el número de interacciones por costo. | ? |
| Proveedor | Estado |
|---|---|
| Opadai | ✅ |
| Antrópico | ✅ |
| Adherirse | ? |
| Fuegos artificiales. | ? |
| Cara abrazada | ? |
| Reproducir exactamente | ? |
Algunos términos utilizados en esta documentación:
interrupt : NEVER , ALWAYS . Cuando NEVER , el agente nunca interrumpirá la conversación. Cuando ALWAYS , el agente siempre interrumpirá la conversación. (Nota: cualquiera de ellos puede interrumpir la conversación si responden "interrumpir" o finalizar el chat al responder "terminar".)role : El papel del agente. Se utiliza para describir el papel que el agente realizará en el chat.maxRounds : el número máximo de chats que un agente o un grupo responderá a la conversación. Se usa para prevenir bucles.new AIbitat(config) Crea una nueva instancia de AIBITAT. El objeto config se puede usar para configurar la instancia. Por defecto, AIBITAT usa OpenAI y GPT-3.5-TURBO como proveedor de la conversación y GPT-4 para predecir el próximo agente a hablar. Puede cambiarlo pasando provider y model al constructor AIbitat o configurándolos en la configuración específica del agente/canal. Configuración predeterminada:
{
providers : 'openai' ,
model : 'gpt-3.5-turbo' ,
interrupt : 'NEVER' ,
maxRounds : 100 ,
chats : [
// {
// from: '?',
// to: '?',
// content: `Talk about something`,
// state: 'success',
// },
] ,
}.agent(name, config) Crea un nuevo agente. El objeto config se puede usar para configurar el agente. Por defecto, los agentes usan la interrupt de la configuración de AIbitat .
.channel(name, agents, config) Crea un nuevo canal. El objeto config se puede usar para configurar el canal. Por defecto, maxRounds está configurado en 100 .
.function(config) Las funciones se utilizan para ejecutar código y devolver el resultado a la conversación. Para usarlo, llame al método function que pasa las definiciones de la función y agregue su nombre a la propiedad functions a la configuración del nodo:
const aibitat = new AIbitat ( )
. agent ( '...' , { functions : [ 'doSomething' ] } )
. function ( {
name : 'doSomething' ,
description : 'Let me do something for you.' ,
parameters : {
type : 'object' ,
properties : { } ,
} ,
async handler ( ) {
return '...'
} ,
} )Los resultados se enviarán al proveedor y volverán a la conversación.
.use(plugin) Los complementos se utilizan para extender la funcionalidad de Aibitat. Se pueden usar para agregar nuevas funciones o para integrarse con otros servicios. Puede crear su propio complemento implementando la interfaz AIbitatPlugin .
Para usar un complemento, llame al método use :
...
import { cli } from 'aibitat/plugins'
const aibitat = new AIbitat ( ) . use ( cli ( ) ) También puede crear su propio complemento implementando la interfaz 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 } ` )
} )
} ,
}
}Lista de complementos disponibles:
cli : Agrega una interacción CLI al chat.fileHistory : guarda el historial de chat a un archivo JSON. Predeterminado a la carpeta historyexperimental_webBrowsing : agrega una función web-browsing al chat que permite a los agentes buscar y navegar en Internet. Nota: Este complemento es experimental y puede no funcionar como se esperaba.Aibitat apoya los eventos del ciclo de vida, que se desencadenan en momentos específicos. El siguiente diagrama muestra el ciclo de vida de una conversación:

Los eventos del ciclo de vida en aibitat consisten en:
start : llamado cuando comience el chat.error : llamado cuando hay un error conocido (ver src/error.ts ). Para volver a intentar, llamar .retry() .message : llamado cuando se agrega un mensaje al historial de chat.terminate : llamado cuando se termina la conversación. Generalmente significa que no hay nada más que hacer y se debe comenzar una nueva conversación.interrupt : llamado cuando la conversación es interrumpida por un agente. Generalmente significa que el agente tiene una pregunta o necesita ayuda. La conversación se puede reanudar llamando .continue(feedback) . Copie el archivo .env.example a .env y agregue sus claves/tokens allí.
Para instalar dependencias:
bun installPara correr:
bun run examples/beginner-chat.tsConsulte la carpeta de ejemplos para obtener más ejemplos.
Este proyecto fue creado usando bun init en Bun V1.0.3. Bun es un tiempo de ejecución JavaScript todo en uno rápido.
MIT