Completed: - Unifuncs DeepSearch API site coverage test (18 medical sites, 9 tier-1 available) - ClinicalTrials.gov dedicated test (4 strategies, English query + depth>=10 works best) - Deep Research V2.0 development plan (5-day phased delivery) - DeepResearch engine capability guide (docs/02-common-capability/) - Test scripts: test-unifuncs-site-coverage.ts, test-unifuncs-clinicaltrials.ts Key findings: - Tier-1 sites: PubMed(28), ClinicalTrials(38), NCBI(18), Scholar(10), Cochrane(4), CNKI(7), SinoMed(9), GeenMedical(5), VIP(1) - Paid databases (WoS/Embase/Scopus/Ovid) cannot be accessed (no credential support) - ClinicalTrials.gov requires English queries with max_depth>=10 Updated: ASL module status doc, system status doc, common capability list Co-authored-by: Cursor <cursoragent@cursor.com>
296 lines
10 KiB
Markdown
296 lines
10 KiB
Markdown
# Unifuncs DeepSearch API 使用指南
|
||
|
||
> **文档版本:** v1.0
|
||
> **创建日期:** 2026-02-22
|
||
> **维护者:** 开发团队
|
||
> **文档目的:** 指导业务模块正确使用 Unifuncs DeepSearch API,明确可用网站与最佳策略
|
||
|
||
---
|
||
|
||
## 1. 概述
|
||
|
||
Unifuncs DeepSearch 是一个 AI 驱动的深度搜索引擎,可以在指定的网站范围内自动搜索、阅读和汇总信息。在本平台中,它作为**通用能力层**的一部分,为文献检索、临床试验查找等场景提供底层搜索能力。
|
||
|
||
### 核心能力
|
||
- 自然语言输入 → AI 自动生成搜索策略
|
||
- 多轮迭代搜索(最大深度可配置)
|
||
- 自动阅读网页内容并提取关键信息
|
||
- 返回结构化结果 + 综合报告
|
||
|
||
### API 基础信息
|
||
|
||
| 项目 | 值 |
|
||
|------|---|
|
||
| 基础 URL | `https://api.unifuncs.com/deepsearch/v1` |
|
||
| 模型 | `s2` |
|
||
| 认证 | `Authorization: Bearer {UNIFUNCS_API_KEY}` |
|
||
| 环境变量 | `UNIFUNCS_API_KEY`(已配置在 `backend/.env`) |
|
||
|
||
---
|
||
|
||
## 2. 网站覆盖能力(2026-02-22 实测)
|
||
|
||
### 2.1 测试条件
|
||
|
||
- **查询**:他汀类药物预防心血管疾病的随机对照试验和Meta分析,近5年高质量研究
|
||
- **配置**:max_depth=5,异步模式(create_task + query_task)
|
||
- **ClinicalTrials.gov 专项**:4 种策略对比测试,max_depth=5~15
|
||
|
||
### 2.2 可用性分级
|
||
|
||
#### 一级:确认可搜索(返回站内直接链接)
|
||
|
||
| 站点 | 域名 | 类型 | 站内链接数 | 搜索/阅读 | 最佳策略 |
|
||
|------|------|------|-----------|-----------|---------|
|
||
| **PubMed** | pubmed.ncbi.nlm.nih.gov | 英文 | 28 | 9/29 | 中/英文查询均可,效果最佳 |
|
||
| **NCBI/PMC** | www.ncbi.nlm.nih.gov | 英文 | 18 | 24/19 | 含 PMC 全文链接 |
|
||
| **ClinicalTrials.gov** | clinicaltrials.gov | 英文 | 38 | 6/24 | **必须英文查询**,max_depth≥10 |
|
||
| **Google Scholar** | scholar.google.com | 英文 | 10 | 22/26 | 跨库聚合搜索 |
|
||
| **CBM/SinoMed** | www.sinomed.ac.cn | 中文 | 9 | 17/12 | 中文生物医学文献数据库 |
|
||
| **中国知网 CNKI** | www.cnki.net | 中文 | 7 | 40/6 | 中文核心期刊 |
|
||
| **GeenMedical** | www.geenmedical.com | 英文 | 5 | 38/3 | 医学搜索聚合引擎 |
|
||
| **Cochrane Library** | www.cochranelibrary.com | 英文 | 4 | 38/12 | 系统综述金标准 |
|
||
| **维普 VIP** | www.cqvip.com | 中文 | 1 | 33/3 | 可用但链接较少 |
|
||
|
||
#### 二级:可到达但链接间接(搜索到内容,但返回链接不指向该站点域名)
|
||
|
||
| 站点 | 域名 | 类型 | 其他链接数 | 说明 |
|
||
|------|------|------|-----------|------|
|
||
| 中华医学期刊网 | medjournals.cn | 中文 | 12 | 搜索活跃(41次),内容丰富但链接跳转 |
|
||
| 万方数据 | www.wanfangdata.com.cn | 中文 | 7 | 搜索活跃(42次),链接可能转跳 |
|
||
| 中国临床试验注册中心 | www.chictr.org.cn | 中文 | 7 | 有内容产出,链接指向其他站 |
|
||
| 中国中医药数据库 | cintmed.cintcm.cn | 中文 | 22 | 内容最丰富(8631字),链接非直达 |
|
||
| Scopus | www.scopus.com | 英文 | 15 | 付费墙限制,内容来自外部引用 |
|
||
| Embase | www.embase.com | 英文 | 14 | 需机构登录 |
|
||
| Web of Science | www.webofscience.com | 英文 | 6 | 付费墙限制 |
|
||
|
||
#### 三级:不可用或受限
|
||
|
||
| 站点 | 域名 | 说明 |
|
||
|------|------|------|
|
||
| Ovid | ovidsp.ovid.com | 仅搜索未读取内容,需机构登录 |
|
||
| NSTL | www.nstl.gov.cn | 搜索到但无有效内容和链接 |
|
||
|
||
### 2.3 关键发现
|
||
|
||
1. **付费库无法穿透**:Unifuncs 只能访问公开可达的网页内容,不支持传入用户名密码。Web of Science、Embase、Scopus、Ovid 等需要机构 IP 或账号登录的库无法直接搜索。
|
||
|
||
2. **ClinicalTrials.gov 必须用英文**:该站点为纯英文网站,中文查询效率极低。使用英文查询 + max_depth≥10 时,可稳定返回 30+ 个 NCT 编号和链接。
|
||
|
||
3. **中文库表现不一**:CNKI 和 SinoMed 效果较好,能直接返回站内链接;万方和中华医学期刊网可到达但链接不直达。
|
||
|
||
---
|
||
|
||
## 3. 两种调用模式
|
||
|
||
### 3.1 OpenAI 兼容协议(流式,适合实时展示)
|
||
|
||
```typescript
|
||
import OpenAI from 'openai';
|
||
|
||
const client = new OpenAI({
|
||
baseURL: 'https://api.unifuncs.com/deepsearch/v1',
|
||
apiKey: process.env.UNIFUNCS_API_KEY,
|
||
});
|
||
|
||
const stream = await client.chat.completions.create({
|
||
model: 's2',
|
||
messages: [{ role: 'user', content: query }],
|
||
stream: true,
|
||
introduction: '你是一名专业的临床研究文献检索专家',
|
||
max_depth: 15,
|
||
domain_scope: ['https://pubmed.ncbi.nlm.nih.gov/'],
|
||
domain_blacklist: [],
|
||
reference_style: 'link',
|
||
} as any);
|
||
|
||
for await (const chunk of stream) {
|
||
const delta = chunk.choices[0]?.delta;
|
||
if ((delta as any)?.reasoning_content) {
|
||
// AI 思考过程(逐字流式)
|
||
}
|
||
if (delta?.content) {
|
||
// 最终结果内容(逐字流式)
|
||
}
|
||
}
|
||
```
|
||
|
||
**优点:** 实时展示 AI 思考过程,用户体验好
|
||
**缺点:** 连接不稳定,离开页面任务丢失,长任务容易超时
|
||
|
||
### 3.2 异步模式(推荐用于 V2.0)
|
||
|
||
#### 创建任务
|
||
|
||
```typescript
|
||
const payload = {
|
||
model: 's2',
|
||
messages: [{ role: 'user', content: query }],
|
||
introduction: '你是一名专业的临床研究文献检索专家',
|
||
max_depth: 15,
|
||
domain_scope: ['https://pubmed.ncbi.nlm.nih.gov/'],
|
||
domain_blacklist: [],
|
||
reference_style: 'link',
|
||
generate_summary: true,
|
||
output_prompt: '请输出结构化报告和文献列表',
|
||
};
|
||
|
||
const res = await fetch('https://api.unifuncs.com/deepsearch/v1/create_task', {
|
||
method: 'POST',
|
||
headers: {
|
||
'Authorization': `Bearer ${UNIFUNCS_API_KEY}`,
|
||
'Content-Type': 'application/json',
|
||
},
|
||
body: JSON.stringify(payload),
|
||
});
|
||
|
||
const { data } = await res.json();
|
||
// data.task_id → 保存到数据库
|
||
```
|
||
|
||
#### 轮询任务
|
||
|
||
```typescript
|
||
const params = new URLSearchParams({ task_id: taskId });
|
||
const res = await fetch(
|
||
`https://api.unifuncs.com/deepsearch/v1/query_task?${params}`,
|
||
{ headers: { 'Authorization': `Bearer ${UNIFUNCS_API_KEY}` } }
|
||
);
|
||
|
||
const { data } = await res.json();
|
||
// data.status: pending / processing / completed / failed
|
||
// data.result.content: 最终结果
|
||
// data.result.reasoning_content: AI 思考过程(增量)
|
||
// data.progress: { current, total, message }
|
||
// data.statistics: { iterations, search_count, read_count, token_usage }
|
||
```
|
||
|
||
**优点:** 任务持久化,离开页面不中断,可恢复,适合长任务
|
||
**缺点:** 非实时,需要轮询获取进度
|
||
|
||
---
|
||
|
||
## 4. 关键参数说明
|
||
|
||
| 参数 | 类型 | 推荐值 | 说明 |
|
||
|------|------|--------|------|
|
||
| `model` | string | `"s2"` | 固定值 |
|
||
| `max_depth` | number | 10~25 | 搜索深度。测试用 5,生产用 15~25。越大越全但越慢 |
|
||
| `domain_scope` | string[] | 按需配置 | 限定搜索范围。留空则不限 |
|
||
| `domain_blacklist` | string[] | `[]` | 排除特定站点 |
|
||
| `introduction` | string | 见下方 | 设定 AI 角色和搜索指导 |
|
||
| `reference_style` | string | `"link"` | 引用格式,`link` 或 `character` |
|
||
| `output_prompt` | string | 可选 | 自定义输出格式提示词 |
|
||
| `generate_summary` | boolean | `true` | 异步模式完成后自动生成摘要 |
|
||
|
||
### 推荐的 introduction 模板
|
||
|
||
```
|
||
你是一名专业的临床研究文献检索专家。
|
||
请根据用户的研究需求,在指定数据库中系统性地检索相关文献。
|
||
|
||
检索要求:
|
||
1. 优先检索高质量研究:系统综述、Meta分析、RCT
|
||
2. 关注 PICOS 要素(人群、干预、对照、结局、研究设计)
|
||
3. 优先近 5 年的研究
|
||
4. 返回每篇文献的完整元数据(标题、作者、期刊、年份、链接)
|
||
|
||
输出要求:
|
||
1. 按研究类型分组
|
||
2. 每篇文献附带直接链接
|
||
3. 最后给出综合性研究概述
|
||
```
|
||
|
||
---
|
||
|
||
## 5. 最佳策略指南
|
||
|
||
### 5.1 针对不同站点的策略
|
||
|
||
| 目标站点 | 查询语言 | max_depth | 特殊说明 |
|
||
|---------|---------|-----------|---------|
|
||
| PubMed / NCBI | 中文或英文均可 | 15~25 | 效果最好,核心数据源 |
|
||
| ClinicalTrials.gov | **必须英文** | 10~15 | 中文查询极慢甚至超时 |
|
||
| Cochrane Library | 英文优先 | 10~15 | 系统综述专用 |
|
||
| Google Scholar | 中文或英文 | 10~15 | 跨库聚合,可能有重复 |
|
||
| CNKI / SinoMed | 中文 | 10~15 | 中文文献首选 |
|
||
| GeenMedical | 英文优先 | 5~10 | 聚合搜索,速度快 |
|
||
|
||
### 5.2 多站点组合搜索
|
||
|
||
```typescript
|
||
// V2.0 推荐:用户选择多个数据源,合并到 domain_scope
|
||
const domainScope = [
|
||
'https://pubmed.ncbi.nlm.nih.gov/',
|
||
'https://www.cochranelibrary.com/',
|
||
'https://scholar.google.com/',
|
||
];
|
||
|
||
// 如果包含 ClinicalTrials.gov,需求扩写时自动翻译为英文
|
||
```
|
||
|
||
### 5.3 性能预期
|
||
|
||
| max_depth | 预计耗时 | 搜索/阅读量 | 适用场景 |
|
||
|-----------|---------|------------|---------|
|
||
| 5 | 1~3 分钟 | 10~40 / 0~20 | 快速探索 |
|
||
| 10 | 2~5 分钟 | 20~50 / 10~30 | 常规检索 |
|
||
| 15 | 3~8 分钟 | 30~80 / 20~50 | 深度检索 |
|
||
| 25 | 5~15 分钟 | 50~150 / 30~80 | 全面研究 |
|
||
|
||
### 5.4 成本估算
|
||
|
||
- 单次搜索 Token 消耗:5万~30万 tokens(取决于深度和站点数量)
|
||
- 估算成本:约 ¥0.1~0.5/次(按 unifuncs 定价)
|
||
|
||
---
|
||
|
||
## 6. 平台集成方式
|
||
|
||
### 当前使用(V1.x - ASL 模块)
|
||
|
||
```
|
||
researchService.ts → OpenAI SDK → SSE 流式
|
||
researchWorker.ts → pg-boss → 异步执行
|
||
```
|
||
|
||
### 计划升级(V2.0 - ASL Deep Research)
|
||
|
||
```
|
||
requirementExpansionService.ts → DeepSeek-V3 需求扩写
|
||
unifuncsAsyncClient.ts → create_task / query_task 异步模式
|
||
deepResearchV2Worker.ts → pg-boss Worker → 轮询 + 日志解析
|
||
```
|
||
|
||
### 其他模块可复用场景
|
||
|
||
| 模块 | 潜在用途 |
|
||
|------|---------|
|
||
| AIA 智能问答 | 智能体联网搜索增强 |
|
||
| PKB 个人知识库 | 自动补充知识库文献 |
|
||
| RVW 稿件审查 | 自动查找参考文献验证 |
|
||
| IIT 研究管理 | 自动检索同类临床试验 |
|
||
|
||
---
|
||
|
||
## 7. 测试脚本
|
||
|
||
项目中已提供两个测试脚本:
|
||
|
||
| 脚本 | 路径 | 用途 |
|
||
|------|------|------|
|
||
| 全站覆盖测试 | `backend/scripts/test-unifuncs-site-coverage.ts` | 并行测试 18 个医学网站的搜索能力 |
|
||
| ClinicalTrials 专项 | `backend/scripts/test-unifuncs-clinicaltrials.ts` | 4 种策略对比测试 ClinicalTrials.gov |
|
||
| 快速验证 | `backend/scripts/test-unifuncs-deepsearch.ts` | 单站点 SSE 流式快速测试 |
|
||
|
||
```bash
|
||
cd backend
|
||
npx tsx scripts/test-unifuncs-site-coverage.ts
|
||
npx tsx scripts/test-unifuncs-clinicaltrials.ts
|
||
```
|
||
|
||
---
|
||
|
||
**维护者:** 开发团队
|
||
**最后更新:** 2026-02-22
|