Ce référentiel montre des exemples d'applications construites sur Llama Stack. À partir de Llama 3.1, vous pouvez créer des applications agentiques capables de :
décomposer une tâche et effectuer un raisonnement en plusieurs étapes.
utiliser des outils pour effectuer certaines actions
intégré : le modèle possède une connaissance intégrée d'outils tels que la recherche ou l'interpréteur de code
Zero-shot : le modèle peut apprendre à appeler des outils à l'aide de définitions d'outils contextuelles inédites
fournissant des protections de sécurité au niveau du système en utilisant des modèles comme Llama Guard.
Note
L'API Llama Stack est toujours en évolution et peut changer. N'hésitez pas à construire et à expérimenter, mais ne comptez pas encore sur sa stabilité !
Une application agent nécessite quelques composants :
capacité à exécuter des inférences sur la série de modèles Llama sous-jacente
possibilité d'effectuer des contrôles de sécurité à l'aide de la série de modèles Llama Guard
capacité à exécuter des outils, y compris un environnement d'exécution de code, et à boucler en utilisant le processus de raisonnement en plusieurs étapes du modèle
Tous ces composants sont désormais proposés par une seule distribution Llama Stack. La Llama Stack définit et standardise ces composants et bien d’autres qui sont nécessaires pour rendre la création d’applications d’IA générative plus fluide. Diverses implémentations de ces API sont ensuite assemblées via une distribution Llama Stack .
Pour démarrer avec Llama Stack Apps, vous devrez :
Conditions préalables à l'installation
Démarrer un serveur Llama Stack
Connectez votre application agent client au serveur Llama Stack
Une fois démarré, vous pouvez simplement pointer votre application agent vers l'URL de ce serveur (par exemple http://localhost:5000
).
Paquets Python
Nous vous recommandons de créer un environnement Conda Python isolé.
# Créer et activer un environnement virtuelENV=stack conda create -n $ENV python=3.10cd <path-to-llama-stack-apps-repo>conda activate $ENV# Installer dependenciespip install -r conditions.txt
Cela installera toutes les dépendances requises pour (1) créer et démarrer un serveur Llama Stack (2) connecter votre application client au serveur Llama Stack.
Veuillez consulter le guide du développeur de notre référentiel Llama-stack pour configurer une distribution Llama Stack et exécuter un serveur pour servir les points de terminaison de l'API. Vous devez disposer d'un point de terminaison de serveur pour créer vos applications clientes.
Une fois votre serveur démarré, vous devriez avoir vu des résultats :
... 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)
Nous avons créé des exemples de scripts de démonstration pour interagir avec le serveur Stack.
Avec le serveur en cours d'exécution, vous pouvez exécuter pour tester un simple agent
python -m examples.agents.hello localhost 5000
Vous verrez les sorties du formulaire --
> 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
Maintenant que le serveur Stack est configuré, la prochaine chose serait d'exécuter une application agent à l'aide des API des agents.
Nous avons créé des exemples de scripts, des blocs-notes et une interface de discussion utilisateur (en utilisant Gradio !) pour vous aider à démarrer.
Démarrez une application (locale) et interagissez avec elle en exécutant la commande suivante :
PYTHONPATH=. exemples python/agent_store/app.py localhost 5000
Cela démarrera une application mesop et vous pourrez accéder à localhost:7860
pour jouer avec l'interface de chat.
Vous pouvez éventuellement configurer des clés API pour les outils personnalisés :
WolframAlpha : stocker dans la variable d'environnement WOLFRAM_ALPHA_API_KEY
Brave Search : stocker dans la variable d'environnement BRAVE_SEARCH_API_KEY
Vous pouvez voir d'autres moyens d'interagir dans Agent Store README.md
REMARQUE : assurez-vous que le serveur Stack est toujours en cours d'exécution.
cd <path-to-llama-agentic-system>conda activate $ENVllama stack run <name> # Si ce n'est pas déjà faitPYTHONPATH=. python -m examples.agents.rag_with_memory_bank localhost 5000
Vous devriez voir les sorties sur la sortie standard du formulaire --
Environnement : IPython Outils : brave_search, wolfram_alpha, photogen Date de coupe des connaissances : décembre 2023 Date d'aujourd'hui : 23 juillet 2024 Utilisateur> Je prévois un voyage en Suisse, quels sont les 3 meilleurs endroits à visiter ?Réponse finale de Llama Guard Shield_type=<BuiltinShield.llama_guard: 'llama_guard'> is_violation=False violation_type=Aucun violation_return_message=Aucun J'ai exécuté PromptGuardShield et obtenu des scores : intégré : 0,9999765157699585, malveillant : 1,1110752893728204e-05. StepType.shield_call> Aucune violation role='user' content='Je prévois un voyage en Suisse, quels sont les 3 meilleurs endroits à visiter ?'StepType.inference> La Suisse est un pays magnifique avec une histoire, une culture et une beauté naturelle riches. Voici trois lieux incontournables à ajouter à votre itinéraire : ....
Astuce Vous pouvez éventuellement faire
--disable-safety
dans les scripts pour éviter d'exécuter des boucliers de sécurité en permanence.
N'hésitez pas à nous contacter si vous avez des questions.
Consultez nos SDK client pour vous connecter au serveur Llama Stack. Vous pouvez choisir parmi les langages de programmation Python, Node, Swift et Kotlin pour créer rapidement vos applications.
Note
Bien que vous puissiez exécuter les applications à l'aide de venv
, l'installation d'une distribution nécessite conda.
# Créer et activer un environnement virtuelpython3 -m venv venvsource venv/bin/activate
# Créer et activer un environnement virtuelpython -m venv venv venvScriptsactivate # Pour l'invite de commande# ou.venvScriptsActivate.ps1 # Pour PowerShell# ou la source venvScriptsactivate # Pour Git
Les instructions suivantes (y compris pip install -r requirements.txt
pour installer les dépendances) restent les mêmes.