Este projeto é um garfo do autogênio original, mas feito no TypeScript.
O Aibitat é uma estrutura apátrida e extensível projetada para permitir a interação entre vários agentes, permitindo a participação humana.
Pense nisso como folga, mas para os agentes da IA. Crie agentes, adicione -os aos canais e deixe -os conversar um com o outro. Você também pode adicionar agentes intratáveis aos canais e permitir que eles participem da conversa.
Para um exemplo mais completo, consulte a pasta Exemplos.
Você pode instalar o pacote:
# 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 Crie um arquivo .env e adicione seu OPENAI_API_KEY :
OPENAI_API_KEY=... Em seguida, crie um arquivo chamado index.ts e adicione o seguinte:
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 )Em seguida, corra:
bun run index.ts| Recurso | O que faz | Status |
|---|---|---|
| Mensagens diretas | Os agentes conversam diretamente entre si. | ✅ |
| Opinião | Mantenha o bate -papo vivo até que algum agente interrompa o bate -papo. | ✅ |
| Canais | Os agentes conversam com muitos outros, como em um canal frouxo. | ✅ |
| Manuseio de erros | Gerencie os limites da taxa sem problemas sem travar. | ✅ |
| Execução da função | Os agentes podem executar tarefas e entender os resultados. | ✅ |
| Navegação na web | Navegue na Internet. | ? |
| Cache | Salve o histórico de bate -papo para chamadas de API mais rápidas e menores. | ? |
| Interação do arquivo | Interagir com arquivos locais por leitura/gravação/execução | ? |
| Execução de código | Os agentes podem executar o código e compartilhar os resultados. | ? |
| Limite de custo | Limite o número de interações por custo. | ? |
| Provedor | Status |
|---|---|
| Openai | ✅ |
| Antrópico | ✅ |
| Coere | ? |
| Fogos de artifício | ? |
| Abraçando o rosto | ? |
| Replicar | ? |
Alguns termos usados nesta documentação:
interrupt : NEVER , ALWAYS . Quando NEVER , o agente nunca interrompe a conversa. Quando ALWAYS , o agente sempre interrompe a conversa. (Nota: qualquer um deles pode interromper a conversa se responder "interromper" ou encerrar o bate -papo ao responder "encerrar".)role : o papel do agente. É usado para descrever o papel que o agente terá no bate -papo.maxRounds : o número máximo de bate -papos que um agente ou um grupo responderá à conversa. É usado para evitar loops.new AIbitat(config) Cria uma nova instância do AIBITAT. O objeto config pode ser usado para configurar a instância. Por padrão, o Aibitat usa o OpenAI e GPT-3.5-Turbo como provedor da conversa e GPT-4 para prever o próximo agente para falar. Você pode alterá -lo passando por provider e model para o construtor AIbitat ou configurando -os na configuração de agente/canal específico. Config padrão:
{
providers : 'openai' ,
model : 'gpt-3.5-turbo' ,
interrupt : 'NEVER' ,
maxRounds : 100 ,
chats : [
// {
// from: '?',
// to: '?',
// content: `Talk about something`,
// state: 'success',
// },
] ,
}.agent(name, config) Cria um novo agente. O objeto config pode ser usado para configurar o agente. Por padrão, os agentes usam a interrupt da configuração AIbitat .
.channel(name, agents, config) Cria um novo canal. O objeto config pode ser usado para configurar o canal. Por padrão, maxRounds está definido como 100 .
.function(config) As funções são usadas para executar o código e retornar o resultado à conversa. Para usá -lo, chame o método function que passa as definições para a função e adicione seu nome à propriedade functions à configuração do nó:
const aibitat = new AIbitat ( )
. agent ( '...' , { functions : [ 'doSomething' ] } )
. function ( {
name : 'doSomething' ,
description : 'Let me do something for you.' ,
parameters : {
type : 'object' ,
properties : { } ,
} ,
async handler ( ) {
return '...'
} ,
} )Os resultados serão enviados ao provedor e devolvidos à conversa.
.use(plugin) Os plugins são usados para estender a funcionalidade do AIBITAT. Eles podem ser usados para adicionar novos recursos ou se integrar a outros serviços. Você pode criar seu próprio plug -in implementando a interface AIbitatPlugin .
Para usar um plug -in, chame o método use :
...
import { cli } from 'aibitat/plugins'
const aibitat = new AIbitat ( ) . use ( cli ( ) ) Você também pode criar seu próprio plug -in implementando a 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 } ` )
} )
} ,
}
}Lista de plugins disponíveis:
cli : Adiciona uma interação da CLI ao bate -papo.fileHistory : salva o histórico de bate -papo em um arquivo json. Padrão para a pasta de historyexperimental_webBrowsing : adiciona uma função web-browsing ao bate-papo que permite que os agentes pesquisem e navegam na Internet. Nota: Este plug -in é experimental e pode não funcionar conforme o esperado.O Aibitat suporta eventos de ciclo de vida, que desencadeiam momentos específicos. O diagrama a seguir mostra o ciclo de vida de uma conversa:

Os eventos do ciclo de vida em Aibitat consistem em:
start : chamado quando o bate -papo começar.error : chamado quando há um erro conhecido (consulte src/error.ts ). Para tentar novamente, ligue para .retry() .message : chamado quando uma mensagem é adicionada ao histórico de bate -papo.terminate : chamado quando a conversa for encerrada. Geralmente significa que não há mais nada a fazer e uma nova conversa deve ser iniciada.interrupt : chamado quando a conversa é interrompida por um agente. Geralmente significa que o agente tem uma pergunta ou precisa de ajuda. A conversa pode ser retomada ligando para .continue(feedback) . Copie o arquivo .env.example para .env e adicione suas teclas/tokens lá.
Para instalar dependências:
bun installPara correr:
bun run examples/beginner-chat.tsConfira a pasta Exemplos para obter mais exemplos.
Este projeto foi criado usando bun init em Bun v1.0.3. O BUN é um tempo de execução do JavaScript All-in-One Fast.
Mit