0Pricing
AI Agents · Aula

Registrando chamadas de ferramentas e entradas/saídas

Saiba o que capturar em cada etapa: nome da ferramenta, argumentos de entrada, saída, latência, erro e identificador do trecho pai.

Registrando chamadas de ferramentas e entradas/saídas é uma aula grátis de AI Agents no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Agents, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Agents inclui 4 aulas no total.

Partes desta aula ainda não foram traduzidas e aparecem em inglês.

O que registrar por etapa

Para cada span, capture:

  • Nome da etapa (llm_call, tool_call, retrieve)
  • Entradas (mensagens, argumentos da ferramenta e consulta)
  • Saídas (resposta e resultado da ferramenta)
  • Metadados (modelo, latência, contagens de tokens e custo)
  • Informações do erro, se houver falha

Auxiliar de span feito manualmente

Sem uma estrutura, um auxiliar mínimo:

from contextlib import contextmanager
import time, uuid

@contextmanager
def span(name, trace_id, parent_id=None):
    span_id = str(uuid.uuid4())
    start = time.time()
    record = {'trace_id': trace_id, 'span_id': span_id, 'parent_id': parent_id, 'name': name, 'start': start}
    try:
        yield record
    except Exception as e:
        record['error'] = str(e)
        raise
    finally:
        record['duration_ms'] = (time.time() - start) * 1000
        save_span(record)

Using It

trace_id = str(uuid.uuid4())
with span('llm_call_planner', trace_id) as s:
    s['model'] = 'gpt-4o-mini'
    s['messages_in'] = messages
    response = client.chat.completions.create(model='gpt-4o-mini', messages=messages)
    s['response'] = response.choices[0].message.content
    s['tokens_in'] = response.usage.prompt_tokens
    s['tokens_out'] = response.usage.completion_tokens

Aninhamento de span

Transmita parent_id para baixo para que os spans formem uma árvore:

with span('agent_step', trace_id) as parent:
    with span('llm_call', trace_id, parent_id=parent['span_id']):
        ...
    with span('tool_call:search', trace_id, parent_id=parent['span_id']):
        ...

Registro de chamadas de ferramentas

Especificamente para chamadas de ferramentas, registre:

  • Nome da ferramenta
  • Argumentos (JSON)
  • Resultado (JSON, possivelmente truncado)
  • Latência
  • Erro, se houver

Trunque cargas muito grandes

Alguns resultados de ferramentas são enormes (HTML de 200 KB). Trunque-os antes de armazenar:

def safe_payload(obj, max_chars=8000):
    s = json.dumps(obj)
    return s if len(s) <= max_chars else s[:max_chars] + '...[truncated]'

Mascaramento de PII

Remova informações pessoais antes de armazenar:

import re
EMAIL_RE = re.compile(r'[\w\.-]+@[\w\.-]+')

def redact(text):
    return EMAIL_RE.sub('[email]', text)

print(redact("Contact me at alice@example.com for details."))

Saída de registros estruturados

Emita um registro JSON por span — encaminhe para ELK, Loki, Datadog ou BigQuery:

import json
import sys

def save_span(record):
    print(json.dumps(record), file=sys.stderr, flush=True)

demo_record = {'span': 'call_llm', 'duration_ms': 120, 'ok': True}
save_span(demo_record)
print("Logged span:", json.dumps(demo_record))

Correlacione com sessões de usuários

Inclua um session_id e um user_id em cada span para poder filtrar os rastros por usuário posteriormente.

Amostragem

Para agentes de alto volume, faça amostragem:

import random

def should_trace(user_id):
    return random.random() < 0.10  # 10% of traces
# Always trace errors and slow runs.

random.seed(42)
sampled = sum(should_trace(i) for i in range(1000))
print(f"Traced {sampled} out of 1000 calls (~10% target)")

Reproduza a partir dos rastros

Salve as entradas completas (mensagens, ferramentas e argumentos) para poder executar novamente um trace com uma nova instrução e testar melhorias. Essa é a base do desenvolvimento orientado por avaliações.

Truncar cargas grandes?

Por que truncar saídas grandes de ferramentas nos registros?

Recapitulação

Cada etapa, cada entrada, cada saída — estruturadas, aninhadas e amostradas. Esse é o material bruto para todo o restante da observabilidade.

Perguntas Frequentes

A aula “Registrando chamadas de ferramentas e entradas/saídas” é grátis?

Sim — o texto completo de “Registrando chamadas de ferramentas e entradas/saídas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Agents, atualize para CoddyKit PRO. O curso de AI Agents inclui 4 aulas no total.

O que vou aprender em “Registrando chamadas de ferramentas e entradas/saídas”?

Saiba o que capturar em cada etapa: nome da ferramenta, argumentos de entrada, saída, latência, erro e identificador do trecho pai. Você pratica AI Agents com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar AI Agents?

Nenhuma experiência prévia é necessária. AI Agents no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Registrando chamadas de ferramentas e entradas/saídas”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de AI Agents?

Sim. Cada aula de AI Agents inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Por que o rastreamento é necessário para agentes
  2. Registrando chamadas de ferramentas e entradas/saídas
  3. Latência e custo por etapa
  4. Visualizando execuções de agentes (Langfuse, LangSmith)
← Voltar para AI Agents