該存儲庫展示了構建在 Llama Stack 之上的應用程式範例。從 Llama 3.1 開始,您可以建立具有以下功能的代理應用程式:
分解任務並執行多步驟推理。
使用工具執行某些操作
內建:模型具有搜尋或程式碼解釋器等工具的內建知識
零樣本:模型可以學習使用以前未曾見過的上下文工具定義來呼叫工具
使用 Llama Guard 等模式提供系統級安全保護。
筆記
Llama Stack API 仍在不斷發展並且可能會發生變化。請隨意建構和實驗,但請不要依賴它的穩定性!
代理應用程式需要一些元件:
對底層 Llama 系列模型進行推理的能力
使用 Llama Guard 系列模型進行安全檢查的能力
執行工具(包括程式碼執行環境)以及使用模型的多步驟推理過程進行循環的能力
所有這些組件現在均由單一 Llama Stack 發行版提供。 Llama Stack 定義並標準化了這些元件以及使建置生成式 AI 應用程式更加順利所需的許多其他元件。然後,這些 API 的各種實作透過Llama Stack Distribution組裝在一起。
要開始使用 Llama Stack Apps,您需要:
安裝先決條件
啟動 Llama Stack 伺服器
將您的客戶端代理應用程式連接到 Llama Stack 伺服器
啟動後,您只需將代理應用程式指向該伺服器的 URL(例如http://localhost:5000
)。
Python 套件
我們建議建立一個隔離的 conda Python 環境。
# 建立並啟動虛擬環境ENV=stack conda create -n $ENV python=3.10cd <path-to-llama-stack-apps-repo>conda activate $ENV# 安裝依賴項 pip install -r requests.txt
這將安裝 (1) 建置並啟動 Llama Stack 伺服器 (2) 將客戶端應用程式連接到 Llama Stack 伺服器所需的所有依賴項。
請參閱我們的 llama-stack 儲存庫的開發人員指南,以了解如何設定 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 伺服器已設定完畢,下一步就是使用代理 API 執行代理應用程式。
我們建立了範例腳本、筆記本和 UI 聊天介面(使用 Gradio!)來幫助您入門。
啟動應用程式(本地)並透過執行以下命令與其互動:
PYTHONPATH=. python 範例/agent_store/app.py 本機 5000
這將啟動一個 mesop 應用程序,您可以轉到localhost:7860
來玩聊天介面。
或者,您可以為自訂工具設定 API 金鑰:
WolframAlpha:儲存在WOLFRAM_ALPHA_API_KEY
環境變數中
Brave Search:儲存在BRAVE_SEARCH_API_KEY
環境變數中
您可能會在 Agent Store README.md 中看到其他互動方式
注意:確保堆疊伺服器仍在運作。
cd <path-to-llama-agentic-system>conda activate $ENVllama stack run <name> # 如果尚未啟動PYTHONPATH=. python -m example.agents.rag_with_memory_bank 本機 5000
您應該看到輸出到 stdout 的形式 --
環境:ipython 工具:brave_search、wolfram_alpha、photogen 切削知識日期:2023 年 12 月 今天日期:2024 年 7 月 23 日 使用者> 我正計劃去瑞士旅行,最值得參觀的 3 個地方是什麼? 跑 PromptGuardShield 並得到分數:嵌入式:0.9999765157699585,惡意:1.1110752893728204e-05 StepType.shield_call> 沒有違規 role='user' content='我計劃去瑞士旅行,最值得參觀的三個地方是哪些? 'StepType.inference> 瑞士是一個美麗的國家,擁有豐富的歷史、文化和自然美景。以下是您的行程中必須添加的三個必去景點:...
提示您可以選擇在腳本中執行
--disable-safety
以避免始終執行安全防護。
如果您有疑問,請隨時與我們聯繫。
查看我們用於連接 Llama Stack 伺服器的用戶端 SDK,您可以選擇 python、node、swift 和 kotlin 程式語言來快速建立您的應用程式。
筆記
雖然您可以使用venv
運行應用程序,但安裝發行版需要 conda。
# 建立並啟動虛擬環境python3 -m venv venvsource venv/bin/activate
# 建立並啟動虛擬環境python -m venv venv venvScriptsactivate # 對於命令提示字元# or.venvScriptsActivate.ps1 # for PowerShell# orsource venvScriptsactivate # for Git
此後的說明(包括用於安裝依賴項的pip install -r requirements.txt
)保持不變。