ScavioScavio
产品定价文档
登录开始使用
  1. 首页
  2. 教程
  3. 如何利用多平台搜索数据奠定本地法学硕士的基础
教程

如何利用多平台搜索数据奠定本地法学硕士的基础

将 Google、Reddit 和 YouTube 数据输入 Ollama 或 llama.cpp,通过实时多平台环境提供本地 LLM 答案。分步指南。

获取免费API密钥API文档

Llama 3 和 Mistral 等本地法学硕士无需将数据发送到云端即可运行,但缺乏实时知识。通过多平台搜索数据为它们提供基础可以解决这个问题:您的法学硕士可以获取 Google 结果以获取事实答案、Reddit 帖子以获取社区意见,以及 YouTube 元数据以获取视频上下文。 Scavio 通过一个 POST 端点提供所有三个平台,每个请求 0.005 美元。本教程构建了一个基础层,可根据意图将查询路由到正确的平台。

前置条件

  • Ollama 或 llama.cpp 在本地运行
  • 已安装 Python 3.9+
  • 请求已安装库
  • 来自 scavio.dev 的 Scavio API 密钥

操作指南

步骤 1: 设置特定于平台的搜索功能

为 Google、Reddit 和 YouTube 创建搜索功能。每个都将结果标准化为具有特定于平台的元数据的通用格式。

Python
import os, requests

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
URL = 'https://api.scavio.dev/api/v1/search'
H = {'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'}

def search_google(query: str, num: int = 5) -> list:
    resp = requests.post(URL, headers=H,
        json={'query': query, 'country_code': 'us', 'num_results': num})
    return [{'source': 'google', 'title': r['title'], 'snippet': r.get('snippet', ''),
             'url': r['link']} for r in resp.json().get('organic_results', [])]

def search_reddit(query: str, num: int = 5) -> list:
    resp = requests.post(URL, headers=H,
        json={'query': f'site:reddit.com {query}', 'country_code': 'us', 'num_results': num})
    return [{'source': 'reddit', 'title': r['title'], 'snippet': r.get('snippet', ''),
             'url': r['link']} for r in resp.json().get('organic_results', [])]

def search_youtube(query: str, num: int = 3) -> list:
    resp = requests.post(URL, headers=H,
        json={'query': f'site:youtube.com {query}', 'country_code': 'us', 'num_results': num})
    return [{'source': 'youtube', 'title': r['title'].replace(' - YouTube', ''),
             'snippet': r.get('snippet', ''), 'url': r['link']}
            for r in resp.json().get('organic_results', [])]

print('Multi-platform search ready')

步骤 2: 构建意图路由器

按意图对查询进行分类,以选择要搜索的平台。谷歌上出现了事实问题,Reddit 上出现了意见问题,YouTube 上出现了操作方法查询。

Python
def classify_intent(query: str) -> list[str]:
    q = query.lower()
    platforms = []
    # Always include Google for factual grounding
    platforms.append('google')
    # Opinion and discussion queries -> Reddit
    opinion_words = ['best', 'worst', 'recommend', 'opinion', 'experience',
                     'worth it', 'vs', 'alternative', 'should i']
    if any(w in q for w in opinion_words):
        platforms.append('reddit')
    # Tutorial and how-to queries -> YouTube
    howto_words = ['how to', 'tutorial', 'guide', 'setup', 'install',
                   'configure', 'build', 'demo', 'walkthrough']
    if any(w in q for w in howto_words):
        platforms.append('youtube')
    return platforms

# Test intent classification
for q in ['what is the capital of France',
          'best laptop for programming 2026',
          'how to deploy fastapi on railway']:
    print(f'{q} -> {classify_intent(q)}')

步骤 3: 创建多平台上下文构建器

从所有相关平台收集结果并将其格式化为 LLM 背景。每个来源都有明确的标签,因此法学硕士可以在其答案中引用平台。

Python
import time

def build_context(query: str) -> str:
    platforms = classify_intent(query)
    all_results = []
    for p in platforms:
        if p == 'google':
            all_results.extend(search_google(query))
        elif p == 'reddit':
            all_results.extend(search_reddit(query))
        elif p == 'youtube':
            all_results.extend(search_youtube(query))
        time.sleep(0.2)
    # Format for LLM consumption
    lines = [f'Search results for: {query}', f'Platforms searched: {", ".join(platforms)}', '']
    for i, r in enumerate(all_results, 1):
        lines.append(f'[{i}] ({r["source"].upper()}) {r["title"]}')
        if r['snippet']:
            lines.append(f'    {r["snippet"][:200]}')
        lines.append(f'    URL: {r["url"]}')
        lines.append('')
    context = '\n'.join(lines)
    print(f'Built context: {len(all_results)} results from {len(platforms)} platforms')
    return context

ctx = build_context('best python web framework 2026')
print(ctx[:500])

步骤 4: 连接到本地 LLM

将搜索上下文和用户问题发送给 Ollama。系统提示指示法学硕士仅从搜索结果中回答并按编号和平台引用来源。

Python
LLM_URL = 'http://localhost:11434/v1/chat/completions'

def ask_local_llm(context: str, question: str) -> str:
    messages = [
        {'role': 'system', 'content': (
            'You are a helpful assistant. Answer based on the search results provided. '
            'Cite sources as [1], [2] etc. Mention which platform (Google, Reddit, YouTube) '
            'the information comes from. If results are insufficient, say so.'
        )},
        {'role': 'user', 'content': f'{context}\n\nQuestion: {question}'}
    ]
    resp = requests.post(LLM_URL, json={
        'model': 'llama3', 'messages': messages, 'max_tokens': 512
    })
    return resp.json()['choices'][0]['message']['content']

def grounded_answer(question: str) -> dict:
    context = build_context(question)
    answer = ask_local_llm(context, question)
    platforms = classify_intent(question)
    return {'question': question, 'answer': answer,
            'platforms': platforms, 'cost': len(platforms) * 0.005}

result = grounded_answer('best python web framework 2026')
print(f'Q: {result["question"]}')
print(f'A: {result["answer"]}')
print(f'Platforms: {result["platforms"]}, Cost: ${result["cost"]}')

Python 示例

Python
import os, requests, time

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
URL = 'https://api.scavio.dev/api/v1/search'
H = {'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'}
LLM = 'http://localhost:11434/v1/chat/completions'

def multi_search(query):
    results = []
    for prefix in ['', 'site:reddit.com ', 'site:youtube.com ']:
        resp = requests.post(URL, headers=H,
            json={'query': f'{prefix}{query}', 'country_code': 'us', 'num_results': 3})
        results.extend(resp.json().get('organic_results', []))
        time.sleep(0.2)
    return results

def grounded_ask(question):
    results = multi_search(question)
    ctx = '\n'.join(f'[{i+1}] {r["title"]}: {r.get("snippet","")}' for i, r in enumerate(results))
    resp = requests.post(LLM, json={'model': 'llama3', 'messages': [
        {'role': 'system', 'content': 'Answer from search results. Cite [1],[2] etc.'},
        {'role': 'user', 'content': f'{ctx}\n\nQ: {question}'}], 'max_tokens': 512})
    return resp.json()['choices'][0]['message']['content']

print(grounded_ask('best python framework for APIs 2026'))

JavaScript 示例

JavaScript
const SCAVIO_KEY = process.env.SCAVIO_API_KEY;
const URL = 'https://api.scavio.dev/api/v1/search';

async function multiSearch(query) {
  const results = [];
  for (const prefix of ['', 'site:reddit.com ', 'site:youtube.com ']) {
    const resp = await fetch(URL, {
      method: 'POST',
      headers: { 'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json' },
      body: JSON.stringify({ query: `${prefix}${query}`, country_code: 'us', num_results: 3 })
    });
    results.push(...((await resp.json()).organic_results || []));
  }
  return results;
}

async function groundedAsk(question) {
  const results = await multiSearch(question);
  const ctx = results.map((r, i) => `[${i+1}] ${r.title}: ${r.snippet || ''}`).join('\n');
  const resp = await fetch('http://localhost:11434/v1/chat/completions', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ model: 'llama3', messages: [
      { role: 'system', content: 'Answer from search results. Cite [1],[2].' },
      { role: 'user', content: `${ctx}\n\nQ: ${question}` }], max_tokens: 512 })
  });
  return (await resp.json()).choices[0].message.content;
}

groundedAsk('best python framework for APIs 2026').then(console.log);

预期输出

JSON
Built context: 9 results from 3 platforms

Q: best python web framework 2026
A: Based on the search results across multiple platforms:

Google sources indicate FastAPI and Django remain the top choices [1][2].
Reddit discussions show strong community preference for FastAPI for new
API projects [4][5]. YouTube tutorials are heavily focused on FastAPI
deployment [7][8].

Platforms: ['google', 'reddit', 'youtube'], Cost: $0.015

相关教程

  • 如何向 Ollama 个人助理添加搜索
  • 如何利用本地法学硕士和搜索建立个人知识库
  • 2026年浪链RAG管道如何增加搜索落地
  • 如何使用 LangChain 和 Scavio 构建 RAG 代理

常见问题

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

Ollama 或 llama.cpp 在本地运行. 已安装 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年本地LLM最佳网络搜索API

Read more
Solution

Google收费墙后的本地LLM搜索方案

Read more
Glossary

免费搜索API层级对比

Read more
Comparison

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

Read more

开始构建

将 Google、Reddit 和 YouTube 数据输入 Ollama 或 llama.cpp,通过实时多平台环境提供本地 LLM 答案。分步指南。

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

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

产品

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

开发者

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

替代方案

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

工具

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

© 2026 Scavio. 保留所有权利。

Featured on TAAFT
服务条款隐私政策