用 Sciverse 构建科研文献综述 Agent
AgentRAG进阶

用 Sciverse 构建科研文献综述 Agent

从一句研究问题出发,自动检索、摘要、生成带引用的文献综述

用户场景
科研人员或 AI Agent 需要针对一个研究问题,自动检索相关文献、提取关键证据段落,并生成一份带引用的文献综述。
预估调用量
~15–30 次 API 调用 / 一次综述任务
适用工具
agentic-searchcontent
调用链路
agentic-search→ doc_id + chunk + offset→ content→ evidence markdown

输入示例

用户在 Claude / Cursor 中提问:
"请帮我综述 2020–2024 年 Transformer 在蛋白质结构预测领域的应用进展,列出关键论文和核心贡献。"

输出示例

## 文献综述:Transformer 在蛋白质结构预测中的应用(2020–2024)

### 1. AlphaFold2 的突破
Jumper et al. (2021) 提出 AlphaFold2,利用 Evoformer 模块...
[来源: Nature, doc_id: af2_xxx, offset: 12480]

### 2. ESMFold 的端到端预测
Lin et al. (2023) 提出 ESMFold...
[来源: Science, doc_id: esm_yyy, offset: 8320]

---
共检索 12 篇核心文献,提取 28 个证据片段。

Agent Prompt 示例

你是一个科研文献综述 Agent。当用户提出研究问题时:
1. 调用 agentic-search(query=用户问题, top_k=20) 获取相关片段
2. 对每个高分片段,调用 content(doc_id=hit.doc_id, offset=hit.offset, limit=2000) 获取上下文
3. 整理为结构化综述,每个论点必须标注来源 [doc_id, offset]
4. 不要编造任何引用,所有信息必须来自 Sciverse 返回的真实数据

分步实现

Step 1: 环境准备

安装依赖并配置 API Token

# 安装所需 Python 包
!pip install httpx anthropic
# 设置环境变量(替换为你的真实 Token)
import os
os.environ["SCIVERSE_API_TOKEN"] = "sv-your-token-here"  # 替换为你的真实值
import os
os.environ["ANTHROPIC_API_KEY"] = "sk-ant-..."  # 替换为你的真实值

Step 2: 语义检索相关片段

使用 agentic-search 获取与研究问题最相关的文献片段

import os
import asyncio
import httpx

BASE = "https://api.sciverse.space"
TOKEN = os.environ["SCIVERSE_API_TOKEN"]
HEADERS = {"Authorization": f"Bearer {TOKEN}"}

async def search_literature(query: str, top_k: int = 20):
    async with httpx.AsyncClient(timeout=30) as client:
        resp = await client.post(
            f"{BASE}/agentic-search",
            headers=HEADERS,
            json={"query": query, "top_k": top_k}
        )
        resp.raise_for_status()
        return (resp.json().get("hits") or [])

async def main():
    hits = await search_literature(
        "Transformer applications in protein structure prediction 2020-2024"
    )
    print(f"Found {len(hits)} relevant chunks")
    for h in hits[:3]:
        print(f"  [{h['score']:.2f}] {h['title'][:60]}...")
    return hits

hits = await main()

Step 3: 读取原文上下文

对高分片段调用 content 接口获取更完整的上下文

async def read_context(doc_id: str, offset: int = 0, limit: int = 2000):
    """读取指定文档的原文片段。返回 {text, next_offset, more}"""
    async with httpx.AsyncClient(timeout=30) as client:
        resp = await client.get(
            f"{BASE}/content",
            headers=HEADERS,
            params={"doc_id": doc_id, "offset": offset, "limit": limit}
        )
        resp.raise_for_status()
        return resp.json()

async def gather_evidence(hits, top_n=5):
    sorted_hits = sorted(hits, key=lambda x: x["score"], reverse=True)[:top_n]
    evidences = []
    for hit in sorted_hits:
        ctx = await read_context(hit["doc_id"], hit.get("offset", 0))
        evidences.append({
            "title": hit["title"],
            "doc_id": hit["doc_id"],
            "offset": hit.get("offset", 0),
            "chunk": hit.get("chunk", ""),
            "context": ctx["text"],  # 注意:响应字段是 text
            "score": hit["score"]
        })
    return evidences

evidences = await gather_evidence(hits)

Step 4: 生成带引用的综述(可选增强)

将证据传给 LLM 生成结构化综述。此步骤依赖 Anthropic API Key,非 Sciverse 必需

from anthropic import Anthropic

client = Anthropic()  # 自动读取 ANTHROPIC_API_KEY

evidence_text = "\
\
".join([
    f"[{e['doc_id']}, offset={e['offset']}] {e['title']}\
{e['context']}"
    for e in evidences
])

msg = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=4096,
    messages=[{
        "role": "user",
        "content": f"""基于以下文献证据,生成一份关于 Transformer 在蛋白质结构预测中应用的综述。
每个论点必须标注来源 [doc_id, offset]。
不要编造任何未在证据中出现的信息。

{evidence_text}"""
    }]
)
print(msg.content[0].text)

注意事项

  • 所有引用必须来自 Sciverse 返回的真实 doc_id 和 offset,不要让 LLM 编造
  • agentic-search 的 top_k 范围为 1–100,综述场景建议 top_k=20
  • content 接口默认 limit=700 字符;如需更多上下文可传入更大值(如 2000–4096)
  • 如需全文,可循环调用 content 并使用 next_offset 拼接
  • 生产环境建议加 try/except 处理 404(文档无全文)和 429(账号配额限制)

FAQ

适合什么综述场景?

适合从开放研究问题出发生成初版文献综述,并保留引用证据。

如何保证综述可追溯?

每个结论都应绑定 doc_id、quote 和 offset,不能只输出模型总结。

需要人工复核吗?

需要,Agent 适合生成初稿和证据包,最终观点仍应由研究者确认。

和普通搜索结果有什么区别?

本案例强调证据链、上下文和引用位置,而不是只返回论文列表。

下一步

还没有 API Key?

登录控制台「密钥」即可创建。同一套 API Key 可用于已开通的 Sciverse、点石与 Skills 能力,提供基础试用额度,具体以账号权限为准。

前往控制台