Pular para o conteúdo principal
Background

Crie um chatbot com LLM acelerado na edge

Implante um chatbot global com o Akamai Functions na edge e um modelo de código aberto rodando em recursos de computação dedicados com GPU.

Acompanhe uma solicitação da edge até o modelo

Veja como a aplicação verifica seu cache, aplica restrições, preserva o histórico de conversas e envia novas solicitações ao modelo hospedado na GPU.

Antes de começar

Você se conectará à instância de GPU via SSH enquanto valida a implantação do Ollama; portanto, confirme se sua chave pública está disponível antes de provisionar a infraestrutura.

  • Conta do Akamai Cloud com acesso ao Akamai Functions
  • Token de acesso pessoal do Akamai Cloud
  • Acesso de leitura e gravação para Linodes e firewalls
  • Acesso de leitura para eventos
  • Terraform instalado localmente
  • Spin CLI instalado localmente
  • Plug-in aka para o Spin
  • Node.js instalado localmente
  • Par de chaves SSH

Compilar o projeto

Primeiro, provisionar o back-end de inferência e, em seguida, configurar, testar e implantar a aplicação de edge.

Clone a aplicação de exemplo e analise seus diretórios de aplicação e infraestrutura.

Clone o repositório do projeto:

git clone https://github.com/akamai-developers/akamai-functions-llm-chatbot.git
cd akamai-functions-llm-chatbot

O repositório contém duas partes principais:

  • Um diretório infraestruture contendo a configuração do Terraform e do cloud-init
  • Uma aplicação Spin contendo o front-end Astro e a API TypeScript

Analise as variáveis do Terraform antes do provisionamento. Você pode ajustar a região, o plano de GPU, o modelo e as configurações de infraestrutura relacionadas ao seu ambiente.

Use o Terraform para criar a instância de GPU e configurar o serviço de inferência do Ollama.

Navegue até o diretório de infraestrutura e inicialize o Terraform:

cd infrastructure
terraform init

Defina seu token de acesso pessoal do Akamai Cloud:

export LINODE_TOKEN="seu-pat-aqui"

Provisione a infraestrutura:

terraform apply

O Terraform cria uma instância com GPU dedicada e usa o cloud-init para:

  • Instalar os drivers de GPU necessários
  • Instalar o Ollama
  • Baixar o modelo de código aberto configurado
  • Expor a API do Ollama na porta 11434
  • Aguarde até que o modelo fique disponível

Quando o provisionamento for concluído, o Terraform retornará o endpoint do Ollama:

ollama_endpoint = “http://<linode-ip>:11434”

O provisionamento e o carregamento do modelo geralmente levam alguns minutos.

Conecte a aplicação da edge ao endpoint do Ollama e proteja sua API de gerenciamento de cache.

Instale o Spin CLI, o Node.js e o plug-in aka antes de continuar.

Instale ou atualize o plug-in do Akamai Functions:

spin plugins update
spin plugins install aka

A aplicação usa duas variáveis de implantação:

  • ollama_url conecta a aplicação à API do Ollama hospedada na GPU.
  • secret_sauce protege o endpoint usado para limpar o cache de respostas.

Gere um valor aleatório forte para secret_sauce. As solicitações ao endpoint de gerenciamento de cache devem fornecer esse valor por meio do cabeçalho HTTP X-SecretSauce.

Não envie tokens, segredos ou credenciais do endpoint de produção para o repositório.

Execute a aplicação Spin localmente usando o mesmo back-end de inferência remoto.

Inicie a aplicação e passe as variáveis necessárias:

spin up --build \
--variable ollama_url="http://<linode-ip>:11434" \
--variable secret_sauce="<strong-random-secret>"

Abra a aplicação local no seu navegador e envie uma mensagem de teste.

Verifique se:

  • O chatbot retorna uma resposta gerada pelo modelo.
  • O histórico da conversa é mantido ao longo da sessão.
  • Perguntas repetidas podem ser respondidas a partir do cache.
  • Solicitações que violam as restrições são rejeitadas.
  • O navegador não controla nem envia o histórico completo da conversa.

Usar o back-end remoto do Ollama durante o desenvolvimento local permite que você teste o comportamento do modelo sem precisar de uma GPU local.

Compile a aplicação para WebAssembly e implante-a no Akamai Functions.

Confirme se o acesso ao Akamai Functions está habilitado para sua conta antes de implantar. Caso sua solicitação ainda não tenha sido aprovada, solicite acesso e continue com a compilação local enquanto sua solicitação é analisada.

Autentique-se no Akamai Functions:

spin aka login

Compile e implante a aplicação:

spin aka deploy --build \
--variable ollama_url="http://<linode-ip>:11434" \
--variable secret_sauce="<strong-random-secret>"

Após a implantação, abra o URL da aplicação gerada e envie uma nova pergunta.

A aplicação implantada hospeda seu front-end e sua API a partir do Akamai Functions. As solicitações são validadas na edge antes que a aplicação verifique o armazenamento de chave-valor ou entre em contato com o back-end de inferência da GPU.

Confirme se o processamento na edge reduz as solicitações desnecessárias ao modelo.

Teste a aplicação com perguntas novas e repetidas.

Para uma nova pergunta, a aplicação:

  1. Valida a mensagem recebida.
  2. Aplica restrições de entrada e de tópico.
  3. Carrega o histórico da sessão.
  4. Verifica o cache de respostas.
  5. Envia a solicitação ao Ollama quando não há resposta em cache.
  6. Armazena a resposta para solicitações futuras.
  7. Atualiza o histórico da sessão.

Para uma consulta repetida equivalente, a aplicação pode retornar a resposta armazenada em cache diretamente do edge, sem utilizar outro ciclo de inferência da GPU.

Quando os testes forem concluídos, remova a infraestrutura que não for mais necessária:

cd infrastructure
terraform destroy

Os recursos dedicados de GPU continuam a gerar cobranças até que sejam excluídos.

Perguntas frequentes (FAQ)

Perguntas frequentes (FAQ)

O Akamai Functions atende ao front-end e às APIs, valida solicitações, aplica restrições, gerencia sessões de conversa e verifica o cache de respostas distribuído antes de entrar em contato com o modelo.

O modelo de código aberto é fornecido pelo Ollama em uma instância do Akamai Cloud com uma GPU NVIDIA dedicada. O modelo não é executado dentro do Akamai Functions.

A aplicação Spin é compilada para WebAssembly para garantir inicialização rápida, forte isolamento de workload e implantação na infraestrutura de edge distribuída da Akamai.

A aplicação normaliza cada pergunta e verifica se há uma resposta existente no armazenamento de chave-valor do Akamai Functions. Um acerto no cache retorna a resposta salva sem enviar outra solicitação à GPU.

O histórico da conversa é armazenado no lado do servidor, no armazenamento de chave-valor do Akamai Functions, e associado a um identificador de sessão em um cookie seguro. O exemplo limita o histórico a 20 mensagens.

O exemplo verifica se há injeção de prompt, pivôs de solicitação secundária e solicitações de geração de código. Ele também limita o comprimento das mensagens e usa um prompt do sistema para manter as respostas dentro do domínio pretendido pela aplicação.

Sim. Você pode alterar o modelo Ollama por meio da configuração da infraestrutura, sujeito aos requisitos de hardware e memória do modelo.

A oferta se aplica apenas a serviços na nuvem elegíveis. Serviços de GPU dedicados estão excluídos; portanto, verifique os termos promocionais atuais antes de provisionar o projeto.

Sim. A API do TypeScript utiliza o LangChain.js e um endpoint compatível com o Ollama, de modo que o contexto estático do exemplo pode ser ampliado com um carregador de documentos, um recuperador e um armazenamento de vetores.

Execute terraform destroy após concluir o projeto e confirme se a instância da GPU e os recursos associados foram excluídos da sua conta.