โครงการนี้เป็นส้อมจาก Autogen ดั้งเดิม แต่ทำใน 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| คุณสมบัติ | มันทำอะไร | สถานะ |
|---|---|---|
| ข้อความโดยตรง | ตัวแทนพูดคุยกันโดยตรง | |
| ข้อเสนอแนะ | แชทยังคงมีชีวิตอยู่จนกว่าเอเจนต์บางตัวจะขัดจังหวะการแชท | |
| ช่อง | ตัวแทนพูดคุยกับคนอื่น ๆ เช่นในช่อง Slack | |
| การจัดการข้อผิดพลาด | จัดการขีด จำกัด อัตราได้อย่างราบรื่นโดยไม่ล้มเหลว | |
| ฟังก์ชั่นการดำเนินการ | ตัวแทนสามารถดำเนินงานและเข้าใจผลลัพธ์ | |
| การท่องเว็บ | นำทางบนอินเทอร์เน็ต | - |
| แคช | บันทึกประวัติการแชทสำหรับการโทร 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 สามารถใช้ในการกำหนดค่าตัวแทน โดยค่าเริ่มต้นตัวแทนใช้ interrupt จากการกำหนดค่า AIbitat
.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 ค่าเริ่มต้นไปยัง historyexperimental_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 init ใน Bun V1.0.3 Bun เป็นรันไทม์ JavaScript ที่รวดเร็ว
มิกซ์