Repo นี้แสดงตัวอย่างแอปพลิเคชันที่สร้างขึ้นบน Llama Stack การเริ่มต้น Llama 3.1 คุณสามารถสร้างแอปพลิเคชันเอเจนต์ที่มีความสามารถ:
แบ่งงานและดำเนินการให้เหตุผลหลายขั้นตอน
การใช้เครื่องมือเพื่อดำเนินการบางอย่าง
ในตัว: โมเดลมีความรู้ในตัวเกี่ยวกับเครื่องมือเช่นการค้นหาหรือล่ามโค้ด
Zero-shot: โมเดลสามารถเรียนรู้การเรียกเครื่องมือโดยใช้คำจำกัดความของเครื่องมือในบริบทที่ไม่เคยเห็นมาก่อน
ให้การปกป้องความปลอดภัยระดับระบบโดยใช้รุ่นเช่น Llama Guard
บันทึก
Llama Stack API ยังคงพัฒนาและอาจมีการเปลี่ยนแปลง คุณสามารถสร้างและทดลองได้ตามใจชอบ แต่โปรดอย่าพึ่งความเสถียรของมันในตอนนี้!
แอปตัวแทนต้องมีองค์ประกอบบางประการ:
ความสามารถในการเรียกใช้การอนุมานในซีรีส์ Llama พื้นฐาน
ความสามารถในการดำเนินการตรวจสอบความปลอดภัยโดยใช้รุ่น Llama Guard series
ความสามารถในการรันเครื่องมือ รวมถึงสภาพแวดล้อมการรันโค้ด และวนซ้ำโดยใช้กระบวนการให้เหตุผลแบบหลายขั้นตอนของโมเดล
ขณะนี้ส่วนประกอบทั้งหมดเหล่านี้นำเสนอโดย Llama Stack Distribution เดียว Llama Stack กำหนดและสร้างมาตรฐานให้กับส่วนประกอบเหล่านี้และอื่นๆ อีกมากมายที่จำเป็นในการสร้างแอปพลิเคชัน Generative AI ที่ราบรื่นยิ่งขึ้น การใช้งานต่างๆ ของ API เหล่านี้จะถูกประกอบเข้าด้วยกันผ่าน Llama Stack Distribution
ในการเริ่มต้นใช้งาน Llama Stack Apps คุณจะต้อง:
ติดตั้งข้อกำหนดเบื้องต้น
เริ่มเซิร์ฟเวอร์ Llama Stack
เชื่อมต่อแอปเอเจนต์ไคลเอนต์ของคุณกับเซิร์ฟเวอร์ Llama Stack
เมื่อเริ่มต้นแล้ว คุณสามารถชี้แอปตัวแทนของคุณไปที่ URL สำหรับเซิร์ฟเวอร์นี้ (เช่น http://localhost:5000
)
แพ็คเกจหลาม
เราขอแนะนำให้สร้างสภาพแวดล้อม conda Python ที่แยกออกมา
# สร้างและเปิดใช้งานสภาพแวดล้อมเสมือน ENV=stack conda create -n $ENV python=3.10cd <path-to-llama-stack-apps-repo>conda เปิดใช้งาน $ENV# ติดตั้ง dependenciespip ติดตั้ง -r ข้อกำหนด.txt
สิ่งนี้จะติดตั้งการพึ่งพาทั้งหมดที่จำเป็นสำหรับ (1) สร้างและเริ่มต้นเซิร์ฟเวอร์ Llama Stack (2) เชื่อมต่อแอปไคลเอ็นต์ของคุณกับเซิร์ฟเวอร์ Llama Stack
โปรดดูคู่มือนักพัฒนาของ llama-stack repo สำหรับการตั้งค่าการกระจาย Llama Stack และเซิร์ฟเวอร์ที่ใช้งานเพื่อรองรับตำแหน่งข้อมูล API คุณควรมีตำแหน่งข้อมูลเซิร์ฟเวอร์สำหรับสร้างแอปไคลเอ็นต์ของคุณ
เมื่อเซิร์ฟเวอร์ของคุณเริ่มทำงาน คุณควรจะเห็นผลลัพธ์ --
... Serving POST /agentic_system/session/delete Serving POST /agentic_system/session/get Serving POST /agentic_system/step/get Serving POST /agentic_system/turn/get Serving GET /telemetry/get_trace Serving POST /telemetry/log_event Listening on :::5000 INFO: Started server process [587053] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://[::]:5000 (Press CTRL+C to quit)
เราได้สร้างสคริปต์สาธิตตัวอย่างสำหรับการโต้ตอบกับเซิร์ฟเวอร์ Stack
ขณะที่เซิร์ฟเวอร์ทำงานอยู่ คุณสามารถทดสอบเอเจนต์แบบธรรมดาได้
python -m examples.agents.hello localhost 5000
คุณจะเห็นผลลัพธ์ของแบบฟอร์ม --
> created agents with agent_id=d050201b-0ca1-4abd-8eee-3cba2b8c0fbc User> Hello shield_call> No Violation inference> How can I assist you today? shield_call> No Violation User> Which players played in the winning team of the NBA western conference semifinals of 2024, please use tools shield_call> No Violation inference> brave_search.call(query="NBA Western Conference Semifinals 2024 winning team players") tool_execution> Tool:brave_search Args:{'query': 'NBA Western Conference Semifinals 2024 winning team players'} tool_execution> Tool:brave_search Response:{"query": "NBA Western Conference Semifinals 2024 winning team players", "top_k": [{"title": "2024 NBA Western Conference Semifinals - Mavericks vs. Thunder | Basketball-Reference.com", "url": "https://www.basketball-reference.com/playoffs/2024-nba-western-conference-semifinals-mavericks-vs-thunder.html", "description": "Summary and statistics for the <strong>2024</strong> <strong>NBA</strong> <strong>Western</strong> <strong>Conference</strong> <strong>Semifinals</strong> - Mavericks vs. Thunder", "type": "search_result"}, {"title": "2024 NBA playoffs - Wikipedia", "url": "https://en.wikipedia.org/wiki/2024_NBA_playoffs", "description": "Aged 20 years and 96 days old, ... youngest <strong>player</strong> <strong>in</strong> <strong>NBA</strong> history to record 10+ points and 15+ rebounds in a playoff game, coming during game 6 of the Maverick's <strong>Western</strong> <strong>Conference</strong> <strong>Semifinal</strong> <strong>win</strong> against the Thunder on May 18. The Timberwolves overcame a 20u2013point deficit to <strong>win</strong> game 7 against the Nuggets, the largest game 7 comeback in <strong>NBA</strong> playoffs history. With the defending champion Nuggets losing to the Minnesota Timberwolves, the <strong>2024</strong> playoffs marked ...", "type": "search_result"}, {"title": "2024 NBA Playoffs | Official Bracket, Schedule and Series Matchups", "url": "https://www.nba.com/playoffs/2024", "description": "The official site of the <strong>2024</strong> <strong>NBA</strong> Playoffs. Latest news, schedules, matchups, highlights, bracket and more.", "type": "search_result"}]} shield_call> No Violation inference> The players who played in the winning team of the NBA Western Conference Semifinals of 2024 are not specified in the search results provided. However, the search results suggest that the Mavericks played against the Thunder in the Western Conference Semifinals, and the Mavericks won the series. shield_call> No Violation
เมื่อตั้งค่าเซิร์ฟเวอร์ Stack แล้ว สิ่งถัดไปคือการเรียกใช้แอปเอเจนต์โดยใช้ Agents API
เราได้สร้างสคริปต์ตัวอย่าง สมุดบันทึก และอินเทอร์เฟซการแชท UI (โดยใช้ Gradio !) เพื่อช่วยคุณในการเริ่มต้น
เริ่มแอป (ในเครื่อง) และโต้ตอบกับแอปโดยรันคำสั่งต่อไปนี้:
ไพธอนพาธ=. ตัวอย่างหลาม/agent_store/app.py localhost 5000
นี่จะเป็นการเริ่มแอป mesop และคุณสามารถไปที่ localhost:7860
เพื่อเล่นกับอินเทอร์เฟซการแชท
คุณสามารถเลือกตั้งค่าคีย์ API สำหรับเครื่องมือที่กำหนดเองได้:
WolframAlpha: เก็บในตัวแปรสภาพแวดล้อม WOLFRAM_ALPHA_API_KEY
Brave Search: เก็บในตัวแปรสภาพแวดล้อม BRAVE_SEARCH_API_KEY
คุณอาจเห็นวิธีอื่นในการติดต่อสื่อสารใน Agent Store README.md
หมายเหตุ: ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ Stack ยังคงทำงานอยู่
cd <path-to-llama-agentic-system>conda เปิดใช้งาน $ENVllama stack run <name> # หากยังไม่ได้เริ่ม PYTHONPATH=. หลาม -m examples.agents.rag_with_memory_bank localhost 5000
คุณควรเห็นผลลัพธ์ที่ stdout ของแบบฟอร์ม --
สภาพแวดล้อม: ipython เครื่องมือ: Brave_search, wolfram_alpha, photogen วันที่ความรู้ในการตัด: ธันวาคม 2023 วันนี้วันที่: 23 กรกฎาคม 2024 ผู้ใช้> ฉันกำลังวางแผนเดินทางไปสวิตเซอร์แลนด์ สถานที่น่าไป 3 อันดับแรกคืออะไร?Final Llama Guard response shield_type=<BuiltinShield.llama_guard: 'llama_guard'> is_violation=Falseการละเมิด_type=Noneการละเมิด_return_message=ไม่มี รัน PromptGuardShield และได้รับคะแนน: ฝัง: 0.9999765157699585, ที่เป็นอันตราย: 1.1110752893728204e-05 StepType.shield_call> ไม่มีการละเมิด Role='user' content='ฉันกำลังวางแผนไปเที่ยวสวิตเซอร์แลนด์ สถานที่น่าไป 3 อันดับแรกคืออะไร'StepType.inference> สวิตเซอร์แลนด์เป็นประเทศที่สวยงามพร้อมด้วยประวัติศาสตร์ วัฒนธรรม และความงามทางธรรมชาติอันยาวนาน ต่อไปนี้เป็นสถานที่ที่ต้องไปเยี่ยมชมสามแห่งเพื่อเพิ่มลงในแผนการเดินทางของคุณ: ....
เคล็ดลับ คุณสามารถเลือกทำ
--disable-safety
ในสคริปต์เพื่อหลีกเลี่ยงการใช้แผงป้องกันความปลอดภัยตลอดเวลา
โปรดติดต่อเราหากคุณมีคำถาม
ตรวจสอบ SDK ไคลเอนต์ของเราสำหรับการเชื่อมต่อกับเซิร์ฟเวอร์ Llama Stack คุณสามารถเลือกภาษาการเขียนโปรแกรม Python, node, Swift และ Kotlin เพื่อสร้างแอปพลิเคชันของคุณได้อย่างรวดเร็ว
บันทึก
แม้ว่าคุณจะสามารถรันแอปโดยใช้ venv
ได้ แต่การติดตั้งการแจกจ่ายจำเป็นต้องมี conda
# สร้างและเปิดใช้งานสภาพแวดล้อมเสมือนpython3 -m venv venvsource venv/bin/activate
# สร้างและเปิดใช้งานสภาพแวดล้อมเสมือนpython -m venv venv venvScriptsactivate # สำหรับ Command Prompt# หรือ.venvScriptsActivate.ps1 # สำหรับ PowerShell# หรือแหล่งที่มา venvScriptsactivate # สำหรับ Git
คำแนะนำหลังจากนั้น (รวมถึง pip install -r requirements.txt
สำหรับการติดตั้งการอ้างอิง) ยังคงเหมือนเดิม