ScavioScavio
产品定价文档
登录开始使用
  1. 首页
  2. 教程
  3. 如何跟踪多个代理的搜索 API 成本
教程

如何跟踪多个代理的搜索 API 成本

为跨多个 AI 代理的搜索 API 使用情况构建成本跟踪仪表板。监控支出、设置警报并优化每个代理的预算。

获取免费API密钥API文档

当多个 AI 代理共享搜索 API 密钥时,成本可能会急剧上升,而无法了解哪个代理花费了什么。本教程构建了一个集中式成本跟踪器,用代理 ID 标记每个搜索呼叫,按代理和时间段聚合支出,并在任何代理超出其预算时发出警报。可与任何规模的任何搜索提供商合作。

前置条件

  • 已安装 Python 3.9+
  • 请求已安装库
  • 来自 scavio.dev 的 Scavio API 密钥

操作指南

步骤 1: 构建集中式成本跟踪器

创建一个跟踪器,拦截所有搜索呼叫,用代理 ID 标记它们,并记录成本数据。

Python
import time, json
from datetime import datetime, timedelta
from collections import defaultdict
from typing import Dict, List

class AgentCostTracker:
    def __init__(self):
        self.records: List[dict] = []
        self.budgets: Dict[str, float] = {}
        self.alerts: List[str] = []

    def set_budget(self, agent_id: str, monthly_budget: float):
        self.budgets[agent_id] = monthly_budget

    def record(self, agent_id: str, cost: float, query: str, provider: str = 'scavio'):
        self.records.append({
            'agent_id': agent_id,
            'cost': cost,
            'query': query[:100],
            'provider': provider,
            'timestamp': datetime.now().isoformat()
        })
        # Check budget
        monthly_spend = self.get_monthly_spend(agent_id)
        budget = self.budgets.get(agent_id, float('inf'))
        if monthly_spend > budget * 0.8:
            alert = f'Agent {agent_id}: {monthly_spend/budget*100:.0f}% of budget used'
            if alert not in self.alerts:
                self.alerts.append(alert)
                print(f'ALERT: {alert}')

    def get_monthly_spend(self, agent_id: str) -> float:
        month_start = datetime.now().replace(day=1, hour=0, minute=0, second=0)
        return sum(r['cost'] for r in self.records
                   if r['agent_id'] == agent_id and r['timestamp'] >= month_start.isoformat())

tracker = AgentCostTracker()
tracker.set_budget('research-bot', 5.00)
tracker.set_budget('lead-gen-bot', 10.00)
tracker.set_budget('monitor-bot', 2.00)
print('Cost tracker initialized with 3 agent budgets')

步骤 2: 为每个代理创建跟踪搜索功能

使用自动成本跟踪包装搜索 API 调用。每个代理都有自己的搜索功能来记录使用情况。

Python
import requests, os

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
COST_PER_QUERY = 0.005

def make_tracked_search(agent_id: str, tracker: AgentCostTracker):
    def search(query: str, count: int = 10) -> list:
        resp = requests.post('https://api.scavio.dev/api/v1/search',
            headers={'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'},
            json={'query': query, 'country_code': 'us', 'num_results': count})
        results = resp.json().get('organic_results', [])
        tracker.record(agent_id, COST_PER_QUERY, query)
        return [{'title': r['title'], 'link': r['link']}
                for r in results]
    return search

# Create per-agent search functions
research_search = make_tracked_search('research-bot', tracker)
lead_gen_search = make_tracked_search('lead-gen-bot', tracker)
monitor_search = make_tracked_search('monitor-bot', tracker)

# Simulate agent activity
research_search('python best practices 2026')
research_search('react server components guide')
lead_gen_search('plumber Austin TX')
lead_gen_search('electrician Denver CO')
lead_gen_search('HVAC contractor Portland OR')
monitor_search('scavio brand mentions')

print(f'Total records: {len(tracker.records)}')

步骤 3: 生成成本仪表板报告

构建一个仪表板,显示每个代理的支出、预算利用率和成本趋势。

Python
def dashboard(tracker: AgentCostTracker):
    print('\n' + '=' * 60)
    print('  Search API Cost Dashboard')
    print('=' * 60)
    agents = set(r['agent_id'] for r in tracker.records)
    total_cost = sum(r['cost'] for r in tracker.records)
    total_queries = len(tracker.records)
    print(f'\n  Total queries: {total_queries}')
    print(f'  Total cost: ${total_cost:.3f}')
    print(f'  Agents tracked: {len(agents)}')
    print(f'\n  {"Agent":<20} {"Queries":>8} {"Spent":>8} {"Budget":>8} {"Used":>6}')
    print('  ' + '-' * 54)
    for agent_id in sorted(agents):
        agent_records = [r for r in tracker.records if r['agent_id'] == agent_id]
        spent = sum(r['cost'] for r in agent_records)
        budget = tracker.budgets.get(agent_id, 0)
        pct = (spent / budget * 100) if budget > 0 else 0
        queries = len(agent_records)
        print(f'  {agent_id:<20} {queries:>8} ${spent:>6.3f} ${budget:>6.2f} {pct:>5.1f}%')
    if tracker.alerts:
        print(f'\n  Alerts:')
        for alert in tracker.alerts:
            print(f'    {alert}')
    print(f'\n  Avg cost/query: ${total_cost/total_queries:.4f}' if total_queries > 0 else '')
    print('=' * 60)

dashboard(tracker)

Python 示例

Python
import requests, os
from collections import defaultdict

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
spending = defaultdict(float)
counts = defaultdict(int)

def tracked_search(agent_id, query, cost=0.005):
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers={'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'},
        json={'query': query, 'country_code': 'us', 'num_results': 10})
    spending[agent_id] += cost
    counts[agent_id] += 1
    return resp.json().get('organic_results', [])

tracked_search('research-bot', 'python frameworks 2026')
tracked_search('lead-gen', 'plumber Austin TX')
tracked_search('lead-gen', 'electrician Denver CO')

for agent in spending:
    print(f'{agent}: {counts[agent]} queries, ${spending[agent]:.3f}')

JavaScript 示例

JavaScript
const SCAVIO_KEY = process.env.SCAVIO_API_KEY;
const spending = {};
const counts = {};

async function trackedSearch(agentId, query, cost = 0.005) {
  const resp = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST',
    headers: { 'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify({ query, country_code: 'us', num_results: 10 })
  });
  spending[agentId] = (spending[agentId] || 0) + cost;
  counts[agentId] = (counts[agentId] || 0) + 1;
  return (await resp.json()).organic_results || [];
}

await trackedSearch('research-bot', 'python frameworks 2026');
await trackedSearch('lead-gen', 'plumber Austin TX');
Object.keys(spending).forEach(a => console.log(`${a}: ${counts[a]} queries, $${spending[a].toFixed(3)}`));

预期输出

JSON
Cost tracker initialized with 3 agent budgets
Total records: 6

============================================================
  Search API Cost Dashboard
============================================================

  Total queries: 6
  Total cost: $0.030
  Agents tracked: 3

  Agent                Queries    Spent   Budget  Used
  ------------------------------------------------------
  lead-gen-bot               3  $ 0.015  $ 10.00   0.2%
  monitor-bot                1  $ 0.005  $  2.00   0.3%
  research-bot               2  $ 0.010  $  5.00   0.2%

  Avg cost/query: $0.0050
============================================================

相关教程

  • 如何计算每个代理搜索查询的实际成本
  • 如何为最便宜的搜索提供商构建成本路由器
  • 如何使用 USDC 支付层构建代理搜索

常见问题

大多数开发者在15到30分钟内完成本教程。您需要一个Scavio API密钥(免费套餐即可)和可用的Python或JavaScript环境。

已安装 Python 3.9+. 请求已安装库. 来自 scavio.dev 的 Scavio API 密钥. Scavio API密钥注册即送50个免费积分。

可以。免费套餐注册即送50个积分,完全足够完成本教程并构建一个可运行的原型解决方案。

Scavio提供原生LangChain包(langchain-scavio)、MCP服务器以及适用于任何HTTP客户端的REST API。本教程使用 the raw REST API, 但您可以根据需要适配您选择的框架。

相关资源

Best Of

Google I/O 2026 AI模式变化后最佳搜索API

Read more
Glossary

搜索 API 供应商格局(2026)

Read more
Best Of

2026 年最佳 SERP API 提供商按价格排名

Read more
Glossary

免费搜索API层级对比

Read more
Comparison

Search APIs (Scavio, Tavily, SerpAPI) vs Headless Browser (Playwright, Puppeteer, Browserbase)

Read more
Comparison

Google Places API vs SERP Local Pack API

Read more

开始构建

为跨多个 AI 代理的搜索 API 使用情况构建成本跟踪仪表板。监控支出、设置警报并优化每个代理的预算。

获取免费API密钥阅读文档
ScavioScavio

面向AI智能体的实时搜索API。搜索所有平台,不仅仅是Google。

产品

  • 功能
  • 定价
  • 控制台
  • 联盟计划

开发者

  • 文档
  • API参考
  • 快速开始
  • MCP集成
  • Python SDK

替代方案

  • Tavily替代方案
  • SerpAPI替代方案
  • Firecrawl替代方案
  • Exa替代方案

工具

  • JSON格式化
  • cURL转代码
  • Token计数器
  • 全部工具

© 2026 Scavio. 保留所有权利。

Featured on TAAFT
服务条款隐私政策