论文搜索 API

从多个学术数据源(Google Scholar、PubMed、ArXiv、万方)搜索论文,支持 AI 驱动的论文深度分析,以及基于自然语言的智能 Agent 搜索。

POST/v1/paper-search/*

Google Scholar 搜索

POST/v1/paper-search/google

通过 ScrapingDog API 搜索 Google Scholar。返回引用次数、PDF 链接和 Google Scholar 特有的资源链接。每次请求最多 20 条结果。

参数

参数类型必填描述
querystring必填搜索关键词(1-300 字符)
max_resultsinteger可选 (默认: 20)结果数量(1-20)
offsetinteger可选 (默认: 0)分页偏移量
date_fromstring可选起始年份,如 '2020'
date_tostring可选结束年份,如 '2025'
authorstring可选作者姓名过滤
journalstring可选期刊名称过滤
languagestring可选'english'、'中文' 或留空

万方搜索

POST/v1/paper-search/wanfang

搜索万方数据的中文学术期刊、学位论文和会议论文。返回关键词、卷号、页码和来源数据库信息。

参数

参数类型必填描述
querystring必填搜索关键词(1-300 字符)
max_resultsinteger可选 (默认: 50)结果数量(1-100)
date_fromstring可选起始年份过滤
date_tostring可选结束年份过滤

PubMed 搜索

POST/v1/paper-search/pubmed

通过 NCBI E-utilities 搜索 PubMed/MEDLINE。返回 MeSH 词条、PMC ID、期刊详情和出版类型,适用于生物医学文献。

参数

参数类型必填描述
querystring必填搜索关键词,支持 PubMed 查询语法(1-300 字符)
max_resultsinteger可选 (默认: 50)结果数量(1-200)
offsetinteger可选 (默认: 0)分页偏移量
date_fromstring可选起始日期,'YYYY' 或 'YYYYMMDD'
date_tostring可选结束日期,'YYYY' 或 'YYYYMMDD'
authorstring可选作者姓名过滤
journalstring可选期刊名称过滤
sortstring可选'relevance'、'date'、'pubdate'、'fauth'、'jour'

ArXiv 搜索

POST/v1/paper-search/arxiv

通过 OAI API 搜索 ArXiv 预印本。返回分类、发表/更新日期、评论、期刊引用和 PDF 链接,涵盖物理、数学、计算机科学和生物学论文。

参数

参数类型必填描述
querystring必填搜索关键词,支持 ArXiv 语法如 'cat:cs.AI'(1-300 字符)
max_resultsinteger可选 (默认: 50)结果数量(1-100)
offsetinteger可选 (默认: 0)分页偏移量
date_fromstring可选起始日期,'YYYY' 或 'YYYYMMDD'
date_tostring可选结束日期,'YYYY' 或 'YYYYMMDD'
authorstring可选作者姓名过滤(ArXiv au: 查询)
journalstring可选期刊过滤(ArXiv jr: 查询)
sortstring可选'relevance'、'lastUpdatedDate'、'submittedDate'

论文分析

POST/v1/paper-search/analyze

AI 驱动的单篇论文结构化分析。输出研究目标、方法论、主要发现和研究限制。内容按优先级从 PDF、网页或摘要中提取。

参数

参数类型必填描述
titlestring必填论文标题(1-1024 字符)
authorsstring[]必填作者姓名列表
abstractstring可选论文摘要(最多 10000 字符)
doistring可选DOI 标识符
source_urlstring可选论文页面 URL
pdf_urlstring可选PDF 直链(最高优先级)
languagestring可选 (默认: 中文)输出语言:'中文' 或 'en'

abstract、source_url、pdf_url 至少需要提供其中一个。

响应

Response
{
  "success": true,
  "message": "Paper analysis completed successfully",
  "paper_title": "Attention Is All You Need",
  "analysis": {
    "研究目标": "提出一种新的简单网络架构 Transformer...",
    "方法论": "设计了多头自注意力机制和位置编码...",
    "主要发现": "Transformer 在机器翻译任务上取得了 SOTA 结果...",
    "研究限制": "主要在机器翻译任务上验证..."
  },
  "usage": {
    "tokens_usage": {
      "gpt-4": [
        [
          1500,
          800,
          2300
        ]
      ]
    }
  },
  "content_sources": [
    "pdf"
  ]
}

Agent 搜索(SSE 流式)

POST/v1/paper-search/agent_search

基于多 Agent 的智能论文搜索,支持自然语言查询。自动规划搜索策略、跨数据库迭代搜索、反思进度并过滤结果。返回 SSE 流式事件。最多 50 篇论文,最多 3 轮搜索迭代。

参数

参数类型必填描述
querystring必填中文或英文自然语言搜索查询(1-500 字符)
languagestring可选 (默认: 中文)响应语言:'中文' 或 'English'
sourcesstring[]可选搜索数据库:'google'、'wanfang'、'arxiv'、'pubmed'。null = 全部

SSE 事件类型

start 搜索已启动

node_start / node_complete Agent 阶段更新

reflection 进度分析

result_data 最终论文结果

complete 搜索完成

error 发生错误

响应

Response
{
  "success": true,
  "message": "Google Scholar search completed successfully",
  "query": "deep learning",
  "results": {
    "total": 10,
    "source": "Google Scholar"
  },
  "data": [
    {
      "source": "Google Scholar",
      "title": "Deep Residual Learning for Image Recognition",
      "authors": [
        "K He",
        "X Zhang",
        "S Ren",
        "J Sun"
      ],
      "abstract": "Deeper neural networks are more difficult to train...",
      "publication_year": "2016",
      "publication_journal": "Proceedings of the IEEE conference on computer vision",
      "source_url": "https://openaccess.thecvf.com/content_cvpr_2016/...",
      "pdf_url": "https://openaccess.thecvf.com/.../pdf",
      "doi": "",
      "cited_by_count": 220000
    }
  ]
}

示例

import requests

API_KEY = "your_api_key_here"
BASE_URL = "https://api.qinyanai.com"

# Google Scholar search
response = requests.post(
    f"{BASE_URL}/v1/paper-search/google",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "query": "large language model",
        "max_results": 10,
        "date_from": "2020",
        "date_to": "2025"
    }
)
data = response.json()
for paper in data["data"]:
    print(f"{paper['title']} ({paper['publication_year']})")

# PubMed search
response = requests.post(
    f"{BASE_URL}/v1/paper-search/pubmed",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "query": "cancer immunotherapy",
        "max_results": 30,
        "author": "Zhang Wei"
    }
)

# Paper analysis
response = requests.post(
    f"{BASE_URL}/v1/paper-search/analyze",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "title": "Attention Is All You Need",
        "authors": ["Ashish Vaswani", "Noam Shazeer"],
        "abstract": "The dominant sequence transduction models...",
        "language": "中文"
    }
)
result = response.json()
print(result["analysis"])

# Agent search (streaming)
response = requests.post(
    f"{BASE_URL}/v1/paper-search/agent_search",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "query": "帮我查找最近5年的脑机接口领域引用量超过200的论文",
        "language": "中文"
    },
    stream=True
)
for line in response.iter_lines():
    if line:
        print(line.decode())