# 角色
你是一名顶级的软件架构师和AI工程师,精通使用LangGraph构建复杂的智能体(Agent),并且擅长规划和设计稳健、可扩展的软件项目。
# 背景与目标
我的母语不是英文。在学习编程的过程中,我发现大量优质的教程和文档都是以Jupyter Notebook(.ipynb)的形式提供的。为了帮助像我一样母语非英语的学习者跨越语言障碍,我希望你能帮我构思并设计一个自动化处理工具。
最终目标:开发一个基于LangGraph的智能体程序。这个程序能够接收一个Jupyter Notebook文件,并输出一个新的、增加了多语言辅助信息的版本,以帮助用户更轻松地学习和理解原始内容。
# 核心功能需求
1. Jupyter Notebook 文件处理:
* 输入: 一个标准的 .ipynb 文件。
* 输出: 在原始文件名后添加 _translated 后缀,生成一个新的 .ipynb 文件(例如,输入 tutorial.ipynb,输出 tutorial_translated.ipynb),原始文件保持不变。
* 核心解析能力: 程序必须能够准确解析 .ipynb 文件的JSON结构,区分Markdown单元格和代码单元格。处理完成后,必须能将内容重新组装成一个结构完整、格式正确的 .ipynb 文件。
2. Markdown单元格处理 (文本翻译与图片描述):
* 这是一个复合任务,需要在一个Markdown单元格内同时处理文本和图片。
* 文本翻译:
* 功能: 翻译Markdown单元格中的所有文本内容。
* 多语言支持: 程序应支持将文本翻译成多种目标语言,将“目标语言”作为一个可配置的参数(在本次开发计划中,请以“中文”作为默认目标语言)。
* 格式要求:
* 必须完整保留原始文本的所有Markdown格式,包括但不限于:标题层级 (#, ##)、链接 ([text](url))、粗体 (**text**)、斜体 (*text*)、列表等。
* 翻译后的文本应紧跟在原始文本段落下方,并添加明确标识,例如 **中文翻译:**。
* 图片描述:
* 功能: 在解析同一个Markdown单元格时,程序必须能够识别出所有插入的图片,无论其来源是本地路径、网络URL还是其他嵌入方式。
* 处理方式: 获取图片数据并调用多模态LLM(Vision Model)来理解、生成对图片内容的详细文字描述。
* 目标: 优先详细描述信息含量高的图片,如技术架构图、数据图表、流程图等。对于装饰性图片,也进行基本描述。不对图片内容做“有用/无用”的判断,对所有识别出的图片统一生成描述。
* 格式要求: 原始的图片插入语法保持不变,其文字描述应紧跟在图片下方,并添加明确标识,例如 **图片说明:**。
3. 代码单元格处理 (代码注释):
* 功能: 为代码单元格中的Python代码添加注释。
* 注释风格: 采用逐行详细注释。在关键或复杂的代码行上方或旁边,使用 # 添加解释该行代码功能的注释。
* 已有注释: 如果代码中已有英文注释,也需要将其翻译成目标语言。
# 技术与工具栈要求
- 核心框架: 必须使用 LangGraph 来构建整个处理流程的状态机/智能体。
- 信息检索: 在制定开发计划时,使用context7 的工具来查询和参考 LangChain, LangGraph 等相关库的最新官方文档,以确保设计方案的技术可行性和最佳实践。
# 任务
根据以上所有要求,为我创建一个详细的 项目开发计划的md文档保存在我本地。开发计划应至少包含以下部分:
- 项目概述: 简要描述项目的目标和最终交付成果。
- 技术选型: 列出推荐使用的核心库和工具(例如,解析
.ipynb的库,调用LLM的库等)。 - 架构设计:
- 使用LangGraph的整体架构图或流程说明。
- 定义State(状态),以及各个Node(节点)的功能。请特别注意处理Markdown单元格的节点,它需要有能力同时处理文本和图片。例如可以设计
parse_notebook,process_markdown_node,process_code_node,rebuild_notebook等节点。
- 开发步骤与优先级:
- 第一优先级 (基础): 详细说明如何实现对
.ipynb文件的可靠解析、内容提取与重组。 - 第二优先级 (核心功能): 并行开发文本翻译、图片描述和代码注释这三个核心功能模块的实现细节。
- 第一优先级 (基础): 详细说明如何实现对
- 关键代码示例/伪代码: 为关键步骤(如解析Markdown单元格并区分文本和图片、调用LLM、重组文件)提供伪代码或关键函数示例。
- 风险与挑战: 指出开发过程中可能遇到的潜在问题及解决方案(如,API速率限制、保持格式一致性的挑战、处理不同来源图片(本地路径、URL等)的统一访问机制、大文件处理等)。