このプロジェクトは、オリジナルのオートゲンからのフォークですが、TypeScriptで行われます。
AIBITATは、人間の参加を可能にしながら、複数のエージェント間の相互作用を可能にするように設計されたステートレスおよび拡張可能なフレームワークです。
AIエージェントにとっては、それをたるみと考えてください。エージェントを作成し、チャンネルに追加し、お互いにチャットさせます。また、チャンネルに扱いやすいエージェントを追加して、会話に参加させることもできます。
より完全な例については、例フォルダーをご覧ください。
パッケージをインストールできます。
# 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 .envファイルを作成し、 OPENAI_API_KEYを追加します:
OPENAI_API_KEY=...次に、 index.tsというファイルを作成し、以下を追加します。
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 )その後、実行:
bun run index.ts| 特徴 | それがすること | 状態 |
|---|---|---|
| 直接メッセージ | エージェントは互いに直接話します。 | ✅ |
| フィードバック | 一部のエージェントがチャットを中断するまで、チャットを生かし続けます。 | ✅ |
| チャネル | エージェントは、スラックチャンネルのように、他の多くの人と話します。 | ✅ |
| エラー処理 | クラッシュせずにレート制限をスムーズに管理します。 | ✅ |
| 関数実行 | エージェントはタスクを実行して結果を理解できます。 | ✅ |
| Webブラウジング | インターネットでナビゲートします。 | ? |
| キャッシュ | より速く、より少ないAPI呼び出しのためにチャット履歴を保存します。 | ? |
| ファイルインタラクション | 読み取り/書き込み/実行によりローカルファイルと対話します | ? |
| コード実行 | エージェントはコードを実行して結果を共有できます。 | ? |
| コスト制限 | コストで相互作用の数を制限します。 | ? |
| プロバイダー | 状態 |
|---|---|
| Openai | ✅ |
| 人類 | ✅ |
| 協力します | ? |
| 花火 | ? |
| 顔を抱き締める | ? |
| 複製します | ? |
このドキュメントで使用されているいくつかの用語:
interrupt : NEVER 、 ALWAYS 。 NEVER 、エージェントは会話を中断することはありません。 ALWAYS 、エージェントは常に会話を中断します。 (注:「中断」と返信すると、「終了」と返信するときにチャットを終了すると、会話を中断することができます。)role :エージェントの役割。エージェントがチャットで実行する役割を説明するために使用されます。maxRounds :エージェントまたはグループが会話に返信するチャットの最大数。ループを防ぐために使用されます。new AIbitat(config)新しいAibitatインスタンスを作成します。 configオブジェクトを使用して、インスタンスを構成できます。デフォルトでは、AIBITATは、 OpenAIとGPT-3.5-Turboを会話のプロバイダーとして使用し、次のエージェントを予測するためにGPT-4を使用します。 providerとmodel AIbitatコンストラクターに渡すか、特定のエージェント/チャネル構成に設定することで変更できます。デフォルトの構成:
{
providers : 'openai' ,
model : 'gpt-3.5-turbo' ,
interrupt : 'NEVER' ,
maxRounds : 100 ,
chats : [
// {
// from: '?',
// to: '?',
// content: `Talk about something`,
// state: 'success',
// },
] ,
}.agent(name, config)新しいエージェントを作成します。 configオブジェクトを使用してエージェントを構成できます。デフォルトでは、エージェントはAIbitat構成のinterruptを使用します。
.channel(name, agents, config)新しいチャネルを作成します。 configオブジェクトを使用してチャネルを構成できます。デフォルトでは、 maxRoundsは100に設定されています。
.function(config)関数は、コードを実行し、結果を会話に返すために使用されます。それを使用するには、関数の定義を渡すfunctionメソッドを呼び出し、その名前をfunctionsプロパティにノード構成に追加します。
const aibitat = new AIbitat ( )
. agent ( '...' , { functions : [ 'doSomething' ] } )
. function ( {
name : 'doSomething' ,
description : 'Let me do something for you.' ,
parameters : {
type : 'object' ,
properties : { } ,
} ,
async handler ( ) {
return '...'
} ,
} )その後、結果はプロバイダーに送信され、会話に戻ります。
.use(plugin)プラグインは、AIBITATの機能を拡張するために使用されます。これらは、新しい機能を追加したり、他のサービスと統合するために使用できます。 AIbitatPluginインターフェイスを実装することにより、独自のプラグインを作成できます。
プラグインを使用するには、 use方法を呼び出します。
...
import { cli } from 'aibitat/plugins'
const aibitat = new AIbitat ( ) . use ( cli ( ) ) 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 } ` )
} )
} ,
}
}利用可能なプラグインのリスト:
cli :CLIの相互作用をチャットに追加します。fileHistory :チャット履歴をJSONファイルに保存します。デフォルトはhistoryフォルダーになりますexperimental_webBrowsing :エージェントがインターネットで検索してナビゲートできるようにするweb-browsing機能をチャットに追加します。注:このプラグインは実験的であり、期待どおりに機能しない場合があります。AIBITATは、特定の瞬間にトリガーするライフサイクルイベントをサポートします。次の図は、会話のライフサイクルを示しています。

AIBITATのライフサイクルイベントは、次のことです。
start :チャットが始まるときに呼び出されます。error :既知のエラーがあるときに呼び出されます( src/error.tsを参照)。再試行するには、 .retry()を呼び出します。message :チャット履歴にメッセージが追加されたときに呼び出されます。terminate :会話が終了したときに呼び出されます。一般に、他に何もすることは何もないことを意味し、新しい会話を開始する必要があります。interrupt :会話がエージェントによって中断されたときに呼び出されます。一般に、エージェントには質問や必要性が必要なことを意味します。会話は、 .continue(feedback)を呼び出すことで再開できます。 .env.exampleファイルを.envにコピーし、そこにキー/トークンを追加します。
依存関係をインストールするには:
bun install実行する:
bun run examples/beginner-chat.tsその他の例については、例フォルダーをご覧ください。
このプロジェクトは、BUN v1.0.3のbun initを使用して作成されました。 BUNは、オールインワンの速いJavaScriptランタイムです。
mit