ScavioScavio
产品定价文档
登录开始使用
  1. 首页
  2. 教程
  3. 如何为搜索结果构建代理上下文桥
教程

如何为搜索结果构建代理上下文桥

将搜索结果序列化为结构化 JSON,以用于多步骤代理工作流程。通过智能结果压缩优化上下文窗口的使用。

获取免费API密钥API文档

多步骤代理工作流程在步骤之间传递搜索结果,但原始 API 响应会在不相关的字段上浪费上下文窗口令牌。上下文桥将搜索结果序列化为每个代理步骤所需的最小结构化 JSON,从而将令牌使用量减少 60-80%,同时保留重要数据。本教程构建了一个桥梁,可以压缩和格式化搜索结果以供代理使用。

前置条件

  • Python 3.8+
  • 请求库
  • 来自 scavio.dev 的 Scavio API 密钥
  • 代理框架(LangChain、CrewAI 或自定义)

操作指南

步骤 1: 定义上下文压缩策略

为不同的代理上下文窗口大小创建压缩级别。

Python
import os, requests, json

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

def compress_results(results, level='medium'):
    """Compress search results for agent context windows."""
    if level == 'minimal':
        # ~20 tokens per result (for 4K context models)
        return [{'t': r.get('title', '')[:40], 'u': r.get('link', '').split('/')[2] if r.get('link') else ''}
                for r in results[:3]]
    elif level == 'medium':
        # ~60 tokens per result (for 8K-16K context)
        return [{'title': r.get('title', '')[:60], 'domain': r.get('link', '').split('/')[2] if r.get('link') else '',
                 'snippet': r.get('snippet', '')[:100]} for r in results[:5]]
    else:  # full
        # ~120 tokens per result (for 32K+ context)
        return [{'title': r.get('title', ''), 'link': r.get('link', ''),
                 'snippet': r.get('snippet', ''), 'position': r.get('position', 0)}
                for r in results[:10]]

data = requests.post('https://api.scavio.dev/api/v1/search',
    headers=SH, json={'query': 'best serp api 2026', 'country_code': 'us'}).json()
results = data.get('organic_results', [])
for level in ['minimal', 'medium', 'full']:
    compressed = compress_results(results, level)
    tokens_est = len(json.dumps(compressed)) // 4
    print(f'{level:8}: {len(compressed)} results, ~{tokens_est} tokens')

步骤 2: 构建上下文桥类

创建一个桥来管理跨代理步骤的搜索上下文。

Python
class ContextBridge:
    def __init__(self, max_tokens=4000):
        self.max_tokens = max_tokens
        self.context = []
        self.token_count = 0
        self.searches = 0
        self.cost = 0.0

    def search(self, query, platform=None):
        body = {'query': query, 'country_code': 'us'}
        if platform: body['platform'] = platform
        data = requests.post('https://api.scavio.dev/api/v1/search',
            headers=SH, json=body).json()
        self.searches += 1
        self.cost += 0.005
        results = data.get('organic_results', [])
        # Auto-select compression based on remaining budget
        remaining = self.max_tokens - self.token_count
        if remaining < 500: level = 'minimal'
        elif remaining < 2000: level = 'medium'
        else: level = 'full'
        compressed = compress_results(results, level)
        entry = {'query': query, 'platform': platform or 'google',
                 'results': compressed, 'level': level}
        tokens = len(json.dumps(entry)) // 4
        self.context.append(entry)
        self.token_count += tokens
        return entry

    def get_context(self):
        return json.dumps(self.context, indent=None)

    def stats(self):
        return f'{self.searches} searches, ~{self.token_count} tokens, ${self.cost:.3f}'

bridge = ContextBridge(max_tokens=4000)
bridge.search('best serp api 2026')
bridge.search('serp api user reviews', platform='reddit')
print(f'Stats: {bridge.stats()}')

步骤 3: 添加SERP特征提取

提取人工智能概述和代理上下文的特色片段数据。

Python
def extract_features(data):
    """Extract SERP features into agent-friendly format."""
    features = {}
    if data.get('ai_overview'):
        ao = data['ai_overview']
        features['ai_overview'] = {
            'present': True,
            'text': json.dumps(ao)[:200] if isinstance(ao, dict) else str(ao)[:200]
        }
    if data.get('answer_box'):
        ab = data['answer_box']
        features['answer_box'] = {
            'title': ab.get('title', '')[:60],
            'answer': ab.get('answer', ab.get('snippet', ''))[:150]
        }
    paa = data.get('related_questions', [])
    if paa:
        features['people_also_ask'] = [q.get('question', '')[:80] for q in paa[:4]]
    return features

def search_with_features(query):
    data = requests.post('https://api.scavio.dev/api/v1/search',
        headers=SH, json={'query': query, 'country_code': 'us', 'include_ai_overview': True}).json()
    results = compress_results(data.get('organic_results', []), 'medium')
    features = extract_features(data)
    return {'query': query, 'results': results, 'features': features}

context = search_with_features('best python framework 2026')
print(json.dumps(context, indent=2)[:500])

步骤 4: 序列化多步骤工作流程的上下文

格式化累积的上下文以便在代理步骤之间进行切换。

Python
def format_for_agent(bridge, task_description):
    """Format accumulated search context for the next agent step."""
    context_str = bridge.get_context()
    prompt = f"""Based on the following search results gathered across {bridge.searches} searches:

{context_str}

Task: {task_description}

Provide your analysis based solely on the search data above. Note any gaps."""
    token_est = len(prompt) // 4
    print(f'Context prompt: ~{token_est} tokens ({bridge.stats()})')
    return prompt

# Example multi-step workflow
bridge = ContextBridge(max_tokens=6000)
bridge.search('serp api pricing comparison 2026')
bridge.search('serp api developer reviews', platform='reddit')
bridge.search('serp api python tutorial', platform='youtube')

prompt = format_for_agent(bridge,
    'Compare the top 3 SERP APIs by pricing, developer experience, and community sentiment.')
print(f'\nPrompt preview:\n{prompt[:300]}...')
print(f'\nTotal search cost: ${bridge.cost:.3f}')

Python 示例

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

def bridge_search(query, max_results=3):
    data = requests.post('https://api.scavio.dev/api/v1/search',
        headers=SH, json={'query': query, 'country_code': 'us'}).json()
    compressed = [{'title': r['title'][:50], 'snippet': r.get('snippet', '')[:80]}
                  for r in data.get('organic_results', [])[:max_results]]
    tokens = len(json.dumps(compressed)) // 4
    print(f'{query}: {len(compressed)} results, ~{tokens} tokens. Cost: $0.005')
    return compressed

bridge_search('best serp api 2026')

JavaScript 示例

JavaScript
const SH = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
async function bridgeSearch(query, maxResults = 3) {
  const data = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST', headers: SH,
    body: JSON.stringify({ query, country_code: 'us' })
  }).then(r => r.json());
  const compressed = (data.organic_results || []).slice(0, maxResults)
    .map(r => ({ title: r.title.slice(0, 50), snippet: (r.snippet || '').slice(0, 80) }));
  const tokens = Math.ceil(JSON.stringify(compressed).length / 4);
  console.log(`${query}: ${compressed.length} results, ~${tokens} tokens`);
  return compressed;
}
await bridgeSearch('best serp api 2026');

预期输出

JSON
minimal :  3 results, ~45 tokens
medium  :  5 results, ~190 tokens
full    : 10 results, ~520 tokens

Stats: 2 searches, ~380 tokens, $0.010

Context prompt: ~450 tokens (3 searches, ~520 tokens, $0.015)

Prompt preview:
Based on the following search results gathered across 3 searches:
[{"query": "serp api pricing comparison 2026", "platform": "google", "results": [...

Total search cost: $0.015

相关教程

  • 如何构建具有预算控制的 LangGraph 搜索代理
  • 如何为 CrewAI 创建 Scavio 搜索工具
  • 如何为代理即服务构建搜索层

常见问题

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

Python 3.8+. 请求库. 来自 scavio.dev 的 Scavio API 密钥. 代理框架(LangChain、CrewAI 或自定义). Scavio API密钥注册即送50个免费积分。

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

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

相关资源

Best Of

2026 年最佳 AI 生产力应用程序

Read more
Best Of

2026年最佳SerpAPI替代方案

Read more
Glossary

搜索 API 供应商格局(2026)

Read more
Glossary

搜索付费墙时代(2026)

Read more
Use Case

2026 开源 AI 网络访问方案

Read more
Comparison

DataForSEO vs Serper

Read more

开始构建

将搜索结果序列化为结构化 JSON,以用于多步骤代理工作流程。通过智能结果压缩优化上下文窗口的使用。

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

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

产品

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

开发者

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

替代方案

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

工具

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

© 2026 Scavio. 保留所有权利。

Featured on TAAFT
服务条款隐私政策