- 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
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.
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:
- Valida a mensagem recebida.
- Aplica restrições de entrada e de tópico.
- Carrega o histórico da sessão.
- Verifica o cache de respostas.
- Envia a solicitação ao Ollama quando não há resposta em cache.
- Armazena a resposta para solicitações futuras.
- 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 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.