Gerenciamento de Credenciais
Atualizado
por José David
As credenciais são informações confidenciais (como chaves de API, tokens ou senhas) que suas ferramentas precisam para se conectar com segurança a serviços externos.
O gerenciamento adequado das credenciais é fundamental em dois momentos-chave do ciclo de vida do seu agente:
- Durante o desenvolvimento, para realizar testes locais das suas ferramentas.
- Em produção, para garantir que seu agente funcione de forma segura nos canais integrados à Plataforma Weni.
Estrutura no agent_definition.yaml
Primeiro, você deve declarar todas as credenciais que seu agente precisará na seção credentials
do seu arquivo de definição.
agents:
mi_agente:
credentials:
API_KEY:
label: "API Key do Serviço"
placeholder: "Insira sua API Key aqui"
is_confidential: true
API_SECRET:
label: "API Secret do Serviço"
placeholder: "your-api-secret-here"
BASE_URL:
label: "URL Base da API"
placeholder: "https://api.example.com"
is_confidential: false
Cada credencial possui os seguintes atributos:
label
: Nome legível exibido na interface da Plataforma Weni.placeholder
: Texto de ajuda exibido no campo de entrada para orientar o usuário.is_confidential
: Booleano (true/false
) que indica se a credencial contém informações sensíveis. O padrão étrue
.
Credenciais em Produção
Quando você implanta seu agente na Plataforma Weni, as credenciais são gerenciadas pela interface do usuário para garantir o máximo de segurança.
Fluxo de Trabalho em Produção
- Definição no YAML: Declare as credenciais no seu
agent_definition.yaml
. Por exemplo, usando o agente CEP, você pode configurá-las assim:
agents:
cep_agent:
credentials:
api_key:
label: "API Key"
placeholder: "Enter your API key"
name: "CEP Agent"
description: "Weni's CEP agent with components"
instructions:
# Resto da definição do agente...
- Implante seu Agente: Execute
weni project push agent_definition.yaml
. A plataforma detectará automaticamente as credenciais definidas. - Configure na Interface: Um administrador poderá configurar os valores reais das credenciais diretamente pela interface da Plataforma Weni, sem precisar alterar o código.
Ao atribuir seu agente na galeria de Agentes Personalizados, a plataforma solicitará que você preencha os valores de cada credencial definida.

context
das suas ferramentas durante a execução.Acesso às Credenciais no Código
O acesso às credenciais dentro do código da sua ferramenta é sempre feito por meio do objeto context
.
from weni import Tool, Context
from weni.responses import TextResponse
import requests
class GetAddressWithAuth(Tool):
def execute(self, context: Context) -> TextResponse:
# Obtém parâmetros do contexto
cep = context.parameters.get("cep", "")
# Obtém credenciais do contexto de forma segura
api_key = context.credentials.get("api_key")
address_response = self.get_address_by_cep(cep=cep, api_key=api_key)
return TextResponse(data=address_response)
# ... Resto do código ...
A linha essencial é api_key = context.credentials.get("api_key")
. Ela recupera o valor da credencial definida no YAML e fornecida pela Plataforma Weni ou pelos arquivos de teste locais.
Credenciais para Testes Locais
Durante o desenvolvimento, você precisará fornecer valores de teste para suas ferramentas e executá-las localmente com weni run
.
Usando .env
Crie um arquivo chamado .env
dentro do diretório da sua ferramenta (o especificado em source.path
).
.env
devem coincidir exatamente com as chaves declaradas na seção credentials
do seu arquivo YAML.Por exemplo, se o seu agente CEP tiver as seguintes credenciais:
agents:
cep_agent:
credentials:
api_key:
label: "API Key"
placeholder: "Enter your API key"
# Resto do agent_definition...
O arquivo .env
deve estar em: tools/get_address/.env
e conter:
api_key=your-development-api-key
A CLI lerá esse arquivo automaticamente e tornará os valores disponíveis em context.credentials
durante o weni run
.
Usando test_definition.yaml
Para testes rápidos ou para usar credenciais diferentes em cada caso, é possível defini-las diretamente dentro do test_definition.yaml
.
Esse método permite aninhar um bloco credentials
dentro de um teste específico:
tests:
teste_com_credencial_especifica:
parameters:
cep: "57160000"
credentials:
API_KEY: "valor_de_teste_apenas_para_este_caso"
Este método é menos recomendado do que o uso de .env
. Se optar por utilizá-lo, tenha extremo cuidado com o gerenciamento de repositórios, pois fazer upload do test_definition.yaml
pode expor dados sensíveis.
Embora útil em alguns casos, este método é menos seguro que o uso de .env
.
O principal risco é a exposição acidental das credenciais ao enviar este arquivo para um repositório público (como GitHub). Um .env
geralmente está no .gitignore
por padrão, mas nem sempre é o caso dos arquivos de teste.
Dica Profissional: Se decidir usar este método, certifique-se de adicionar o arquivo
test_definition.yaml
ao seu.gitignore
para evitar vazamentos de segurança.