Dieses Projekt ist eine Gabel aus dem ursprünglichen Autogen, aber in Typenkript.
AIBitat ist ein staatenloser und erweiterbares Gerüst, das die Interaktion zwischen mehreren Agenten ermöglicht und gleichzeitig die Teilnahme an die menschliche Beteiligung ermöglicht.
Betrachten Sie es als locker, aber für KI -Agenten. Erstellen Sie Agenten, fügen Sie sie zu Kanälen hinzu und lassen Sie sie miteinander chatten. Sie können auch intraktable Agenten zu Kanälen hinzufügen und sie an der Konversation teilnehmen lassen.
Für ein vollständigeres Beispiel finden Sie den Beispiel -Ordner.
Sie können das Paket installieren:
# 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 Erstellen Sie eine .env -Datei und fügen Sie Ihren OPENAI_API_KEY hinzu:
OPENAI_API_KEY=... Erstellen Sie dann eine Datei namens index.ts und fügen Sie Folgendes hinzu:
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 )Dann rennen:
bun run index.ts| Besonderheit | Was es tut | Status |
|---|---|---|
| Direktnachrichten | Agenten sprechen direkt miteinander. | ✅ |
| Rückmeldung | Halten Sie den Chat am Leben, bis ein Agent den Chat unterbricht. | ✅ |
| Kanäle | Agenten sprechen mit vielen anderen, wie in einem Slack -Kanal. | ✅ |
| Fehlerbehandlung | Verwalten Sie die Tarifbegrenzung reibungslos, ohne zu stürzen. | ✅ |
| Funktionsausführung | Agenten können Aufgaben ausführen und die Ergebnisse verstehen. | ✅ |
| Webbrows | Navigieren Sie im Internet. | ? |
| Cache | Speichern Sie den Chat -Verlauf schneller und weniger API -Anrufe. | ? |
| Dateiinteraktion | Interagieren Sie mit lokalen Dateien durch Lesen/Schreiben/Ausführen | ? |
| Codeausführung | Agenten können Code ausführen und die Ergebnisse teilen. | ? |
| Kostengrenze | Begrenzen Sie die Anzahl der Interaktionen nach Kosten. | ? |
| Anbieter | Status |
|---|---|
| Openai | ✅ |
| Anthropisch | ✅ |
| Zusammenhängen | ? |
| Feuerwerk | ? |
| Umarmtes Gesicht | ? |
| Replizieren | ? |
Einige Begriffe, die in dieser Dokumentation verwendet werden:
interrupt : NEVER , ALWAYS . Wenn NEVER , wird der Agent das Gespräch niemals unterbrechen. Wenn ALWAYS , unterbricht der Agent immer das Gespräch. (Hinweis: Jeder von ihnen kann das Gespräch unterbrechen, wenn sie "Interrupt" beantworten oder den Chat beenden, wenn sie "Beenden" beantworten.)role : Die Rolle des Agenten. Es wird verwendet, um die Rolle des Agenten im Chat zu beschreiben.maxRounds : Die maximale Anzahl von Chats, ein Agenten oder eine Gruppe, antwortet auf das Gespräch. Es wird verwendet, um Schleifen zu verhindern.new AIbitat(config) Erstellt eine neue Aibitat -Instanz. Das config kann verwendet werden, um die Instanz zu konfigurieren. Standardmäßig verwendet Aibitat OpenAI und GPT-3,5-Turbo als Anbieter für die Konversation und GPT-4, um den nächsten Agenten vorherzusagen. Sie können es ändern, indem Sie provider und model an den AIbitat -Konstruktor übergeben oder auf der spezifischen Agenten-/Kanalkonfiguration einstellen. Standardkonfiguration:
{
providers : 'openai' ,
model : 'gpt-3.5-turbo' ,
interrupt : 'NEVER' ,
maxRounds : 100 ,
chats : [
// {
// from: '?',
// to: '?',
// content: `Talk about something`,
// state: 'success',
// },
] ,
}.agent(name, config) Erstellt einen neuen Agenten. Das config kann verwendet werden, um den Agenten zu konfigurieren. Standardmäßig verwenden Agenten den interrupt aus der AIbitat -Konfiguration.
.channel(name, agents, config) Erstellt einen neuen Kanal. Das config kann zum Konfigurieren des Kanals verwendet werden. Standardmäßig ist maxRounds auf 100 eingestellt.
.function(config) Funktionen werden verwendet, um Code auszuführen und das Ergebnis in die Konversation zurückzugeben. Um sie zu verwenden, rufen Sie die function auf die Definitionen für die Funktion und fügen Sie den Namen der Funktion der functions zur Knotenkonfiguration hinzu:
const aibitat = new AIbitat ( )
. agent ( '...' , { functions : [ 'doSomething' ] } )
. function ( {
name : 'doSomething' ,
description : 'Let me do something for you.' ,
parameters : {
type : 'object' ,
properties : { } ,
} ,
async handler ( ) {
return '...'
} ,
} )Die Ergebnisse werden dann an den Anbieter gesendet und zum Gespräch zurückgekehrt.
.use(plugin) Plugins werden verwendet, um die Funktionalität von Aibitat zu erweitern. Sie können verwendet werden, um neue Funktionen hinzuzufügen oder sich in andere Dienste zu integrieren. Sie können Ihr eigenes Plugin erstellen, indem Sie die AIbitatPlugin -Schnittstelle implementieren.
Um ein Plugin zu verwenden, rufen Sie die use auf:
...
import { cli } from 'aibitat/plugins'
const aibitat = new AIbitat ( ) . use ( cli ( ) ) Sie können auch Ihr eigenes Plugin erstellen, indem Sie die AIbitatPlugin -Schnittstelle implementieren:
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 der verfügbaren Plugins:
cli : Fügt dem Chat eine CLI -Interaktion hinzu.fileHistory : Speichert den Chat -Verlauf einer JSON -Datei. Standard zum historyexperimental_webBrowsing : Fügt dem Chat eine web-browsing Funktion hinzu, mit der Agenten im Internet suchen und navigieren können. Hinweis: Dieses Plugin ist experimentell und funktioniert möglicherweise nicht wie erwartet.Aibitat unterstützt Lebenszyklusereignisse, die in bestimmten Momenten auslösen. Das folgende Diagramm zeigt den Lebenszyklus eines Gesprächs:

Die Lebenszyklusereignisse in Aibitat bestehen aus:
start : Angerufen, wenn der Chat beginnt.error : Aufgerufen, wenn ein bekannter Fehler vorliegt (siehe src/error.ts ). Rufen Sie .retry() an.message : Aufgerufen, wenn eine Nachricht zum Chat -Verlauf hinzugefügt wird.terminate : Aufgerufen, wenn das Gespräch gekündigt wird. Im Allgemeinen bedeutet es nichts anderes zu tun und ein neues Gespräch sollte gestartet werden.interrupt : Aufgerufen, wenn das Gespräch von einem Agenten unterbrochen wird. Im Allgemeinen bedeutet der Agent eine Frage oder braucht Hilfe. Die Konversation kann wieder aufgenommen werden, indem Sie .continue(feedback) anrufen. Kopieren Sie die Datei .env.example in .env und fügen Sie dort Ihre Schlüssel/Token hinzu.
Abhängigkeiten installieren:
bun installZu laufen:
bun run examples/beginner-chat.tsWeitere Beispiele finden Sie im Beispiel -Ordner.
Dieses Projekt wurde mit bun init in Bun v1.0.3 erstellt. Bun ist eine schnelle All-in-One-JavaScript-Laufzeit.
MIT