El problema
Los agentes de IA con herramientas de búsqueda web pueden aumentar los costos rápidamente. Un bucle de agente mal restringido podría ejecutar 500 consultas de búsqueda para responder una sola pregunta, con un costo de $2,50 a $0,005/consulta. Sin barreras presupuestarias, los agentes en producción pueden generar facturas de API inesperadas. La mayoría de las API de búsqueda no proporcionan controles de presupuesto por sesión o por tarea, lo que deja a los equipos crear su propio seguimiento y cumplimiento del uso.
La solucion de Scavio
Envuelva las llamadas a la API Scavio en una función consciente del presupuesto que rastrea el costo acumulado por sesión del agente y se niega a ejecutar búsquedas una vez que se agota el presupuesto. Establezca presupuestos por tarea (por ejemplo, $0,50 como máximo por consulta de usuario) y presupuestos por día. El contenedor devuelve un error claro cuando se alcanza el presupuesto, lo que permite al agente recurrir con gracia a sus datos de entrenamiento en lugar de fallar silenciosamente.
Antes
Antes de las barreras de seguridad, una sesión de agente de producción ejecutaba accidentalmente 2000 consultas de búsqueda en un bucle, lo que costaba 10 dólares por una sola pregunta de usuario. El equipo sólo lo descubrió cuando la factura mensual fue inesperadamente alta.
Después
Después de agregar barreras presupuestarias, los costos por sesión tienen un límite de $0,50. Los bucles fuera de control alcanzan el límite del presupuesto y devuelven un mensaje claro. Los costos mensuales se volvieron predecibles y controlables.
Para quien es
Ingenieros de inteligencia artificial que ejecutan agentes en producción que necesitan controles de costos en el uso de API de búsqueda. Equipos de plataforma que crean infraestructura de agentes donde se requieren presupuestos por usuario o por sesión.
Beneficios clave
- Los límites presupuestarios por sesión y por día evitan costos descontrolados
- Un mensaje de error claro cuando se agota el presupuesto permite un retroceso elegante
- El seguimiento de costos por tarea permite el análisis de uso y la atribución de facturación
- Funciona con cualquier marco de agente o patrones simples de llamada de funciones
- A $0,005/consulta, un presupuesto de sesión de $0,50 permite 100 búsquedas por tarea
Ejemplo en Python
import requests
from dataclasses import dataclass, field
API_KEY = "your_scavio_api_key"
COST_PER_QUERY = 0.005
@dataclass
class BudgetTracker:
max_budget: float = 0.50
spent: float = 0.0
queries: int = 0
def can_search(self) -> bool:
return self.spent + COST_PER_QUERY <= self.max_budget
def record(self):
self.spent += COST_PER_QUERY
self.queries += 1
def budget_search(query: str, budget: BudgetTracker, platform: str = "google") -> dict:
if not budget.can_search():
return {"error": "budget_exhausted", "spent": budget.spent, "queries": budget.queries}
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": platform, "query": query},
timeout=15,
)
res.raise_for_status()
budget.record()
return {"results": [r.get("title", "") for r in res.json().get("organic", [])[:5]], "spent": budget.spent, "remaining": budget.max_budget - budget.spent}
budget = BudgetTracker(max_budget=0.10)
for i in range(25):
result = budget_search(f"query {i}", budget)
if "error" in result:
print(f"Budget exhausted after {budget.queries} queries (${budget.spent:.3f})")
break
print(f"Query {i}: ${budget.spent:.3f} spent, ${result['remaining']:.3f} remaining")Ejemplo en JavaScript
const API_KEY = "your_scavio_api_key";
const COST = 0.005;
class BudgetTracker {
constructor(max = 0.50) { this.max = max; this.spent = 0; this.queries = 0; }
canSearch() { return this.spent + COST <= this.max; }
record() { this.spent += COST; this.queries++; }
}
async function budgetSearch(query, budget, platform = "google") {
if (!budget.canSearch()) return { error: "budget_exhausted", spent: budget.spent };
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify({ platform, query }),
});
if (!res.ok) throw new Error(`scavio ${res.status}`);
budget.record();
return { results: ((await res.json()).organic ?? []).slice(0, 5).length, remaining: budget.max - budget.spent };
}
const budget = new BudgetTracker(0.10);
for (let i = 0; i < 25; i++) {
const r = await budgetSearch(`query ${i}`, budget);
if (r.error) { console.log(`Budget exhausted after ${budget.queries} queries ($${budget.spent.toFixed(3)})`); break; }
console.log(`Query ${i}: $${budget.spent.toFixed(3)} spent`);
}Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA
Comunidad, publicaciones y comentarios en hilos de cualquier subreddit