ScavioScavio
产品定价文档
登录开始使用
  1. 首页
  2. 教程
  3. 如何向深度研究代理添加搜索
教程

如何向深度研究代理添加搜索

将多平台搜索连接到深度研究代理的搜索-读取-计算循环中。带有预算控制的 Python 实现。

获取免费API密钥API文档

深度研究代理迭代搜索-读取-计算循环:查询主题,从结果中提取数据,对结果进行推理,然后使用精确的查询再次搜索。搜索步骤的质量决定了智能体的分析是基于真实数据还是幻觉。本教程将多平台搜索连接到研究代理中,在每次迭代中以每次查询 0.005 美元的价格为其提供 Google、Reddit 和 YouTube。

前置条件

  • Python 3.10+
  • 请求已安装库
  • 来自 scavio.dev 的 Scavio API 密钥
  • 用于推理的 OpenAI API 密钥

操作指南

步骤 1: 构建多平台搜索功能

创建一个查询多个平台并合并 LLM 结果的搜索。

Python
import os, requests, json

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
OPENAI_KEY = os.environ['OPENAI_API_KEY']
SH = {'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'}

def multi_search(query, platforms=None):
    if platforms is None: platforms = ['google', 'reddit']
    all_results = []
    for platform in platforms:
        resp = requests.post('https://api.scavio.dev/api/v1/search',
            headers=SH, json={'query': query, 'platform': platform, 'country_code': 'us'})
        for r in resp.json().get('organic_results', [])[:3]:
            all_results.append({'platform': platform, 'title': r.get('title', ''),
                'snippet': r.get('snippet', ''), 'url': r.get('link', '')})
    return all_results

def format_context(results):
    return '\n\n'.join(f"[{r['platform'].upper()}] {r['title']}\n{r['snippet']}" for r in results)

步骤 2: 实施研究循环

代理决定搜索内容、分析结果并确定是否继续或生成输出。

Python
def llm_call(system, user):
    resp = requests.post('https://api.openai.com/v1/chat/completions',
        headers={'Authorization': f'Bearer {OPENAI_KEY}', 'Content-Type': 'application/json'},
        json={'model': 'gpt-4o', 'temperature': 0,
            'messages': [{'role': 'system', 'content': system}, {'role': 'user', 'content': user}]})
    return resp.json()['choices'][0]['message']['content']

def research_loop(topic, max_iterations=5):
    findings = []
    search_count = 0
    for i in range(max_iterations):
        plan = json.loads(llm_call('Return JSON only.',
            f'Topic: {topic}\nFindings: {json.dumps(findings[-3:])}\n'
            f'Return: {{"query": "...", "platforms": [...], "done": bool}}'))
        if plan.get('done'): break
        results = multi_search(plan['query'], plan.get('platforms', ['google']))
        search_count += len(plan.get('platforms', ['google']))
        analysis = llm_call('Extract key facts.', f'Results:\n{format_context(results)}')
        findings.append({'query': plan['query'], 'analysis': analysis})
        print(f'  [{i+1}] "{plan["query"]}" -> {len(results)} results')
    return findings, search_count

步骤 3: 生成最终报告

将所有发现综合成一份带有引文的结构化报告。

Python
def generate_report(topic, findings, search_count):
    text = '\n'.join(f"Query: {f['query']}\n{f['analysis']}" for f in findings)
    report = llm_call('Write a structured report with key findings.', f'Topic: {topic}\n\n{text}')
    print(f'\n{report[:500]}')
    print(f'\nSearches: {search_count}, Cost: ${search_count * 0.005:.3f}')
    return report

findings, count = research_loop('SERP API trends 2026')
generate_report('SERP API trends 2026', findings, count)

步骤 4: 添加预算控制

通过严格的预算上限来防止成本失控。

Python
def research_with_budget(topic, max_budget=0.50, max_iter=10):
    findings, total_cost = [], 0.0
    for i in range(max_iter):
        remaining = int((max_budget - total_cost) / 0.005)
        if remaining < 1:
            print(f'  Budget exhausted at ${total_cost:.3f}')
            break
        plan = json.loads(llm_call('Return JSON only.',
            f'Topic: {topic}\nFindings: {json.dumps(findings[-3:])}\n'
            f'Budget: {remaining} searches left\n'
            f'Return: {{"query": "...", "platforms": [...], "done": bool}}'))
        if plan.get('done'): break
        platforms = plan.get('platforms', ['google'])[:remaining]
        results = multi_search(plan['query'], platforms)
        total_cost += len(platforms) * 0.005
        analysis = llm_call('Extract key facts.', f'Results:\n{format_context(results)}')
        findings.append({'query': plan['query'], 'analysis': analysis})
        print(f'  [{i+1}] ${total_cost:.3f} spent')
    return findings, total_cost

research_with_budget('search API comparison', max_budget=0.25)

Python 示例

Python
import os, requests, json

SK = os.environ['SCAVIO_API_KEY']
SH = {'x-api-key': SK, 'Content-Type': 'application/json'}

def search(query, platform='google'):
    data = requests.post('https://api.scavio.dev/api/v1/search',
        headers=SH, json={'query': query, 'platform': platform, 'country_code': 'us'}).json()
    return [{'title': r['title'], 'snippet': r.get('snippet', '')}
            for r in data.get('organic_results', [])[:3]]

def research(topic, queries):
    for q in queries:
        g = search(q)
        r = search(q, 'reddit')
        print(f'"{q}": {len(g)} Google + {len(r)} Reddit')
    print(f'Cost: ${len(queries) * 2 * 0.005:.3f}')

research('AI search', ['best search api agents 2026', 'tavily alternatives reddit'])

JavaScript 示例

JavaScript
const SK = process.env.SCAVIO_API_KEY;
const SH = { 'x-api-key': SK, 'Content-Type': 'application/json' };

async function search(query, platform = 'google') {
  const data = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST', headers: SH,
    body: JSON.stringify({ query, platform, country_code: 'us' })
  }).then(r => r.json());
  return (data.organic_results || []).slice(0, 3);
}

async function research(queries) {
  for (const q of queries) {
    const g = await search(q);
    const r = await search(q, 'reddit');
    console.log(`"${q}": ${g.length}G + ${r.length}R`);
  }
  console.log(`Cost: $${(queries.length * 2 * 0.005).toFixed(3)}`);
}
research(['best search api 2026', 'tavily alternatives']).catch(console.error);

预期输出

JSON
  [1] "AI agent search API comparison 2026" -> 6 results
  [2] "tavily vs scavio vs exa agents" -> 3 results
  [3] "self-hosted search SearXNG agents" -> 6 results
  [4] Research complete.

Searches: 5, Cost: $0.025

相关教程

  • 如何将 LangChain 中的 Tavily 替换为 Scavio
  • 如何优化人工智能代理的搜索预算
  • 如何使用 LangChain 和 Scavio 构建 RAG 代理

常见问题

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

Python 3.10+. 请求已安装库. 来自 scavio.dev 的 Scavio API 密钥. 用于推理的 OpenAI 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

开始构建

将多平台搜索连接到深度研究代理的搜索-读取-计算循环中。带有预算控制的 Python 实现。

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

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

产品

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

开发者

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

替代方案

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

工具

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

© 2026 Scavio. 保留所有权利。

Featured on TAAFT
服务条款隐私政策