โปรเจ็กต์นี้เป็น wrapper เล็กๆ เหนือ AutoGen โดยผสานรวมพร็อกซีเซิร์ฟเวอร์ LiteLLM เพื่อให้คุณเข้าถึง LLM ใดๆ (ที่เป็นกรรมสิทธิ์หรือโอเพ่นซอร์ส) ได้อย่างง่ายดาย โดยไม่ต้องละทิ้งเทอร์มินัลของคุณอย่างสะดวกสบาย
มันใช้ไลบรารี Rich และ prompt_toolkit เพื่อทำให้อินพุต/เอาท์พุตมีสีสันซึ่งทำให้การอ่านการตอบสนองจำนวนมากในเทอร์มินัลธรรมดาย่อยได้ง่ายขึ้นเล็กน้อย:
อินพุต: เอาต์พุต
ส่วนนี้ให้คำแนะนำเกี่ยวกับวิธีตั้งค่าสภาพแวดล้อมการพัฒนาสำหรับการทำงานในโปรเจ็กต์นี้
ก่อนที่คุณจะเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง pyenv
หรือ conda
บนระบบของคุณเพื่อจัดการเวอร์ชันและสภาพแวดล้อมของ Python
โปรเจ็กต์นี้ได้รับการทดสอบด้วย Python 3.11.8
ขอแนะนำให้ใช้เวอร์ชันเฉพาะนี้เพื่อหลีกเลี่ยงปัญหาความเข้ากันได้
หากคุณใช้ pyenv
คุณสามารถติดตั้ง Python 3.11.8
และตั้งเป็นเวอร์ชันโลคัลสำหรับโปรเจ็กต์ได้โดยใช้คำสั่งต่อไปนี้:
pyenv install 3.11.8
pyenv local 3.11.8
pyenv virtualenv myenv
หากคุณต้องการ conda
ให้สร้างสภาพแวดล้อมใหม่ด้วย Python 3.11.8
โดยใช้คำสั่งต่อไปนี้:
conda create --name myenv python=3.11.8
conda activate myenv
แทนที่ myenv
ด้วยชื่อที่คุณเลือกสำหรับสภาพแวดล้อม
เมื่อคุณตั้งค่า Python เวอร์ชันที่ถูกต้องแล้ว ให้ติดตั้งการขึ้นต่อกันของโปรเจ็กต์โดยเรียกใช้:
pip install -e .
หากคุณวางแผนที่จะตั้งค่าและใช้ UI แดชบอร์ดพร็อกซี litellm ซึ่งมีการตรวจสอบต้นทุนและสถิติการใช้งานอย่างละเอียด ให้ติดตั้งการขึ้นต่อกันเพิ่มเติมผ่าน:
pip install -e ' .[proxy] '
คัดลอกไฟล์ .env.secrets.example
เพื่อสร้างไฟล์ .env.secrets
ของคุณเอง และกรอกคีย์ API เฉพาะของคุณสำหรับบริการที่คุณวางแผนจะใช้ เช่น OpenAI, MistralAI, โมเดล Anthropic หรืออื่นๆ
cp .env.secrets.example .env.secrets
แก้ไขไฟล์ .env.secrets
ด้วยโปรแกรมแก้ไขข้อความที่คุณต้องการ และอัปเดตคีย์ API ตามต้องการ
ก่อนอื่นคุณต้องตั้งค่า postgres DB เพื่อจัดเก็บข้อมูลการใช้งานจาก litellm วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการสร้างอินสแตนซ์ Superbase postgres ฟรีที่โฮสต์กับ AWS
เมื่อฐานข้อมูลพร้อมใช้งานแล้ว ตรวจสอบให้แน่ใจว่าคุณสามารถเชื่อมต่อฐานข้อมูลนั้นได้
psql postgresql:// < user > : < password > @ < host > : < port > / < dbname >
หากการเชื่อมต่อสำเร็จ เพียงตั้งค่า DATABASE_URL
env var ในไฟล์ .env.secrets
เท่านี้คุณก็พร้อมแล้ว ครั้งถัดไปที่คุณจะเริ่มต้นเซิร์ฟเวอร์ litellm เซิร์ฟเวอร์จะเชื่อมต่อกับฐานข้อมูลโดยอัตโนมัติ
ด้วยขั้นตอนเหล่านี้ คุณควรพร้อมที่จะทำงานในโครงการและรันแอปพลิเคชัน
รันคำสั่งต่อไปนี้
python setup.py fix
python setup.py review --file path/to/file
จุดแข็งประการหนึ่งของ LiteLLM ก็คือ มันมีอินเทอร์เฟซแบบรวมสำหรับการเรียก LLM ต่างๆ ท่ามกลางคุณสมบัติเจ๋งๆ อื่นๆ ในบริบทนี้ เราใช้เพื่อขยายขีดความสามารถของ AutoGen เพื่อใช้โมเดล AI อื่นๆ (ซึ่งปัจจุบันยังไม่ได้รับการสนับสนุนแบบสำเร็จรูป แต่เป็น WIP)
python setup.py litellm
Autogen ยังมี UI ที่เรียบร้อย
คำสั่งต่อไปนี้เริ่มแอป AGS และทำให้ UI พร้อมใช้งานที่ http://localhost:8083 AGS sqlite DB ร่วมกับส่วนอื่นๆ ที่เกี่ยวข้องจะถูกจัดเก็บไว้ใน src/ui
python setup.py ui
ตามค่าเริ่มต้น คำขอโมเดล OpenAI จะไม่ถูกกำหนดเส้นทางผ่าน litellm เนื่องจากหากคุณใช้ผู้ให้บริการ LLM รายนี้เท่านั้น การเพิ่มเลเยอร์พิเศษก็ไม่สมเหตุสมผล เนื่องจากคุณสามารถตรวจสอบต้นทุนได้อย่างง่ายดายใน https://platform.openai.com/usage อย่างไรก็ตาม หากคุณใช้ผู้ให้บริการ LLM หลายราย ก็สมเหตุสมผลที่จะรวมข้อมูลทั้งหมดไว้ในแดชบอร์ดเดียว -> LiteLLM UI
หากพร็อกซีเซิร์ฟเวอร์ LiteLLM เปิดใช้งานอยู่ คำขอ openai ทั้งหมดจะถูกส่งผ่านพร็อกซีโดยอัตโนมัติ
ขั้นตอน:
หลังจากตั้งค่าสภาพแวดล้อมและการกำหนดค่าแล้ว คุณสามารถรันแอปพลิเคชันภายในไดเร็กทอรี src/applications/
ได้
การดำเนินการแอปพลิเคชันจะสร้างเซสชันการสนทนาใหม่ตามโฟลว์ที่กำหนดไว้ในแอปนั้น
มีแอปการสนทนาทั่วไป 2 แอป:
start_conversation.py
เริ่มการสนทนาง่ายๆ กับตัวแทนที่เลือกจากรายการตัวแทนพิเศษที่กำหนดไว้ล่วงหน้าstart_curated_conversation.py
เพิ่ม AI นักวิจารณ์ในการสนทนาซึ่งจะตรวจสอบคำกล่าวอ้างของตัวแทนหลัก เอเจนต์แบบกำหนดเองใหม่สามารถเพิ่มลงในไฟล์นิยาม agents/custom_agents.py
คุณสามารถปรับแต่ง message
ภายในแต่ละแอปพลิเคชัน หรือรันสคริปต์และป้อนข้อความแจ้งของคุณในบรรทัดคำสั่ง (แนะนำ) พรอมต์รองรับหลายบรรทัด ดังนั้น Enter
เพียงแทรกบรรทัดใหม่ เพื่อส่งข้อความพร้อมท์ให้กด (Meta|Esc)+Enter
python chef.py
แอปพลิเคชัน chef.py
สาธิตวิธีใช้ตัวแทนเพื่ออำนวยความสะดวกในการสนทนาเกี่ยวกับการทำอาหาร โดยจะแสดงการตั้งค่าการแชทเป็นกลุ่มกับตัวแทนหลายราย และการเริ่มต้นการแชทพร้อมคำถามของผู้ใช้
ollama run codellama
litellm_config.yml
เพื่อให้มีการอ้างอิงโมเดลโลคัลใหม่หรือการอ้างอิงไปยังบริการ API อื่นๆ เช่น Mistral AIรุ่นยอดนิยมอื่นๆ: https://huggingface.co/WizardLM