Audite el uso del token del agente por herramienta envolviendo cada llamada de herramienta con una medición del tamaño de entrada/salida y registrando los resultados en una tienda estructurada. Las herramientas de búsqueda suelen ser los mayores consumidores de tokens en los flujos de trabajo de los agentes porque devuelven metadatos y fragmentos de HTML detallados. Saber exactamente cuántos tokens aporta cada llamada de búsqueda de Scavio le ayuda a establecer presupuestos, eliminar campos innecesarios y reducir costos. Este tutorial crea una capa de auditoría liviana que se ubica entre su agente y sus herramientas.
Requisitos previos
- Python 3.8+ instalado
- solicita biblioteca instalada
- Una clave API de Scavio de scavio.dev
- biblioteca tiktoken instalada (pip install tiktoken)
Guia paso a paso
Paso 1: Configurar el contador de tokens
Utilice tiktoken para contar tokens en la entrada (consulta) y la salida (resultados) de la herramienta para cada llamada a la API.
import tiktoken, os, requests, json, time
API_KEY = os.environ['SCAVIO_API_KEY']
enc = tiktoken.get_encoding('cl100k_base')
def count_tokens(text: str) -> int:
return len(enc.encode(text))
audit_log = []Paso 2: Envuelva la llamada de búsqueda con auditoría
Cree una función de búsqueda auditada que mida los tokens antes y después de cada llamada y agregue el resultado al registro de auditoría.
def audited_search(query: str, platform: str = 'google') -> dict:
input_tokens = count_tokens(json.dumps({'platform': platform, 'query': query}))
start = time.monotonic()
resp = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'platform': platform, 'query': query}, timeout=15)
latency_ms = round((time.monotonic() - start) * 1000)
data = resp.json()
output_text = json.dumps(data)
output_tokens = count_tokens(output_text)
audit_log.append({
'tool': 'search', 'platform': platform, 'query': query,
'input_tokens': input_tokens, 'output_tokens': output_tokens,
'total_tokens': input_tokens + output_tokens, 'latency_ms': latency_ms,
'timestamp': time.time(),
})
return dataPaso 3: Ejecute varias consultas y recopile datos
Ejecute un lote de consultas representativas para crear el registro de auditoría con datos de uso reales.
test_queries = [
('best crm for startups 2026', 'google'),
('wireless earbuds under 50', 'amazon'),
('python async tutorial', 'youtube'),
('is scavio api good', 'reddit'),
]
for query, platform in test_queries:
audited_search(query, platform)
time.sleep(0.5)
print(f'Collected {len(audit_log)} audit records')Paso 4: Generar el informe de uso
Agregue el registro de auditoría para mostrar el total de tokens por herramienta, el promedio de tokens por llamada e identificar las consultas más costosas.
def generate_report(log: list) -> None:
total = sum(e['total_tokens'] for e in log)
print(f'Total token usage: {total:,}')
print(f'Average per call: {total // max(len(log), 1):,}')
print(f'\nPer-platform breakdown:')
platforms = {}
for e in log:
p = e['platform']
platforms[p] = platforms.get(p, 0) + e['total_tokens']
for p, tokens in sorted(platforms.items(), key=lambda x: -x[1]):
print(f' {p}: {tokens:,} tokens ({len([e for e in log if e["platform"] == p])} calls)')
print(f'\nMost expensive query:')
top = max(log, key=lambda x: x['total_tokens'])
print(f' "{top["query"]}" on {top["platform"]}: {top["total_tokens"]:,} tokens')
generate_report(audit_log)Ejemplo en Python
import tiktoken, requests, os, json, time
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
enc = tiktoken.get_encoding('cl100k_base')
def audited_search(query, platform='google'):
data = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': platform, 'query': query}).json()
tokens = len(enc.encode(json.dumps(data)))
print(f'{platform}:{query} -> {tokens} tokens')
return data
audited_search('best crm 2026')
audited_search('wireless earbuds', 'amazon')Ejemplo en JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function auditedSearch(query, platform = 'google') {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H, body: JSON.stringify({platform, query})
});
const data = await r.json();
const chars = JSON.stringify(data).length;
console.log(`${platform}:${query} -> ~${Math.ceil(chars / 4)} tokens`);
return data;
}
await auditedSearch('best crm 2026');Salida esperada
A token usage report showing total tokens consumed per platform, average tokens per API call, and the most expensive individual query.