Proyek ini adalah garpu dari autogen asli tetapi dilakukan dalam naskah.
AIBITAT adalah kerangka kerja tanpa kewarganegaraan & dapat diperluas yang dirancang untuk memungkinkan interaksi antara beberapa agen sambil memungkinkan partisipasi manusia.
Anggap saja sebagai kendur tetapi untuk agen AI. Buat agen, tambahkan ke saluran dan biarkan mereka mengobrol satu sama lain. Anda juga dapat menambahkan agen yang tidak dapat diatasi ke saluran dan membiarkannya berpartisipasi dalam percakapan.
Sebagai contoh yang lebih lengkap, lihat folder contoh.
Anda dapat menginstal paket:
# 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 Buat file .env dan tambahkan OPENAI_API_KEY Anda:
OPENAI_API_KEY=... Kemudian buat file yang disebut index.ts dan tambahkan yang berikut:
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 )Kemudian jalankan:
bun run index.ts| Fitur | Apa yang dilakukannya | Status |
|---|---|---|
| Pesan langsung | Agen berbicara langsung satu sama lain. | ✅ |
| Masukan | Terus obrolan sampai beberapa agen mengganggu obrolan. | ✅ |
| Saluran | Agen berbicara dengan banyak orang lain, seperti di saluran yang kendur. | ✅ |
| Penanganan kesalahan | Kelola batas laju dengan lancar tanpa mogok. | ✅ |
| Eksekusi Fungsi | Agen dapat menjalankan tugas dan memahami hasilnya. | ✅ |
| Penjelajahan web | Navigasi di internet. | ? |
| Cache | Simpan riwayat obrolan untuk panggilan API yang lebih cepat dan lebih sedikit. | ? |
| Interaksi File | Berinteraksi dengan file lokal dengan membaca/menulis/mengeksekusi | ? |
| Eksekusi Kode | Agen dapat menjalankan kode dan membagikan hasilnya. | ? |
| Batas biaya | Batasi jumlah interaksi berdasarkan biaya. | ? |
| Penyedia | Status |
|---|---|
| Openai | ✅ |
| Antropik | ✅ |
| Berpadu | ? |
| Fireworks.ai | ? |
| Wajah memeluk | ? |
| Mengulangi | ? |
Beberapa istilah yang digunakan dalam dokumentasi ini:
interrupt : NEVER , ALWAYS . Ketika NEVER , agen tidak akan pernah mengganggu percakapan. Ketika ALWAYS , agen akan selalu mengganggu percakapan. (Catatan: salah satu dari mereka dapat mengganggu percakapan jika mereka membalas "mengganggu" atau mengakhiri obrolan saat membalas "hentikan".)role : Peran agen. Ini digunakan untuk menggambarkan peran yang akan dilakukan agen dalam obrolan.maxRounds : Jumlah maksimum obrolan agen atau grup akan membalas percakapan. Ini digunakan untuk mencegah loop.new AIbitat(config) Membuat instance AIBITAT baru. Objek config dapat digunakan untuk mengonfigurasi instance. Secara default, Aibitat menggunakan OpenAi dan GPT-3.5-Turbo sebagai penyedia percakapan dan GPT-4 untuk memprediksi agen berikutnya untuk berbicara. Anda dapat mengubahnya dengan menyerahkan provider dan model ke konstruktor AIbitat atau dengan mengaturnya pada konfigurasi agen/saluran tertentu. Konfigurasi default:
{
providers : 'openai' ,
model : 'gpt-3.5-turbo' ,
interrupt : 'NEVER' ,
maxRounds : 100 ,
chats : [
// {
// from: '?',
// to: '?',
// content: `Talk about something`,
// state: 'success',
// },
] ,
}.agent(name, config) Menciptakan agen baru. Objek config dapat digunakan untuk mengonfigurasi agen. Secara default, agen menggunakan interrupt dari konfigurasi AIbitat .
.channel(name, agents, config) Membuat saluran baru. Objek config dapat digunakan untuk mengonfigurasi saluran. Secara default, maxRounds diatur ke 100 .
.function(config) Fungsi digunakan untuk menjalankan kode dan mengembalikan hasilnya ke percakapan. Untuk menggunakannya, panggil metode function yang meneruskan definisi untuk fungsi dan tambahkan namanya ke properti functions ke konfigurasi simpul:
const aibitat = new AIbitat ( )
. agent ( '...' , { functions : [ 'doSomething' ] } )
. function ( {
name : 'doSomething' ,
description : 'Let me do something for you.' ,
parameters : {
type : 'object' ,
properties : { } ,
} ,
async handler ( ) {
return '...'
} ,
} )Hasilnya kemudian akan dikirim ke penyedia dan kembali ke percakapan.
.use(plugin) Plugin digunakan untuk memperluas fungsionalitas AIBITAT. Mereka dapat digunakan untuk menambahkan fitur baru atau untuk berintegrasi dengan layanan lain. Anda dapat membuat plugin Anda sendiri dengan mengimplementasikan antarmuka AIbitatPlugin .
Untuk menggunakan plugin, hubungi metode use :
...
import { cli } from 'aibitat/plugins'
const aibitat = new AIbitat ( ) . use ( cli ( ) ) Anda juga dapat membuat plugin Anda sendiri dengan mengimplementasikan antarmuka 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 } ` )
} )
} ,
}
}Daftar plugin yang tersedia:
cli : Menambahkan interaksi CLI ke obrolan.fileHistory : Menyimpan riwayat obrolan ke file JSON. Default ke folder historyexperimental_webBrowsing : Menambahkan fungsi web-browsing ke obrolan yang memungkinkan agen untuk mencari dan menavigasi di internet. Catatan: Plugin ini bersifat eksperimental dan mungkin tidak berfungsi seperti yang diharapkan.Aibitat mendukung peristiwa siklus hidup, yang memicu pada saat -saat tertentu. Diagram berikut menunjukkan siklus hidup percakapan:

Acara siklus hidup di Aibitat terdiri dari:
start : Dipanggil saat obrolan dimulai.error : Dipanggil saat ada kesalahan yang diketahui (lihat src/error.ts ). Untuk mencoba lagi, hubungi .retry() .message : Dipanggil saat pesan ditambahkan ke riwayat obrolan.terminate : Dipanggil saat percakapan diakhiri. Umumnya berarti tidak ada lagi yang bisa dilakukan dan percakapan baru harus dimulai.interrupt : Dipanggil saat percakapan terganggu oleh agen. Umumnya berarti agen memiliki pertanyaan atau membutuhkan bantuan. Percakapan dapat dilanjutkan dengan menelepon .continue(feedback) . Salin file .env.example ke .env dan tambahkan tombol/token Anda di sana.
Untuk menginstal dependensi:
bun installUntuk menjalankan:
bun run examples/beginner-chat.tsLihat folder contoh untuk lebih banyak contoh.
Proyek ini dibuat menggunakan bun init di Bun V1.0.3. Bun adalah runtime JavaScript all-in-one yang cepat.
Mit