Pular para o conteúdo principal

Llama Stack: Um guia com exemplos práticos

O Llama Stack é um conjunto de ferramentas padronizadas e APIs desenvolvidas pela Meta que simplifica o processo de criação e implantação de grandes aplicativos de modelos de linguagem.
Atualizado 3 de out. de 2024  · 8 min lido

Embora IA generativa tenham ganhado grande força, o desafio de criar aplicativos eficientes e consistentes e implantá-los ainda precisa ser resolvido.

Llama Stack, um projeto de código aberto da Meta, aborda essa complexidade.

O Llama Stack apresenta uma estrutura padronizada e APIs modulares que oferecem uma experiência de desenvolvimento mais rápida e suave. Ele define e padroniza os blocos de construção necessários para levar os aplicativos de IA generativa ao mercado.

Neste artigo, orientarei você sobre como começar a usar o Llama Stack usando instruções passo a passo. Se você for um desenvolvedor que está se preparando para implantar um aplicativo de IA na produção, não deixe de consultar o repositório Llama Stackpois ele está em constante evolução.

Desenvolver aplicativos de IA

Aprenda a criar aplicativos de IA usando a API OpenAI.
Comece a treinar gratuitamente

O que é o Llama Stack?

O Llama Stack é uma estrutura criada para simplificar o desenvolvimento e a implementação de aplicativos de IA generativa criados com base nos modelos Llama da Meta. modelos Llama da Meta. Para isso, ele fornece uma coleção de APIs e componentes padronizados para tarefas como inferência, segurança, gerenciamento de memória e recursos de agente.

Aqui estão seus objetivos e benefícios:

  • Padronização: O conjunto de APIs oferece uma interface consistente e um ambiente de trabalho para os desenvolvedores usarem e adaptarem rapidamente seus aplicativos quando novos modelos estiverem disponíveis.
  • Synergy: Ao abstrair funcionalidades complexas em APIs, ele permite a colaboração entre várias ferramentas e componentes, em favor da modularidade e da flexibilidade.
  • Desenvolvimento suave: O Llama Stack oferece pedágios para um ciclo de vida de desenvolvimento simplificado, predefinindo as principais funcionalidades e acelerando a implementação.

Distribuição da pilha de lhamas

Fonte: Meta AI

Componentes e APIs da pilha Llama

O Llama Stack vem com várias APIs, cada uma voltada para um conjunto específico de tarefas na criação de um aplicativo de IA generativa.

API de inferência

A API de inferência lida com a geração de texto ou de solicitações multimodais variações do Llama. Seus principais recursos são:

  • Ele oferece suporte a várias estratégias de decodificação, como a amostragem top-k.
  • Ele gerencia solicitações em lote e respostas em fluxo, o que é útil para aplicativos de alta escala.

A API define várias configurações que permitem aos desenvolvedores controlar o comportamento do modelo (por exemplo, FP8 ou BF16 quantização) com base nos requisitos de seus aplicativos.

Segurança API

A API de segurança foi criada para implantação responsável de modelos de IA por meio da moderação de conteúdo e da filtragem de resultados prejudiciais ou potencialmente tendenciosos. Ele é configurável para definir níveis de violação (por exemplo, INFO, WARN, ERROR) e para retornar mensagens acionáveis aos usuários.

API de memória

A API de memória concede a você a capacidade de reter e consultar interações passadas e criar conversas mais coerentes e contextualmente conscientes. A variedade de configurações de memória oferece aos desenvolvedores a opção de escolher tipos de armazenamento com base nas necessidades dos aplicativos. Seus principais recursos são:

  • Ele permite o armazenamento flexível de memória, fornecendo várias configurações, como vetor, valor-chave, palavra-chave e gráfico, que são essencialmente métodos de armazenamento de memórias de conversação.
  • Permite a inserção, a consulta, a atualização e a exclusão de documentos nos bancos de memória. Os resultados da consulta são retornados como blocos com pontuações de relevância.

API agêntica

A API Agentic permite que os LLMs usem ferramentas e funções externas, possibilitando a realização de tarefas como pesquisa na Web, execução de código ou recuperação de memória. A API permite que os desenvolvedores configurem agentes com ferramentas e objetivos específicos. Ele oferece suporte a interações de várias voltas, em que cada volta consiste em várias etapas. Seus principais recursos são:

  • Ele vem com ferramentas integradas, como brave_search, wolfram_alpha, photogen e code_interpreter. Podemos usar essas ferramentas para lidar com solicitações ou executar código no contexto do modelo.
  • Ele funciona com a API de memória para recuperar informações relevantes para aprimorar o contexto de longo prazo.
  • Os modelos podem executar tarefas por meio de várias etapas, como inferência, execução de ferramentas, recuperação de memória e verificações de segurança.

Outras APIs

Aqui estão as outras APIs que a Llama Stack oferece: 

Como instalar e configurar o Llama Stack

Implementaremos um projeto de amostra no Llama Stack para que você se familiarize com a ideia geral e os recursos dessa estrutura.

Antes de começarmos, você deve estar ciente de que:

  1. O Llama Stack está evoluindo rapidamente e é esperado que você encontre bugs durante a implementação do seu cliente, por isso é importante consultar a documentação do repositório e relatar qualquer possível problema. No momento em que escrevi este artigo, por exemplo, não consegui executar o contêiner do Llama Stack no Windows devido a alguns problemas específicos do sistema operacional, nos quais a equipe de desenvolvedores estará trabalhando.
  2. Você não pode usar o Llama Stack no Google Colab, pois a versão gratuita da plataforma não oferece suporte à criação de contêineres docker.

Vamos começar com a configuração da interface de linha de comando (CLI) do Llama.

1. Llama CLI

O Llama Stack oferece uma interface de linha de comando (CLI) para gerenciar distribuições, instalar modelos e configurar ambientes. Aqui estão as etapas de instalação que você precisa realizar:

1. Crie e ative um ambiente virtual:

conda create -n llama_stack python=3.10
conda activate llama_stack

2. Clone o repositório do Llama Stack: ```bash

git clone <https://github.com/meta-llama/llama-stack.git>

cd llama-stack

3. Install the required dependencies:```bash
pip install -r requirements.txt

2. Usando contêineres do Docker

Docker simplificam a implantação do servidor Llama Stack e dos provedores de API do agente. Imagens pré-construídas do Docker estão disponíveis para facilitar a configuração:

docker pull llamastack/llamastack-local-gpu
llama stack build
llama stack configure llamastack-local-gpu

Esses comandos extraem a imagem do Docker, criam-na e configuram a pilha.

Como criar um aplicativo com as APIs da Llama Stack

Vamos criar um chatbot básico usando as APIs do Llama Stack. Aqui estão as etapas que precisamos seguir:

1. Iniciar o servidor Llama Stack

Executaremos o servidor na porta 5000. Certifique-se de que o servidor esteja em execução antes de trabalhar com as APIs:

llama stack run local-gpu --port 5000

2. Use a API de inferência

Depois de instalar o Llama Stack, você pode usar o código do cliente para interagir com suas APIs. Use a API de inferência para gerar respostas com base na entrada do usuário:

from llama_stack_client import LlamaStackClient
client = LlamaStackClient(base_url="<http://localhost:5000>")
user_input = "Hello! How are you?"
response = client.inference.chat_completion(
    model="Llama3.1-8B-Instruct",
    messages=[{"role": "user", "content": user_input}],
    stream=False
)
print("Bot:", response.text)

Observação: Substitua "Llama3.1-8B-Instruct" pelo nome do modelo real disponível em sua configuração.

3. Integrar a API de segurança

Implemente a API de segurança para moderar as respostas e garantir que elas sejam apropriadas:

safety_response = client.safety.run_shield(
    messages=[{"role": "assistant", "content": response.text}],
    shield_type="llama_guard",
    params={}
)
if safety_response.violation:
    print("Unsafe content detected.")
else:
    print("Bot:", response.text)

4. Adicionar memória com a API de memória

Crie o reconhecimento do contexto do chatbot armazenando e recuperando o histórico de conversas:

### building a memory bank that can be used to store and retrieve context.
bank = client.memory.create_memory_bank(
    name="chat_memory",
    config=VectorMemoryBankConfig(
        type="vector",
        embedding_model="all-MiniLM-L6-v2",
        chunk_size_in_tokens=512,
        overlap_size_in_tokens=64,
    )
)

5. Encadear componentes

Além disso, podemos combinar as APIs para criar um chatbot robusto:

  • API de inferência: Gera respostas.
  • Segurança API: Filtra conteúdo inadequado.
  • API de memória: Mantém o contexto da conversa.

Exemplo completo

Aqui está o código completo depois de cobrir todas as etapas:

import uuid
client = LlamaStackClient(base_url="<http://localhost:5000>")
### create a memory bank at the start
bank = client.memory.create_memory_bank(
    name="chat_memory",
    config=VectorMemoryBankConfig(
        type="vector",
        embedding_model="all-MiniLM-L6-v2",
        chunk_size_in_tokens=512,
        overlap_size_in_tokens=64,
    )
)
def get_bot_response(user_input):
    ### retrieving conversation history
    query_response = client.memory.query_documents(
        bank_id=bank.bank_id,
        query=[user_input],
        params={"max_chunks": 10}
    )
    history = [chunk.content for chunk in query_response.chunks]
    ### preparing messages with history
    messages = [{"role": "user", "content": user_input}]
    if history:
        messages.insert(0, {"role": "system", "content": "\\n".join(history)})
       
    ### generate response
    response = client.inference.chat_completion(
        model="llama-2-7b-chat",
        messages=messages,
        stream=False
    )
    bot_response = response.text
    ### safety check
    safety_response = client.safety.run_shield(
        messages=[{"role": "assistant", "content": bot_response}],
        shield_type="llama_guard",
        params={}
    )
    if safety_response.violation:
        return "I'm sorry, but I can't assist with that request."
    ### memory storing
    documents = [
        MemoryBankDocument(
            document_id=str(uuid.uuid4()),
            content=user_input,
            mime_type="text/plain"
        ),
        MemoryBankDocument(
            document_id=str(uuid.uuid4()),
            content=bot_response,
            mime_type="text/plain"
        )
    ]
    client.memory.insert_documents(
        bank_id=bank.bank_id,
        documents=documents
    )
    return bot_response
### putting all together
while True:
    user_input = input("You: ")
    if user_input.lower() == "bye":
        break
    bot_response = get_bot_response(user_input)
    print("Bot:", bot_response)

Exemplos e contribuições da pilha Llama

Para que você possa ver alguns exemplos e iniciar a implementação de aplicativos usando o Llama Stack, o Meta forneceu o arquivo llama-stack-apps no qual você pode ver alguns aplicativos de exemplo. Não deixe de conferir e se familiarizar com a estrutura.

Como um projeto de código aberto, o Llama Stack vive das contribuições da comunidade. As APIs estão evoluindo rapidamente e o projeto está aberto ao feedback e à participação dos desenvolvedores, ajudando a moldar o futuro da plataforma. Se você testar o Llama Stack, poderá ajudar outros desenvolvedores se também compartilhar o seu projeto como um exemplo ou contribuir com a documentação.

Conclusão

Ao longo deste artigo, exploramos como você pode começar a usar o Llama Stack por meio de instruções passo a passo.

À medida que você avança na implantação de seus aplicativos de IA, lembre-se de ficar de olho no repositório do Llama Stack para que você receba as atualizações e os aprimoramentos mais recentes.

Para saber mais sobre o ecossistema da lhama, confira os seguintes recursos:


Hesam Sheikh Hassani's photo
Author
Hesam Sheikh Hassani
LinkedIn
Twitter

Estudante de mestrado em Inteligência Artificial e redatora técnica de IA. Compartilho insights sobre a mais recente tecnologia de IA, tornando a pesquisa de ML acessível e simplificando tópicos complexos de IA necessários para manter você na vanguarda.

Tópicos

Aprenda IA com estes cursos!

Curso

MLOps Deployment and Life Cycling

4 h
7.9K
In this course, you’ll explore the modern MLOps framework, exploring the lifecycle and deployment of machine learning models.
Ver detalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

Introdução ao LLaMA da Meta AI

O LLaMA, uma estrutura revolucionária de código aberto, tem como objetivo tornar mais acessível a pesquisa de modelos de linguagem de grande porte.
Abid Ali Awan's photo

Abid Ali Awan

8 min

blog

Avaliação do LLM: Métricas, metodologias, práticas recomendadas

Saiba como avaliar modelos de linguagem grandes (LLMs) usando métricas importantes, metodologias e práticas recomendadas para tomar decisões informadas.
Stanislav Karzhev's photo

Stanislav Karzhev

9 min

Tutorial

Llama.cpp Tutorial: Um guia completo para inferência e implementação eficientes de LLM

Este guia abrangente sobre o Llama.cpp guiará você pelos fundamentos da configuração do seu ambiente de desenvolvimento, compreendendo suas principais funcionalidades e aproveitando seus recursos para solucionar casos de uso no mundo real.
Zoumana Keita 's photo

Zoumana Keita

11 min

Tutorial

Como criar aplicativos LLM com o tutorial LangChain

Explore o potencial inexplorado dos modelos de linguagem grandes com o LangChain, uma estrutura Python de código aberto para criar aplicativos avançados de IA.
Moez Ali's photo

Moez Ali

12 min

Tutorial

RAG With Llama 3.1 8B, Ollama e Langchain: Tutorial

Aprenda a criar um aplicativo RAG com o Llama 3.1 8B usando Ollama e Langchain, configurando o ambiente, processando documentos, criando embeddings e integrando um retriever.
Ryan Ong's photo

Ryan Ong

12 min

Tutorial

Guia de Introdução ao Ajuste Fino de LLMs

O ajuste fino dos grandes modelos de linguagem (LLMs, Large Language Models) revolucionou o processamento de linguagem natural (PLN), oferecendo recursos sem precedentes em tarefas como tradução de idiomas, análise de sentimentos e geração de textos. Essa abordagem transformadora aproveita modelos pré-treinados como o GPT-2, aprimorando seu desempenho em domínios específicos pelo processo de ajuste fino.
Josep Ferrer's photo

Josep Ferrer

11 min

Ver maisVer mais