技能:Bohrium SciencePedia 概述
通过 open.bohrium.com 上的 /v1/literature-sage/wiki_v2/ 端点访问 Bohrium SciencePedia —— 一个分层的科学主题百科全书,组织为主要 → 级别 → 领域 → 主题。
使用时:
获取科学术语的快速定义(比网页搜索更专注 —— 百科全书风格的条目)
按学科浏览(例如,材料科学下的所有子领域)
检索主题的完整文章(介绍 / 应用 / 背景部分)
不适用:
论文搜索 → bohrium-paper-search
管理自己的知识库 → bohrium-knowledge-base
不支持 CLI —— 只支持 HTTP API。
身份验证配置
"bohrium-wiki": {
"enabled": true,
"apiKey": "YOUR_ACCESS_KEY",
"env": {
"ACCESS_KEY": "YOUR_ACCESS_KEY"
}
}
常用模板
import os, requests
AK = os.environ["ACCESS_KEY"]
BASE = "https://open.bohrium.com/openapi/v1/literature-sage/wiki_v2"
H = {"accessKey": AK, "Content-Type": "application/json"}
可选的全局默认值
DEFAULTS = {"language": "en-US", "style": "Feynman"}
语言: "en-US" / "zh-CN"
风格: "Feynman" 代表易于理解的语气,或者其他风格
操作概述
操作 方法 目的
info GET 基本 SciencePedia 信息
major_levels POST 列出所有主要学科及其级别
get_wiki_index POST 获取给定 nodeId / fieldId 的索引
get_level_wiki_index POST 列出按 node_types 过滤的节点
search_index_name POST 关键词搜索索引条目
level_fields POST 列出级别节点下的领域
article POST 获取节点 / 条目的文章正文
r = requests.get(f"{BASE}/info", headers={"accessKey": AK})
print(r.json())
r = requests.post(f"{BASE}/major_levels", headers=H, json={DEFAULTS})
for m in r.json().get("majors", []):
levels = ", ".join(l["name"] for l in m.get("levels", []))
print(f"- {m['name']} [{m['node_id']}] 级别:{levels}")
- 搜索条目 —— search_index_name
r = requests.post(f"{BASE}/search_index_name", headers=H, json={
"name": "graphene",
"node_types": ["field"], # 过滤:主要 / 级别 / 领域 / 主题
"style": "Feynman",
})
for i, n in enumerate(r.json().get("wiki_indices", []), 1):
print(f"[{i}] [{n['node_type']}] {n['node_name']} id={n['node_id']}")
- 所有级别下的节点 —— get_level_wiki_index
r = requests.post(f"{BASE}/get_level_wiki_index", headers=H, json={
"node_types": ["major", "level"], DEFAULTS,
})
for n in r.json().get("wiki_indices", [])[:50]:
print(f"[{n['node_type']}] {n['node_name']} ({n['node_id']})")
- 给定节点的索引 —— get_wiki_index
r = requests.post(f"{BASE}/get_wiki_index", headers=H, json={
"node_id": "NODE_ID_HERE", # 或 "field_id": "FIELD_ID_HERE"
DEFAULTS,
})
print(r.json())
- 批量列出级别下的领域 —— level_fields
r = requests.post(f"{BASE}/level_fields", headers=H, json={
"node_ids": ["LEVEL_NODE_ID1", "LEVEL_NODE_ID2"],
"page_num": 1,
"page_size": 10,
DEFAULTS,
})
for row in r.json().get("items", []):
major = row.get("major", {}).get("name")
level = row.get("level", {}).get("name")
field = row.get("field", {}).get("name")
print(f"- {major}/{level}/{field} 主题={row.get('topic_count')}")
r = requests.post(f"{BASE}/article", headers=H, json={
"node_id": "NODE_ID", # 或 "entry_id": "ENTRY_ID"
*DEFAULTS,
})
doc = r.json().get("document", {})
print(f"# {doc.get('article_name')}")
print(doc.get("main_content", "")[:2000])
常用字段:
document.article_name / document.main_content / document.applications / document.seo_title
curl 示例
AK="YOUR_ACCESS_KEY"
BASE="https://open.bohrium.com/openapi/v1/literature-sage/wiki_v2"
搜索条目按关键词
curl -s -X POST "$BASE/search_index_name" \
-H "accessKey: $AK" -H "Content-Type: application/json" \
-d '{"name":"graphene","node_types":["field"],"style":"Feynman"}' \
| jq '.wiki_indices[] | {node_name, node_type, node_id}'
故障排除
症状 原因 解决方法
没有匹配的 "..." 关键词不在索引中 尝试同义词;扩展 node_types 到 ["field","topic","major","level"]
文章为空 错误的 nodeId/entryId 或无正文 首先调用 search_index_name 获取正确的 node_id
全部英文(或全部中文)结果 错误的语言 设置 "language": "en-US" 或 "zh-CN"
与 wiki 配对以获取概念的基线解释 → paper-search 进行深入研究
wiki 浏览学科树(major_levels) → 选择一个领域 → scholar 找到领先的研究人员