AI Ping 赋能:基于 LangGraph 7 Agent + 通义千问打造智能学术文献写作平台
AI Ping 赋能:基于 LangGraph 7 Agent + 通义千问打造智能学术文献写作平台
本文介绍一款基于 AI Ping 平台搭建的智能学术文献写作平台 GradWrite,通过集成通义千问大模型、LangGraph 7 Agent 协作流水线与 RAG 检索增强技术,实现"选题分析 -> 大纲生成 -> 文献检索 -> 内容撰写 -> 格式编排 -> 质量审查"的全流程自动化写作体验。应用依托 AI Ping 提供的统一 API、智能路由与多模型生态能力,解决大模型学术写作开发中"模型集成繁、上下文丢失、学术规范性差"的核心痛点;借助 LangGraph 实现多 Agent 编排与人工审核暂停点,通过三层分块 RAG 提供精准文献支撑,最终为文献综述写作服务。
目前 AI Ping 正在进行Ping 友集结活动,新用户注册并认证即送10元算力金**。**
https://www.aiping.cn/#?invitation_code=UVA9AEURFI
邀请福利:邀友注册,双方各得10 元算力点(全场通用),GLM-5.1 等全模型免费调用!

一、GradWrite 应用展示
(一) 应用简介
GradWrite 是一款聚焦"中文文献综述写作场景"的智能写作平台,针对传统文献写作中"选题方向模糊、大纲结构混乱、文献检索低效、内容撰写缺乏学术支撑、降重 AIGC 优化缺失"的痛点,整合 AI Ping 平台的通义千问模型能力、LangGraph 多 Agent 编排能力与 RAG 检索增强技术,实现六大核心功能:
- 选题智能分析 — 自动输出选题范围、研究问题、创新点和研究方法建议;
- 三级大纲生成 — 自动生成 1/1.1/1.1.1 三级结构,支持人工审核后继续;
- 文献检索增强 — 上传文献 PDF/DOCX,三层分块(文档级/章节级/段落级)向量化检索;
- 逐章内容生成 — 章节类型感知的提示词设计(绪论/文献综述/方法论/主体章节/结论),内置 5 维度内容审查与自动修订;
- 智能降重 + AIGC 优化 — 4 档降重强度、3 档 AIGC 优化模式,段落级修改追踪;
- 格式编排与版本管理 — 支持 DOCX 模板上传、GB/T 7714 引用格式、版本化编辑(最多 20 个版本)。
应用后端采用 FastAPI + Python 3.11 + LangGraph 技术栈,前端采用 Vue 3 + TypeScript + Element Plus,整体架构轻量化且高性能,通过 SSE 流式实时推送生成进度,单章节响应时间控制在秒级。
(二) 核心功能演示
用户输入选题方向后,GradWrite 依次启动 7 个 Agent 协作流水线:选题分析 Agent -> 大纲生成 Agent -> (人工审核暂停点)-> 文献检索 Agent -> 内容生成 Agent -> 引用格式化 Agent -> 格式编排 Agent -> 质量审查 Agent。每一步都支持暂停、恢复、人工干预。

支持上传 PDF、DOCX 文件(最多 3 个,每个 50MB),系统自动解析文档、提取元数据(标题、作者、摘要),进行文档级->章节级->段落级的三层分块,调用通义千问 Embedding API 生成 1024 维向量,存入 Milvus 向量数据库,供内容生成时精准检索引用。

提供 4 档降重强度:轻度(同义词替换)、中度(句式重组)、深度(段落重排)、智能(LLM 逐段判断最佳改写策略),并附带全文连贯性润色和降重前后重复率预估。

提供 3 档优化模式:轻度(替换高频 AI 句式)、中度(调整句子节奏、增加人性化变化)、深度(整体重写,模拟人类写作风格),专门针对 AI 生成文本的模式化过渡词、过度对称结构、空泛学术表达进行优化。

二、AI Ping:GradWrite 的核心 AI 基础设施
作为连接通义千问模型与 GradWrite 业务系统的核心桥梁,AI Ping 平台凭借"评测 + 调用 + 智能路由"的一体化 MaaS 服务,成为 7 Agent 流水线稳定运行的关键保障,解决了大模型文献写作开发中的三大核心痛点。
(一) 为什么选择 AI Ping?
在 GradWrite 开发初期,直接对接通义千问官方 API 面临以下问题:
- 模型切换成本高:不同模型接口协议、计费方式不统一,若后续需要对比多种模型(如 GLM、Kimi、通义),需为每种模型编写独立适配代码;
- 高峰期稳定性差:文献写作场景下"多用户、高并发"调用时,单一供应商易出现延迟飙升、超时失败,影响流水线执行体验;
- 成本管控难:7 Agent 流水线意味着每次文献生成至少 7 次 LLM 调用,加上 RAG 嵌入、内容审查(每章内部 Review 最多 2 轮),单次文献生成的 API 调用量可达 20+ 次,缺乏灵活计费模式易导致成本失控。
AI Ping 恰好破解这些痛点——通过统一 API 对接所有模型供应商,依托智能路由动态选择最优供应商,让开发者专注于业务逻辑而非底层模型适配。

(二) AI Ping 对 GradWrite 的核心赋能
AI Ping 将所有模型接口标准化为兼容 OpenAI 的格式,GradWrite 只需接入一次 AI Ping 统一 API,即可无缝调用通义千问、GLM-5.1 等数十款模型。
实际代码中,GradWrite 的 QwenLLM 类仅需配置 base_url 和 api_key 即可实例化 LLM 客户端,无需关心底层供应商差异:
# backend/app/core/config.py
QWEN_API_KEY: str = "QC-xxx" # AI Ping 提供的 API KEY
QWEN_BASE_URL: str = "https://www.aiping.cn/api/v1" # AI Ping 统一 API 地址
# backend/app/llm/qwen.py
from openai import AsyncOpenAI
class QwenLLM(BaseLLM):
def __init__(self, model: str = "Qwen3.5-Flash", embedding_model: str = "Qwen3-Embedding-8B"):
self.model = model
self._client = AsyncOpenAI(
api_key=settings.QWEN_API_KEY,
base_url=settings.QWEN_BASE_URL,
)
async def generate(self, messages: list[dict], **kwargs) -> str:
response = await self._client.chat.completions.create(
model=self.model,
messages=messages,
**kwargs,
)
return response.choices[0].message.content
async def generate_stream(self, messages: list[dict], **kwargs) -> AsyncIterator[str]:
stream = await self._client.chat.completions.create(
model=self.model,
messages=messages,
stream=True,
**kwargs,
)
async for chunk in stream:
if chunk.choices[0].delta.content:
yield chunk.choices[0].delta.content
相比直接对接各供应商接口,开发效率提升约 90%,且后续切换到 GLM-5.1、Kimi 等模型只需修改 model 参数,无需改动业务代码。
AI Ping 实时监控各供应商的 P90 延迟、吞吐量、可靠性等核心指标,在文献生成高并发时段自动切换至低延迟供应商,在平峰时段切换至性价比更高的选项。GradWrite 的 7 Agent 流水线无需任何人工干预即可保持稳定响应。
AI Ping 平台定期更新部分模型免费使用,包括 GLM-5.1 等旗舰模型都可在平台上免费调用。当前活动:
- 邀友各得 10 算力:邀请好友注册,双方各得10 元算力点,全场通用;
- 全模型免费通用:算力点可用于 GLM-5.1、通义千问、Kimi-K2-Thinking 等 400+ 模型,不限制模型种类。
对于学生开发者或小团队来说,GradWrite 这种 7 Agent 架构的生成式应用天然就是"算力消耗大户",通过邀请裂变,几乎可以零成本获得充足的模型调用额度,并且调用消耗的算力点真的很少,省上加省!

三、技术实现流程:LangGraph 7 Agent + 通义千问 + AI Ping
(一) AI Ping 注册与配置
- 获取 API KEY:登录 AI Ping 平台,在个人中心复制自动生成的 API 密钥;

- 模型配置:在 AI Ping 平台选择目标模型(如通义千问 Qwen3.5-Flash),确认统一 API 调用地址
https://www.aiping.cn/api/v1,在平台探索模型页面可找到 API 示例说明。

(二) 核心代码解析
所有 Agent 共享同一个 LLM 实例,通过 AI Ping 统一 API 调用通义千问:
backend/app/llm/factory.py
from app.llm.qwen import QwenLLM
def create_llm(model: str = "Qwen3.5-Flash") -> QwenLLM:
return QwenLLM(model=model)
backend/app/graph/paper_graph.py
from langgraph.graph import StateGraph, END
from app.agents.topic import TopicAnalysisAgent
from app.agents.outline import OutlineAgent
from app.agents.literature import LiteratureAgent
from app.agents.content import ContentAgent
from app.agents.citation import CitationAgent
from app.agents.formatting import FormattingAgent
from app.agents.quality import QualityAgent
def build_paper_graph():
graph = StateGraph(PaperState)
# 注册 7 个 Agent 节点
graph.add_node("topic_analysis", TopicAnalysisAgent.execute)
graph.add_node("outline_generation", OutlineAgent.execute)
graph.add_node("literature_search", LiteratureAgent.execute)
graph.add_node("content_generation", ContentAgent.execute)
graph.add_node("citation_formatting", CitationAgent.execute)
graph.add_node("formatting", FormattingAgent.execute)
graph.add_node("quality_check", QualityAgent.execute)
# 编排流水线 + 暂停点
graph.set_entry_point("topic_analysis")
graph.add_edge("topic_analysis", "outline_generation")
graph.add_conditional_edges("outline_generation",
lambda s: "user_review" if s.get("wait_for_review") else "literature_search")
graph.add_edge("user_review", "literature_search")
graph.add_edge("literature_search", "content_generation")
graph.add_edge("content_generation", "citation_formatting")
graph.add_edge("citation_formatting", "formatting")
graph.add_edge("formatting", "quality_check")
graph.add_edge("quality_check", END)
# 状态持久化 + 中断支持
return graph.compile(checkpointer=MemorySaver(), interrupt_before=["user_review"])
内容生成是 7 Agent 中计算最密集的一环,逐章生成并内置 Review 审查循环:
backend/app/agents/content.py
class ContentAgent(BaseAgent):
async def execute(self, state: PaperState) -> dict:
chapters = state["outline"]["chapters"]
literature = state["literature"] # RAG 检索到的文献片段
result = []
for chapter in chapters:
# 章节类型感知提示词
chapter_type = self._detect_chapter_type(chapter)
prompt = self._build_prompt(chapter, chapter_type, literature)
# 流式生成内容
full_content = ""
async for token in self.llm.generate_stream([{"role": "user", "content": prompt}]):
full_content += token
# SSE 推送流式内容到前端
yield {"content_stream": token}
# 内置 5 维度审查(深度/逻辑/结构/学术性/长度)
score = await self._review_chapter(full_content, chapter)
if score < 70:
# 自动修订(最多 2 轮)
full_content = await self._revise_chapter(full_content, score)
result.append({"chapter": chapter["title"], "content": full_content, "score": score})
return {"chapters": result}
前端通过 SSE(Server-Sent Events)订阅实时流式输出,用户可边生成边阅读:
backend/app/api/v1/tasks.py
@router.get("/stream/{task_id}")
async def stream_paper(task_id: str, current_user = Depends(get_current_user)):
"""SSE 流式接口"""
async def event_generator():
manager = SSEManager.get_manager()
async for event in manager.stream_events(task_id):
yield f"data: {json.dumps(event)}\n\n"
return EventSourceResponse(event_generator())
文档上传后,GradWrite 执行三层分块策略,将文献内容向量化存入 Milvus:
backend/app/services/document_parser.py
class DocumentParser:
def parse(self, file_path: str) -> list[TextChunk]:
doc = self._load_document(file_path) # PyMuPDF / python-docx
chunks = []
# Level 1: 文档级(标题 + 作者 + 摘要)
chunks.append(TextChunk(
level="document",
title=doc.title,
content=f"{doc.title}\n{doc.authors}\n{doc.keywords}\n{doc.abstract}",
metadata={"file": doc.filename}
))
# Level 2: 章节级(标题 + 首尾各 200 字符)
for section in doc.sections:
content = section.content
chunks.append(TextChunk(
level="section",
title=section.title,
content=f"{section.title}\n{content[:200]}...\n...{content[-200:]}",
metadata={"file": doc.filename, "section": section.title}
))
# Level 3: 段落级(保留公式/表格边界)
for paragraph in doc.paragraphs:
chunks.append(TextChunk(
level="paragraph",
title=None,
content=paragraph.text,
metadata={"file": doc.filename, "section": paragraph.section}
))
return chunks
async def embed_and_store(self, chunks: list[TextChunk]):
"""调用 AI Ping Embedding API + Milvus 存储"""
texts = [c.content for c in chunks]
embeddings = await self.llm.embed(texts) # Qwen3-Embedding-8B, 1024 维
self.milvus_client.insert(chunks, embeddings) # IVF_FLAT 索引, IP 相似度
四、总结与扩展
(一) 核心价值
- 学术质量保障:7 Agent 流水线覆盖文献写作全流程,内置 5 维度内容审查与自动修订,确保生成内容符合中文学术规范;
- 开发效率高:AI Ping 统一 API 让通义千问多供应商集成成本降低约 90%,无需关注底层接口差异;
- 交互式写作:LangGraph 的 interrupt 机制支持在大纲阶段人工审核,后续每步可暂停/恢复/修改;
- 成本可控:AI Ping 智能路由动态选择供应商,平峰期成本降低 30% 以上,结合邀友活动,学生开发者可零成本起步。
(二) 扩展方向
- 多模型对比:基于 AI Ping 统一 API,仅需修改配置即可切换 GLM-5.1、Kimi-K2-Thinking 等模型,对比不同模型的写作质量;
- 更多学科模板:扩展至理工科、经管、法学等更多学科的专业写作模板;
- 移动端适配:对接小程序,方便学生随时随地查看文献进度、审核大纲;
- 团队协作模式:支持导师和学生协同写作,导师端实时查看进度并批注反馈。
五、参考资料
- AI Ping 官网:https://www.aiping.cn
- AI Ping 开发者文档:https://www.aiping.cn/docs/product
- LangGraph 官方文档:https://langchain-ai.github.io/langgraph/
- 通义千问模型介绍:https://help.aliyun.com/zh/model-studio/
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)