关于 Stringer Grounded Synthesizer
Stringer Grounded Synthesizer 是研究服务的参考实现,可从经核实的公开来源提取引文并附上出处,适合需要有来源依据的综合结果的调用方。若内容无法满足核验要求,它会拒绝生成。
主要功能
- 01带出处的摘录式引文
- 02简要和深入综合模式
- 03基于多个来源进行核验
- 04无法依据来源时拒绝生成
- 05可注入研究提供方
适用场景
- 01生成带来源的主题简报
- 02请求跨来源的深入综合
- 03在本地测试依据核验和拒答行为
MCP 相关
通过 Streamable HTTP 提供 `synthesize_intelligence` 工具。MCP 客户端可向托管服务请求有来源依据的综合结果。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://synthesis.getstringer.app/mcpclaude mcp add --transport http app-getstringer-synthesizer https://synthesis.getstringer.app/mcp{"mcpServers":{"app-getstringer-synthesizer":{"type":"http","url":"https://synthesis.getstringer.app/mcp"}}}在 Cursor 中打开{"servers":{"app-getstringer-synthesizer":{"type":"http","url":"https://synthesis.getstringer.app/mcp"}}}在 VS Code 中打开{"mcpServers":{"app-getstringer-synthesizer":{"type":"http","url":"https://synthesis.getstringer.app/mcp"}}}{"mcpServers":{"app-getstringer-synthesizer":{"serverUrl":"https://synthesis.getstringer.app/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
1| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| depth | enum | 否 | 研究深度:'brief'($0.10,至少 2 个来源)或 'deep'($0.25,至少 3 个来源)。默认值为 'brief'。brief | deep |
| topic | string | 是 | 要综合分析的主题、实体或研究查询。 |
| source_urls | array | 否 | 调用方提供的公共来源 URL。Brief 要求至少 2 个不同且经过验证的 URL;deep 要求至少 3 个。 |
| domains_filter | array | 否 | 用于筛选发现结果的可选域名列表。 |
详细介绍
Grounded Synthesizer(参考实现)
这是 Stringer Grounded Synthesizer 的可运行参考实现。它是一项研究服务,可从经过验证的公开来源中返回带引文的摘录式引文,并拒绝无法依据来源证实的主题。它复现了托管服务 synthesis.getstringer.app 上调用方可观察到的接口,不会隐藏调用方能看到的任何内容。
边界规则与 Worker 标头中所述的一致:未经身份验证的调用方能从外部观察到的行为,都属于此处的范围。需要 Bearer 令牌的管理统计路由、Durable Object 漏斗计数器、调用方哈希和服务提供商成本价目表均不在范围内。
参考实现的运行环境
Node.js 20 或更高版本。该 Worker 无依赖项,无需 API 密钥或外部状态即可运行,因为默认研究服务提供商是由固定样例数据支撑的存根。这样设计正是为了让任何人都能克隆代码库,端到端观察依据来源生成结果和拒绝行为,而无需持有任何付费密钥。
git clone <this repository>
cd synthesizer-public
node --test test_discovery.mjs test_worker.mjs
若要在本地将其作为 Worker 运行,请使用 Wrangler 4(npx wrangler dev)。无需设置密钥;参考实现的免费额度在进程内保存,并已在 wrangler.toml 中说明。
托管端点(本文档所述的服务)
- MCP:
https://synthesis.getstringer.app/mcp - MCP 工具:
synthesize_intelligence - REST:
POST https://synthesis.getstringer.app/v1/synthesize - REST 别名:
POST https://synthesis.getstringer.app/v1/execute - 发现:
/.well-known/mcp.json、/server.json、/llms.txt、/llms-full.txt、/robots.txt、/sitemap.xml
前 3 次调用完全免费,无需注册,也无需声明标头。额度不会重置。此后,简要合成费用为 0.10 美元,深度合成费用为 0.25 美元,均通过 Base 上的 x402 v2 USDC(eip155:8453)支付。额度用尽后,未付款的调用会返回 HTTP 402,并在 PAYMENT-REQUIRED 中提供接受的支付要求,在 X-402-Price-USD 中提供对应档位的价格。
依据来源生成的约定
- 简要合成至少需要 2 个不同的已验证来源。
- 深度合成至少需要 3 个不同的已验证来源。
- 每项声明都是摘录式引文,并附有来源 URL 和字符偏移量。
GROUNDED:引文核验通过。REFUSED_UNVERIFIED_CLAIMS:已验证来源少于所需数量,或引文未能通过逐字核验。SOURCE_EXTRACTION_FAILED:无法获取或提取指定来源。
拒绝本身就是产品的全部声明。测试框架会先让依据来源生成的情形和拒绝情形各自测试失败,再让其通过,因此任何一条路径都不可能在测试从未失败过的情况下通过。
将存根替换为真实服务提供商
研究服务提供商是一个可注入的接口。synthesizeGroundedReport 接受 provider 参数,fetch 处理程序则读取 env.researchProvider。默认值为 createFixtureProvider(),它会搜索由 3 份来源文档组成的固定语料库,且不会发起网络调用。
真实服务提供商需实现相同的两个方法:
{
async search(query, numResults, domainsFilter) {
// Return [{ url, title }] from your search backend.
},
async extract(url) {
// Return { ok: true, document: { url, title, markdown, via } } on success, or
// { ok: false, source_url: url, stage, reason } on failure.
},
}
可通过在 Worker 环境中导出服务提供商来接入,例如使用 Exa 搜索密钥和 Firecrawl 抓取密钥,并将它们作为 Worker 密钥保存。参考实现绝不将服务提供商的单位成本硬编码,也绝不提及托管服务内部的利润细节;读者只需更改此接口即可。
REST
curl -i https://synthesis.getstringer.app/v1/synthesize \
-H 'Content-Type: application/json' \
--data '{"topic":"Base network USDC settlement","depth":"brief"}'
免费响应会附带 X-Stringer-Access-Tier: free 和 X-Stringer-Free-Remaining。第 4 次调用会返回 HTTP 402。完整流程请参阅 openapi.json 和 RECIPES.md。
MCP
通过 https://synthesis.getstringer.app/mcp 使用 Streamable HTTP。客户端必须在 Accept 中同时发送 application/json 和 text/event-stream。服务器为 synthesize_intelligence 实现了 initialize、ping、tools/list 和 tools/call。
测试
node --test test_discovery.mjs test_worker.mjs
python3 -m py_compile client_sdk.py
许可证
MIT。请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。