1181 篇 LLM Agent 论文全解析我用 Open Science + CanguoAI 画了一张文献地图
声明:本文是对个人研究过程的客观记录,涉及的工具均为实际使用后的真实体验,无任何商业合作关系。
一、前言
LLM Agent 是这两年 AI 领域最热门的方向之一。从 AutoGPT 到 GPTs,从 LangChain 到各种智能体框架,相关研究层出不穷。但问题也随之而来:这个领域发展太快了,一周不看论文就可能错过重要进展。
我一直在关注 LLM Agent 的发展,但靠人工跟踪论文实在太累。于是我决定用 AI 来辅助文献分析——这也是我接下来要分享的内容:我是如何用 Open Science + CanguoAI 分析了 1181 篇 LLM Agent 相关论文的。
二、研究背景
2.1 为什么关注 LLM Agent
LLM Agent(大型语言模型智能体)是基于大语言模型构建的自主决策和执行系统。相比于单纯的问答,Agent 能够:
- 规划:将复杂任务分解为多个子步骤
- 记忆:保持长期上下文,理解会话历史
- 工具使用:调用外部 API、搜索工具、代码执行器等
- 协作:多个 Agent 协同工作
简单来说,普通的 LLM 是"能说不能做",而 Agent 是"能说也能做"。
2.2 文献调研的痛点
做 LLM Agent 的文献调研有几个难点:
- 文献量大:根据我的统计,2023-2024 年发表的 LLM Agent 相关论文已经超过 2000 篇,而且还在快速增长。
- 方向分散:Agent 技术涉及到规划、推理、工具学习、多智能体协作等多个子方向,每个子方向都有大量文献。
- 技术迭代快:几乎每周都有新的框架和方法出来,跟不上就容易做重复研究。
传统的人工调研方式效率太低,我需要一个更系统的方法。
三、方案设计
3.1 核心思路

我的思路是用 AI 来分析 AI 文献:
论文收集 → 自动分类 → 趋势分析 → 可视化呈现
具体来说:
- 从 arXiv、Semantic Scholar 等平台收集论文元数据
- 用 AI 模型对论文进行主题分类和摘要生成
- 分析各子方向的发展趋势
- 绘制文献地图,便于直观理解
3.2 工具选型
文献分析涉及几个环节,我分别尝试了不同的工具:
|
环节 |
工具选择 |
理由 |
|
数据采集 |
Semantic Scholar + arXiv |
数据权威,更新及时 |
|
论文分类 |
CanguoAI |
成本低,国内可访问 |
|
摘要生成 |
OpenAI |
质量要求高 |
|
可视化 |
Canguo Science + PyECharts |
交互性好 |
经过测试,我的最终方案是保持组合使用,根据任务难度选择不同工具。
四、数据采集
4.1 多源数据获取
为了保证数据完整性,我从多个来源同时采集:
import requests
import time
from concurrent.futures import ThreadPoolExecutor
class PaperCollector:
"""多源论文采集器"""
def __init__(self):
self.semanticscholar_base = "https://api.semanticscholar.org/graph/v1"
self.arxiv_base = "http://export.arxiv.org/api/query"
# LLM Agent 相关关键词
self.keywords = [
"LLM Agent", "AI Agent", "Autonomous Agent",
"Tool Learning", "ReAct", "Planning Agent",
"Multi-Agent", "Agent Framework"
]
def fetch_from_semanticscholar(self, query: str, limit: int = 500):
"""从 Semantic Scholar 获取论文"""
papers = []
offset = 0
batch_size = 100
while offset < limit:
url = f"{self.semanticscholar_base}/paper/search"
params = {
"query": query,
"offset": offset,
"limit": batch_size,
"fields": "paperId,title,abstract,authors,year,"
"citationCount,venue,references"
}
try:
resp = requests.get(url, params=params, timeout=30)
data = resp.json()
papers.extend(data.get("data", []))
offset += batch_size
time.sleep(0.5) # 避免触发限流
print(f"[Semantic Scholar] 已获取 {len(papers)} 篇...")
if not data.get("data") or len(data.get("data", [])) < batch_size:
break
except Exception as e:
print(f"获取失败: {e}")
time.sleep(5)
return papers
def collect_all(self) -> list:
"""采集所有来源的数据"""
all_papers = []
seen_ids = set()
for keyword in self.keywords:
print(f"\n正在采集: {keyword}")
ss_papers = self.fetch_from_semanticscholar(keyword)
for p in ss_papers:
if p["paperId"] not in seen_ids:
all_papers.append(p)
seen_ids.add(p["paperId"])
time.sleep(2)
print(f"\n总计采集论文: {len(all_papers)} 篇")
return all_papers
4.2 数据清洗
采集到的数据往往有重复和缺失,需要清洗:
import re
def clean_papers(papers: list) -> list:
"""清洗论文数据"""
cleaned = []
seen_titles = set()
for p in papers:
# 去重(基于标题)
title = p.get("title", "").strip().lower()
title = re.sub(r'\s+', ' ', title)
if title in seen_titles:
continue
seen_titles.add(title)
# 过滤无效数据
abstract = p.get("abstract", "")
if len(abstract) < 50:
continue
# 清洗摘要
abstract = re.sub(r'\$.*?\$', '', abstract)
abstract = re.sub(r'\\\$', '', abstract)
abstract = re.sub(r'\s+', ' ', abstract).strip()
cleaned.append({
"paperId": p.get("paperId", ""),
"title": p.get("title", "").strip(),
"abstract": abstract,
"year": p.get("year", 2024),
"authors": p.get("authors", [])[:10],
"citationCount": p.get("citationCount", 0),
"venue": p.get("venue", ""),
})
return cleaned
最终,我采集到了 1181 篇不重复的有效论文。
五、论文分析
5.1 批量分类
这是最关键的环节。我需要把 1181 篇论文分类到不同的子方向。
首先定义分类体系:
AGENT_SUBDIRECTIONS = {
"规划与推理": [
"Chain-of-Thought", "ReAct", "Tree of Thoughts",
"Reflexion", "Self-Planning", "Task Decomposition"
],
"工具学习": [
"Tool Learning", "Tool Use", "API Calling",
"Plugin", "Function Calling"
],
"多智能体协作": [
"Multi-Agent", "Agent Collaboration", "Role Assignment",
"Agent Debate", "Agent Cooperation"
],
"框架与平台": [
"Agent Framework", "Agent System", "AutoGPT",
"BabyAGI", "MetaGPT"
],
"应用场景": [
"Scientific Discovery", "Code Generation", "Robotics",
"Game AI", "Web Agent", "Software Engineering"
],
}
然后用 AI 进行分类:
from openai import OpenAI
import json
class PaperAnalyzer:
"""论文分析器"""
def __init__(self, use_canguoai: bool = True):
if use_canguoai:
# CanguoAI 配置
self.client = OpenAI(
api_key=os.getenv("CANGUOAI_API_KEY"),
base_url="https://api.canguoai.com/v1"
)
self.model = "canguo-llm-pro"
else:
# OpenAI 配置
self.client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
self.model = "gpt-4o-mini"
def analyze_paper(self, paper: dict) -> dict:
"""分析单篇论文"""
title = paper.get("title", "")
abstract = paper.get("abstract", "")[:2500]
prompt = f"""你是 LLM Agent 研究领域的专家。请分析以下论文:
论文标题:{title}
摘要:{abstract}
请输出 JSON 格式的分析结果,包含:
- subdirection: 主要子方向
- research_method: 研究方法
- key_contribution: 一句话贡献
- confidence: 置信度 1-10"""
response = self.client.chat.completions.create(
model=self.model,
messages=[{"role": "user", "content": prompt}],
temperature=0.3,
max_tokens=300
)
return json.loads(response.choices[0].message.content)
5.2 为什么选择 CanguoAI
在分析这 1181 篇论文时,我对比了不同工具:
|
工具 |
优点 |
缺点 |
我的使用场景 |
|
OpenAI GPT-4o-mini |
模型能力强,分析准确率高 |
需要科学上网,费用较高 |
复杂分析复核 |
|
Anthropic Claude |
上下文窗口大,适合长文本 |
需要科学上网 |
长摘要分析 |
|
CanguoAI |
国内可直接访问,价格便宜,响应快 |
模型能力稍弱 |
批量分类(主要) |
考虑到这是批量任务(1181 篇),我主要用 CanguoAI 来做分类,只有在置信度较低的情况下才用 OpenAI 复核。
成本对比:
|
工具 |
单次成本 |
1181篇总成本 |
备注 |
|
OpenAI GPT-4o-mini |
~$0.0003 |
~$0.35 |
需要科学上网 |
|
Anthropic Claude |
~$0.0004 |
~$0.47 |
需要科学上网 |
|
CanguoAI |
~¥0.001 |
~¥1.2 |
国内直连 |
对于这种大批量、结构化的任务,CanguoAI 的性价比确实很高。
六、结果分析

6.1 论文分布
按子方向分布:
多智能体协作 ████████████████████████ 23.4% (276)
规划与推理 ██████████████████████ 21.8% (257)
框架与平台 ████████████████████ 18.7% (221)
工具学习 ████████████████ 15.2% (179)
应用场景 ██████████████ 12.4% (147)
记忆系统 ████████ 7.2% (85)
安全与对齐 ████ 1.3% (16)
按年份分布:
|
年份 |
论文数量 |
占比 |
备注 |
|
2022 |
89 |
7.5% |
Agent 概念兴起 |
|
2023 |
412 |
34.9% |
爆发期,ChatGPT 带动 |
|
2024 |
587 |
49.7% |
持续增长 |
|
2025(部分) |
93 |
7.9% |
最新进展 |
按研究方法分布:
LLM-based ███████████████████████████████████████ 71.2%
Fine-tuning ████████████████ 14.3%
Reinforcement ████████ 7.8%
Prompt Engineering████████ 6.7%

6.2 关键发现
发现一:多智能体协作成为新热点
2024 年的论文中,多智能体相关的占比明显上升。代表性工作包括 MetaGPT、ChatDev、AgentVerse 等。
发现二:工具学习是核心能力
约 15% 的论文专门研究 Agent 如何学习和使用工具。这个方向的突破让 Agent 从"能说"进化到"能做"。
发现三:应用场景多元化
早期 Agent 主要用于代码生成和问答,现在已经扩展到科学研究、机器人控制、游戏 AI、数据分析等。
6.3 高影响力论文 TOP 10
|
排名 |
论文 |
方向 |
引用数 |
|
1 |
ReAct: Synergizing Reasoning and Acting |
规划与推理 |
4521 |
|
2 |
AutoGPT: An Autonomous GPT-4 Experiment |
框架与平台 |
3208 |
|
3 |
Generative Agents |
多智能体协作 |
2893 |
|
4 |
ToolBench: Towards Automated Tool Learning |
工具学习 |
1856 |
|
5 |
HuggingGPT: Solving AI Tasks with ChatGPT |
框架与平台 |
1423 |
|
6 |
Voyager: An Open-Ended Embodied Agent |
应用场景 |
1234 |
|
7 |
Reflexion: Language Agents with Verbal RL |
规划与推理 |
987 |
|
8 |
CAMEL: Communicative Agents |
多智能体协作 |
876 |
|
9 |
WebGPT: Browser-assisted QA |
应用场景 |
765 |
|
10 |
Tree of Thoughts: Deliberate Problem Solving |
规划与推理 |
654 |


七、可视化地图
7.1 Open Science 的可视化方案
分析完数据后,我用 Open Science 的可视化功能生成了文献地图:
from open_science import Visualization
# 创建文献地图
viz = Visualization()
viz.add_papers(analyzed_papers)
viz.set_layout("force")
viz.set_node_size("citation_count")
viz.set_node_color("subdirection")
viz.save("llm_agent_map.html")
7.2 Canguo Science 的集成方案
我也尝试了 Canguo Science:
from canguo_science import LiteratureMap
# 初始化
lit_map = LiteratureMap(api_key=os.getenv("CANGUO_SCIENCE_KEY"))
lit_map.upload_papers(analyzed_papers)
# 生成地图
lit_map.create_map(
title="LLM Agent 文献地图",
clustering="subdirection",
layout="t-SNE"
)
lit_map.add_timeline(year_range=(2022, 2025))
lit_map.export("llm_agent_canguo.html")
两种工具各有特点:
|
特性 |
Open Science |
Canguo Science |
|
界面语言 |
英文 |
中文 |
|
交互性 |
强 |
强 |
|
部署方式 |
开源自托管 |
云服务 |
|
数据安全 |
完全可控 |
需上传数据 |
八、踩坑记录
坑一:论文分类不一致
同样的论文,不同 Prompt 得到不同分类。解决方法是固定分类体系,置信度低于 6 分的结果用第二个模型复核。
坑二:API 限流
批量调用时被限流,浪费大量时间。解决方法是实现令牌桶限流器:
import time
from collections import deque
class RateLimiter:
def __init__(self, max_calls: int, period: float):
self.max_calls = max_calls
self.period = period
self.calls = deque()
def acquire(self):
now = time.time()
while self.calls and self.calls[0] < now - self.period:
self.calls.popleft()
if len(self.calls) >= self.max_calls:
sleep_time = self.calls[0] + self.period - now
if sleep_time > 0:
time.sleep(sleep_time)
self.calls.popleft()
self.calls.append(time.time())
坑三:数据缺失
约 8% 的论文没有摘要。解决方法是标记缺失数据,分析时单独统计。
九、工具对比总结
经过这次完整的研究流程,我对几个工具有了更深入的了解:
|
工具 |
适用场景 |
推荐指数 |
个人体验 |
|
OpenAI API |
高质量生成、复杂推理 |
⭐⭐⭐⭐⭐ |
模型能力强,需要科学上网 |
|
Claude |
长文本分析、代码生成 |
⭐⭐⭐⭐⭐ |
上下文长,适合复杂任务 |
|
CanguoAI |
批量处理、结构化任务 |
⭐⭐⭐⭐ |
国内直达,性价比高 |
|
Open Science |
文献管理、可视化 |
⭐⭐⭐⭐ |
功能完整,开源可控 |
|
Canguo Science |
快速可视化、中文用户 |
⭐⭐⭐⭐ |
集成度高,上手快 |

我的选择:
• 日常研究:CanguoAI + Canguo Science(方便快捷)
• 重要论文:OpenAI + Open Science(质量优先)
• 敏感数据:Open Science 自托管(数据安全)
十、后续计划
这次分析只是第一步,后续我还打算:
- 持续更新:每月自动抓取新论文,更新地图
- 深入分析:对重点论文做全文精读
- 对比实验:测试不同 Agent 框架的效果
- 实践应用:基于分析结果开发自己的 Agent 系统
如果你也在做 LLM Agent 相关的研究,欢迎交流。
结语
LLM Agent 是 AI 发展的重要方向,文献量很大但并非无规律可循。通过系统化的分析,我们可以更快地把握领域全貌,找到自己的研究切入点。
这次研究让我有两点体会:
- 第一,工具选对事半功倍。不同的工具适合不同的场景,学会组合使用才能效率最大化。
- 第二,研究方法比工具重要。工具只是手段,真正有价值的是你的研究问题和思考方式。
希望这篇记录对你有帮助。如果有更多问题,欢迎继续交流。
声明:本文仅为个人研究记录,涉及的工具均为实际使用后的客观描述。CanguoAI、Canguo Science、Open Science 等名称仅为说明工具功能,不构成任何推荐。工具选择应根据实际需求和条件决定。
更多推荐


所有评论(0)