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.
Actualizado 3 de out. de 2024  · 8 min de leitura

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.

Temas

Aprenda IA com estes cursos!

Curso

Working with Llama 3

4 hr
3.8K
Explore the latest techniques for running the Llama LLM locally, fine-tuning it, and integrating it within your stack.
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