ZZZyx3587 commited on
Commit
a4319b3
·
verified ·
1 Parent(s): fa671bd

Upload direction_analyzer.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. direction_analyzer.py +25 -10
direction_analyzer.py CHANGED
@@ -8,16 +8,24 @@ from llm_utils import call_llm_json, parse_json_safe, validate_direction_output,
8
 
9
  DIRECTION_SYSTEM_PROMPT = """你是一个 AI 研究领域的开源生态分析师。你的任务是:拿到一篇论文和 GitHub 上搜到的相关仓库列表,帮研究者理清——这些仓库分别属于什么方法族、哪些方法族有成熟开源实现、哪些还是空白。
10
 
 
 
 
 
 
 
 
 
11
  ## 分析流程
12
 
13
  ### 步骤 1:定位子领域
14
  - 结合论文内容和仓库描述,判断该论文属于哪个具体子领域
15
  - 不要笼统(如"深度学习"),要具体(如"工业图像异常检测")
16
- - 说明该子领域在 2024-2025 年的主流趋势(1-2 句中文)
17
 
18
  ### 步骤 2:归纳方法族
19
  - 浏览所有仓库的 description 和 topics,将同类方法的仓库归为一族
20
- - 每个方法族给出:名称、一句话核心特点、代表论文/项目
21
  - 输出 3-6 个方法族
22
  - 如果一个仓库明显不属于任何一族(如只是教程、论文列表),不要强行归类
23
  - 重要:方法族名称尽量使用英文(如"Patch Distribution Modeling"),便于后续搜索
@@ -39,11 +47,11 @@ DIRECTION_SYSTEM_PROMPT = """你是一个 AI 研究领域的开源生态分析
39
  ## 输出格式(严格 JSON,紧凑格式不要缩进和多余空格)
40
  {
41
  "subfield": "具体子领域名称",
42
- "subfield_trend": "该子领域 2024-2025 的主流趋势(1-2 句中文)",
43
  "method_families": [
44
  {
45
  "family_name": "方法族简称",
46
- "description": "一句话核心特点",
47
  "representative_work": "代表论文或知名项目",
48
  "matched_repos": ["owner/repo1", "owner/repo2"],
49
  "search_queries": ["搜索词1", "搜索词2"]
@@ -54,7 +62,7 @@ DIRECTION_SYSTEM_PROMPT = """你是一个 AI 研究领域的开源生态分析
54
  """
55
 
56
 
57
- def analyze_direction(title: str, abstract: str, repos: list[dict] | None = None) -> dict:
58
  """基于论文信息和 GitHub 搜索结果,归纳方法族谱系。
59
 
60
  Args:
@@ -63,6 +71,8 @@ def analyze_direction(title: str, abstract: str, repos: list[dict] | None = None
63
  repos: GitHub 搜索结果列表,每个 dict 包含 full_name, description,
64
  stars, language, topics, html_url。如果为 None 或空列表,
65
  则仅基于 LLM 自身知识分析(降级模式)。
 
 
66
 
67
  Returns:
68
  dict: 包含 subfield, subfield_trend, method_families, broad_queries
@@ -87,18 +97,23 @@ def analyze_direction(title: str, abstract: str, repos: list[dict] | None = None
87
  else:
88
  repos_text = "(未提供 GitHub 搜索结果,请基于你的训练知识进行分析)"
89
 
90
- user_prompt = f"""## 论文信息
91
- **标题**: {title_clean}
 
 
 
92
 
93
- **摘要**: {abstract_truncated}
94
 
 
 
95
  ## GitHub 搜索结果(共 {len(repos) if repos else 0} 个仓库)
96
 
97
  {repos_text}
98
 
99
- 分析以上论文和仓库数据,归纳方法族谱系。"""
100
 
101
- raw = call_llm_json(DIRECTION_SYSTEM_PROMPT, user_prompt, temperature=0.4, max_tokens=5000)
102
  data = parse_json_safe(raw, "direction_analyzer")
103
  return validate_direction_output(data)
104
 
 
8
 
9
  DIRECTION_SYSTEM_PROMPT = """你是一个 AI 研究领域的开源生态分析师。你的任务是:拿到一篇论文和 GitHub 上搜到的相关仓库列表,帮研究者理清——这些仓库分别属于什么方法族、哪些方法族有成熟开源实现、哪些还是空白。
10
 
11
+ ## ⚠️ 防混淆规则(最高优先级)
12
+
13
+ - 你必须**严格基于用户提供的这篇具体论文**进行分析,**绝对禁止**将输入论文与其他相似论文混淆
14
+ - 如果你的训练数据中有更知名的论文与输入论文标题相似,**忽略它们**,只分析当前输入的这篇
15
+ - 子领域定位必须从**这篇论文的实际标题和摘要**出发,方法族归纳必须基于**提供的 GitHub 仓库列表**
16
+ - 不要在分析中引用未在输入中出现的论文标题、方法名或作者
17
+ - 如果输入的是一篇"XYZNet for anomaly detection",不要分析成 Transformer、ResNet 或任何训练数据中的其他模型
18
+
19
  ## 分析流程
20
 
21
  ### 步骤 1:定位子领域
22
  - 结合论文内容和仓库描述,判断该论文属于哪个具体子领域
23
  - 不要笼统(如"深度学习"),要具体(如"工业图像异常检测")
24
+ - 说明该子领域在 2024-2025 年的主流趋势(3-5 句中文,包含:主要技术路线演进方向、关键突破性论文/项目、活跃研究组或机构、当前正在解决的核心问题
25
 
26
  ### 步骤 2:归纳方法族
27
  - 浏览所有仓库的 description 和 topics,将同类方法的仓库归为一族
28
+ - 每个方法族给出:名称(英文简称)、核心特点(2-3句详细描述,包含技术原理关键词相比其他族的优势、主要适用场景)、代表论文(含arxiv ID或会议名)/知名开源项目
29
  - 输出 3-6 个方法族
30
  - 如果一个仓库明显不属于任何一族(如只是教程、论文列表),不要强行归类
31
  - 重要:方法族名称尽量使用英文(如"Patch Distribution Modeling"),便于后续搜索
 
47
  ## 输出格式(严格 JSON,紧凑格式不要缩进和多余空格)
48
  {
49
  "subfield": "具体子领域名称",
50
+ "subfield_trend": "该子领域 2024-2025 的主流趋势(3-5句中文,含技术路线演进、关键突破、活跃研究组/机构、核心问题)",
51
  "method_families": [
52
  {
53
  "family_name": "方法族简称",
54
+ "description": "核心特点(2-3句详细描述,含技术原理关键词、优势、适用场景)",
55
  "representative_work": "代表论文或知名项目",
56
  "matched_repos": ["owner/repo1", "owner/repo2"],
57
  "search_queries": ["搜索词1", "搜索词2"]
 
62
  """
63
 
64
 
65
+ def analyze_direction(title: str, abstract: str, repos: list[dict] | None = None, domain_context: str = "") -> dict:
66
  """基于论文信息和 GitHub 搜索结果,归纳方法族谱系。
67
 
68
  Args:
 
71
  repos: GitHub 搜索结果列表,每个 dict 包含 full_name, description,
72
  stars, language, topics, html_url。如果为 None 或空列表,
73
  则仅基于 LLM 自身知识分析(降级模式)。
74
+ domain_context: 可选的领域上下文补充(如同领域综述论文摘要),
75
+ 帮助 LLM 更准确地定位子领域和识别方法族。
76
 
77
  Returns:
78
  dict: 包含 subfield, subfield_trend, method_families, broad_queries
 
97
  else:
98
  repos_text = "(未提供 GitHub 搜索结果,请基于你的训练知识进行分析)"
99
 
100
+ domain_section = ""
101
+ if domain_context:
102
+ domain_section = f"\n## 领域上下文(同领域相关综述/调查论文摘要)\n\n{domain_context}\n"
103
+
104
+ user_prompt = f"""## ⚠️ 以下是你需要分析的论文,请务必将你的分析锚定在这篇论文上
105
 
106
+ **论文标题**: {title_clean}
107
 
108
+ **论文摘要**: {abstract_truncated}
109
+ {domain_section}
110
  ## GitHub 搜索结果(共 {len(repos) if repos else 0} 个仓库)
111
 
112
  {repos_text}
113
 
114
+ 严格基于以上这篇论文和仓库数据分析不要使用训练数据中其他相似论文的信息。"""
115
 
116
+ raw = call_llm_json(DIRECTION_SYSTEM_PROMPT, user_prompt, temperature=0.4, max_tokens=6000)
117
  data = parse_json_safe(raw, "direction_analyzer")
118
  return validate_direction_output(data)
119