Dieses Repo zeigt Beispiele für Anwendungen, die auf Llama Stack basieren. Ab Llama 3.1 können Sie Agentenanwendungen erstellen, die Folgendes können:
Eine Aufgabe aufschlüsseln und mehrstufige Überlegungen anstellen.
Verwenden von Werkzeugen, um einige Aktionen auszuführen
Eingebaut: Das Modell verfügt über integrierte Kenntnisse über Tools wie Suche oder Code-Interpreter
Zero-Shot: Das Modell kann lernen, Werkzeuge mithilfe bisher ungesehener, kontextbezogener Werkzeugdefinitionen aufzurufen
Bereitstellung von Sicherheitsschutz auf Systemebene mithilfe von Modellen wie Llama Guard.
Notiz
Die Llama Stack API befindet sich noch in der Entwicklung und kann sich ändern. Fühlen Sie sich frei, zu bauen und zu experimentieren, aber verlassen Sie sich bitte noch nicht auf seine Stabilität!
Eine Agenten-App erfordert einige Komponenten:
Fähigkeit, Rückschlüsse auf die zugrunde liegende Llama-Modellreihe zu ziehen
Fähigkeit, Sicherheitsüberprüfungen mit der Llama Guard-Modellreihe durchzuführen
Fähigkeit, Tools, einschließlich einer Code-Ausführungsumgebung, und Schleifen mithilfe des mehrstufigen Argumentationsprozesses des Modells auszuführen
Alle diese Komponenten werden jetzt von einer einzigen Llama Stack Distribution angeboten. Der Llama Stack definiert und standardisiert diese und viele andere Komponenten, die erforderlich sind, um die Entwicklung generativer KI-Anwendungen reibungsloser zu gestalten. Anschließend werden verschiedene Implementierungen dieser APIs über eine Llama Stack Distribution zusammengestellt.
Um mit Llama Stack Apps zu beginnen, müssen Sie Folgendes tun:
Installieren Sie die Voraussetzungen
Starten Sie einen Llama Stack-Server
Verbinden Sie Ihre Client-Agent-App mit dem Llama Stack-Server
Nach dem Start können Sie Ihre Agenten-App einfach auf die URL für diesen Server verweisen (z. B. http://localhost:5000
).
Python-Pakete
Wir empfehlen die Erstellung einer isolierten Conda-Python-Umgebung.
# Erstellen und aktivieren Sie eine virtuelle UmgebungENV=Stack conda create -n $ENV python=3.10cd <path-to-llama-stack-apps-repo>conda activate $ENV# Install dependenciespip install -r require.txt
Dadurch werden alle Abhängigkeiten installiert, die erforderlich sind, um (1) einen Llama Stack-Server zu erstellen und zu starten (2) Ihre Client-App mit dem Llama Stack-Server zu verbinden.
Informationen zum Einrichten einer Llama-Stack-Distribution und zum Ausführen eines Servers zur Bereitstellung von API-Endpunkten finden Sie im Entwicklerhandbuch unseres Lama-Stack-Repos. Sie sollten über einen Serverendpunkt zum Erstellen Ihrer Client-Apps verfügen.
Sobald Ihr Server gestartet ist, sollten Sie Ausgaben sehen –
... 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)
Wir haben Beispiel-Demoskripte für die Interaktion mit dem Stack-Server erstellt.
Wenn der Server läuft, können Sie einen einfachen Agenten ausführen, um ihn zu testen
python -m examples.agents.hello localhost 5000
Sie sehen die Ausgaben des Formulars:
> 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
Nachdem der Stack-Server nun eingerichtet ist, besteht der nächste Schritt darin, eine Agenten-App mithilfe der Agenten-APIs auszuführen.
Wir haben Beispielskripte, Notizbücher und eine UI-Chat-Oberfläche (mit Gradio!) erstellt, um Ihnen den Einstieg zu erleichtern.
Starten Sie eine App (lokal) und interagieren Sie mit ihr, indem Sie den folgenden Befehl ausführen:
PYTHONPATH=. Python-Beispiele/agent_store/app.py localhost 5000
Dadurch wird eine Mesop-App gestartet und Sie können zu localhost:7860
gehen, um mit der Chat-Oberfläche zu spielen.
Optional können Sie API-Schlüssel für benutzerdefinierte Tools einrichten:
WolframAlpha: In der Umgebungsvariablen WOLFRAM_ALPHA_API_KEY
speichern
Brave Search: In der Umgebungsvariablen BRAVE_SEARCH_API_KEY
speichern
Weitere Möglichkeiten der Interaktion finden Sie möglicherweise in Agent Store README.md
HINWEIS: Stellen Sie sicher, dass der Stack-Server noch läuft.
cd <path-to-llama-agentic-system>conda activate $ENVllama stack run <name> # Falls nicht bereits gestartetPYTHONPATH=. python -m examples.agents.rag_with_memory_bank localhost 5000
Sie sollten Ausgaben des Formulars an stdout sehen –
Umgebung: ipython Werkzeuge: brave_search, wolfram_alpha, photogen Datum des Schneidwissens: Dezember 2023 Heute Datum: 23. Juli 2024 Benutzer> Ich plane eine Reise in die Schweiz. Was sind die drei beliebtesten Orte? Endgültige Antwort von Llama Guard Shield_type=<BuiltinShield.llama_guard: 'llama_guard'> is_violation=Falsch Verletzung_typ=Keine Verletzung_return_message=Keine Habe PromptGuardShield ausgeführt und folgende Werte erhalten: Eingebettet: 0,9999765157699585, Bösartig: 1,1110752893728204e-05 StepType.shield_call> Kein Verstoß role='user' content='Ich plane eine Reise in die Schweiz. Was sind die drei beliebtesten Orte?'StepType.inference> Die Schweiz ist ein wunderschönes Land mit einer reichen Geschichte, Kultur und Naturschönheit. Hier sind drei Orte, die Sie unbedingt besuchen sollten: ....
Tipp Sie können optional
--disable-safety
in den Skripten ausführen, um zu vermeiden, dass ständig Sicherheitsschilde ausgeführt werden.
Wenn Sie Fragen haben, können Sie sich gerne an uns wenden.
Schauen Sie sich unsere Client-SDKs für die Verbindung zum Llama Stack-Server an. Sie können zwischen den Programmiersprachen Python, Node, Swift und Kotlin wählen, um Ihre Anwendungen schnell zu erstellen.
Notiz
Während Sie die Apps mit venv
ausführen können, ist für die Installation einer Distribution Conda erforderlich.
# Erstellen und aktivieren Sie eine virtuelle Umgebungpython3 -m venv venvsource venv/bin/activate
# Erstellen und aktivieren Sie eine virtuelle Umgebungpython -m venv venv venvScriptsactivate # Für Eingabeaufforderung# oder.venvScriptsActivate.ps1 # Für PowerShell# odersource venvScriptsactivate # Für Git
Die Anweisungen danach (einschließlich pip install -r requirements.txt
für die Installation der Abhängigkeiten) bleiben gleich.