Este repositorio muestra ejemplos de aplicaciones creadas sobre Llama Stack. A partir de Llama 3.1 puedes crear aplicaciones agentes capaces de:
desglosar una tarea y realizar un razonamiento de varios pasos.
Usar herramientas para realizar algunas acciones.
Incorporado: el modelo tiene conocimiento incorporado de herramientas como búsqueda o intérprete de código.
disparo cero: el modelo puede aprender a llamar herramientas usando definiciones de herramientas en contexto nunca antes vistas
proporcionando protecciones de seguridad a nivel de sistema utilizando modelos como Llama Guard.
Nota
La API Llama Stack aún está evolucionando y puede cambiar. Siéntete libre de construir y experimentar, ¡pero no confíes todavía en su estabilidad!
Una aplicación agente requiere algunos componentes:
capacidad de realizar inferencias sobre la serie de modelos Llama subyacente
capacidad de realizar controles de seguridad utilizando la serie de modelos Llama Guard
Capacidad para ejecutar herramientas, incluido un entorno de ejecución de código, y realizar bucles utilizando el proceso de razonamiento de varios pasos del modelo.
Todos estos componentes ahora los ofrece una única distribución de Llama Stack. Llama Stack define y estandariza estos componentes y muchos otros que son necesarios para facilitar la creación de aplicaciones de IA generativa. Luego, se ensamblan varias implementaciones de estas API a través de Llama Stack Distribution .
Para comenzar con Llama Stack Apps, necesitarás:
Instalar requisitos previos
Iniciar un servidor Llama Stack
Conecte su aplicación de agente cliente al servidor Llama Stack
Una vez iniciado, puede simplemente apuntar su aplicación agente a la URL de este servidor (por ejemplo, http://localhost:5000
).
Paquetes de Python
Recomendamos crear un entorno Python conda aislado.
# Crear y activar un entorno virtualENV=stack conda create -n $ENV python=3.10cd <ruta-al-llama-stack-apps-repo>conda enable $ENV# Instalar dependenciaspip install -r requisitos.txt
Esto instalará todas las dependencias necesarias para (1) construir e iniciar un servidor Llama Stack (2) conectar su aplicación cliente al servidor Llama Stack.
Consulte la Guía para desarrolladores de nuestro repositorio llama-stack para configurar una distribución de Llama Stack y ejecutar un servidor para servir puntos finales API. Debería tener un punto final de servidor para crear sus aplicaciones cliente.
Una vez que haya iniciado su servidor, debería haber visto los resultados:
... 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)
Hemos creado scripts de demostración de muestra para interactuar con el servidor Stack.
Con el servidor en ejecución, puede ejecutarlo para probar un Agente simple.
python -m examples.agents.hello localhost 5000
Verá resultados del formulario:
> 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
Ahora que el servidor Stack está configurado, lo siguiente sería ejecutar una aplicación agente utilizando las API de agentes.
Hemos creado scripts de muestra, cuadernos y una interfaz de chat UI (¡usando Gradio!) para ayudarle a comenzar.
Inicie una aplicación (local) e interactúe con ella ejecutando el siguiente comando:
PYTHONPATH=. ejemplos de Python/agent_store/app.py localhost 5000
Esto iniciará una aplicación mesop y podrás ir a localhost:7860
para jugar con la interfaz de chat.
Opcionalmente, puede configurar claves API para herramientas personalizadas:
WolframAlpha: almacenar en la variable de entorno WOLFRAM_ALPHA_API_KEY
Brave Search: almacenar en la variable de entorno BRAVE_SEARCH_API_KEY
Es posible que vea otras formas de interactuar en Agent Store README.md
NOTA: Asegúrese de que el servidor Stack todavía esté ejecutándose.
cd <ruta-al-sistema-agentic-llama>conda activar $ENVllama pila ejecutar <nombre> # Si aún no se ha iniciadoPYTHONPATH=. python -m ejemplos.agents.rag_with_memory_bank localhost 5000
Deberías ver resultados en la salida estándar del formulario:
Entorno: ipython Herramientas: brave_search, wolfram_alpha, photogen Fecha de conocimiento de corte: diciembre de 2023 Fecha de hoy: 23 de julio de 2024 Usuario> Estoy planeando un viaje a Suiza, ¿cuáles son los 3 mejores lugares para visitar? Respuesta final de Llama Guard shield_type=<BuiltinShield.llama_guard: 'llama_guard'> is_violation=False violacion_tipo=Ninguno violacion_return_message=Ninguno Ejecuté PromptGuardShield y obtuve puntuaciones: Incrustado: 0.9999765157699585, Malicioso: 1.1110752893728204e-05 StepType.shield_call> Sin infracción role='user' content='Estoy planeando un viaje a Suiza, ¿cuáles son los 3 mejores lugares para visitar?'StepType.inference> Suiza es un país hermoso con una rica historia, cultura y belleza natural. Aquí hay tres lugares de visita obligada para agregar a su itinerario: ....
Consejo Opcionalmente, puede utilizar
--disable-safety
en los scripts para evitar ejecutar escudos de seguridad todo el tiempo.
No dude en comunicarse si tiene preguntas.
Consulte los SDK de nuestros clientes para conectarse al servidor Llama Stack. Puede elegir entre lenguajes de programación Python, Node, Swift y Kotlin para crear rápidamente sus aplicaciones.
Nota
Si bien puedes ejecutar las aplicaciones usando venv
, la instalación de una distribución requiere conda.
# Crear y activar un entorno virtualpython3 -m venv venvsource venv/bin/activate
# Crea y activa un entorno virtualpython -m venv venv venvScriptsactivate # Para símbolo del sistema # or.venvScriptsActivate.ps1 # Para PowerShell # orsource venvScriptsactivate # Para Git
Las instrucciones posteriores (incluido pip install -r requirements.txt
para instalar las dependencias) siguen siendo las mismas.