Este repositório mostra exemplos de aplicativos desenvolvidos com base no Llama Stack. A partir do Llama 3.1 você pode construir aplicações agênticas capazes de:
dividir uma tarefa e executar o raciocínio em várias etapas.
usando ferramentas para realizar algumas ações
integrado: o modelo possui conhecimento integrado de ferramentas como pesquisa ou interpretador de código
tiro zero: o modelo pode aprender a chamar ferramentas usando definições de ferramentas no contexto nunca antes vistas
fornecendo proteções de segurança em nível de sistema usando modelos como Llama Guard.
Observação
A API Llama Stack ainda está evoluindo e pode mudar. Sinta-se à vontade para construir e experimentar, mas não confie na estabilidade ainda!
Um aplicativo agente requer alguns componentes:
capacidade de executar inferência na série de modelos Llama subjacentes
capacidade de executar verificações de segurança usando a série de modelos Llama Guard
capacidade de executar ferramentas, incluindo um ambiente de execução de código, e fazer loop usando o processo de raciocínio de várias etapas do modelo
Todos esses componentes agora são oferecidos por uma única distribuição Llama Stack. O Llama Stack define e padroniza esses componentes e muitos outros que são necessários para tornar a construção de aplicativos de IA generativa mais fácil. Várias implementações dessas APIs são então montadas por meio de uma Llama Stack Distribution .
Para começar a usar o Llama Stack Apps, você precisará:
Pré-requisitos de instalação
Inicie um servidor Llama Stack
Conecte seu aplicativo de agente cliente ao servidor Llama Stack
Uma vez iniciado, você pode simplesmente apontar seu aplicativo agente para a URL deste servidor (por exemplo, http://localhost:5000
).
Pacotes Python
Recomendamos a criação de um ambiente conda Python isolado.
# Crie e ative um ambiente virtualENV=stack conda create -n $ENV python=3.10cd <path-to-llama-stack-apps-repo>conda activate $ENV# Instalar dependênciaspip install -r requisitos.txt
Isso instalará todas as dependências necessárias para (1) Construir e iniciar um servidor Llama Stack (2) Conectar seu aplicativo cliente ao servidor Llama Stack.
Consulte o Guia do desenvolvedor do repositório Llama-stack para configurar uma distribuição Llama Stack e executar um servidor para servir endpoints de API. Você deve ter um endpoint de servidor para criar seus aplicativos cliente.
Assim que o servidor for iniciado, você deverá ver as saídas -
... 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)
Construímos exemplos de scripts de demonstração para interagir com o servidor Stack.
Com o servidor em execução, você pode testar um agente simples
python -m examples.agents.hello localhost 5000
Você verá saídas do formulário -
> 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
Agora que o servidor Stack está configurado, o próximo passo seria executar um aplicativo agente usando APIs de agentes.
Criamos scripts de amostra, blocos de anotações e uma interface de bate-papo UI (usando Gradio!) para ajudá-lo a começar.
Inicie um aplicativo (local) e interaja com ele executando o seguinte comando:
PYTHONPATH=. exemplos de python/agent_store/app.py localhost 5000
Isso iniciará um aplicativo mesop e você poderá acessar localhost:7860
para brincar com a interface de bate-papo.
Opcionalmente, você pode configurar chaves de API para ferramentas personalizadas:
WolframAlpha: armazenar na variável de ambiente WOLFRAM_ALPHA_API_KEY
Brave Search: armazenar na variável de ambiente BRAVE_SEARCH_API_KEY
Você pode ver outras maneiras de interagir no Agent Store README.md
NOTA: Certifique-se de que o servidor Stack ainda esteja em execução.
cd <path-to-llama-agentic-system>conda activate $ENVllama stack run <nome> # Se ainda não foi iniciadoPYTHONPATH=. python -m exemplos.agentes.rag_with_memory_bank localhost 5000
Você deverá ver as saídas para stdout do formulário -
Ambiente: ipython Ferramentas: Brave_search, wolfram_alpha, fotogen Data do conhecimento de corte: dezembro de 2023 Data de hoje: 23 de julho de 2024 Usuário> Estou planejando uma viagem para a Suíça, quais são os 3 principais lugares para visitar? Resposta final do Llama Guard Shield_type=<BuiltinShield.llama_guard: 'llama_guard'> is_violation=Falseviolation_type=Nenhum violação_return_message=Nenhum Executei o PromptGuardShield e obtive pontuações: Incorporado: 0,9999765157699585, Malicioso: 1,1110752893728204e-05 StepType.shield_call> Sem violação role='user' content='Estou planejando uma viagem para a Suíça. Quais são os 3 principais lugares para visitar?'StepType.inference> A Suíça é um país lindo com uma rica história, cultura e beleza natural. Aqui estão três lugares imperdíveis para adicionar ao seu itinerário: ....
Dica Opcionalmente, você pode fazer
--disable-safety
nos scripts para evitar a execução de escudos de segurança o tempo todo.
Sinta-se à vontade para entrar em contato se tiver dúvidas.
Confira nossos SDKs de cliente para conectar-se ao servidor Llama Stack. Você pode escolher entre as linguagens de programação python, node, swift e kotlin para construir rapidamente seus aplicativos.
Observação
Embora você possa executar os aplicativos usando venv
, a instalação de uma distribuição requer conda.
# Crie e ative um ambiente virtualpython3 -m venv venvsource venv/bin/activate
# Crie e ative um ambiente virtualpython -m venv venv venvScriptsactivate # para prompt de comando# ou.venvScriptsActivate.ps1 # para PowerShell# orsource venvScriptsactivate # para Git
As instruções a seguir (incluindo pip install -r requirements.txt
para instalar as dependências) permanecem as mesmas.