【LangChain 实战】用 LangChain 为 LangChain 编写 TSDoc 注释
LangChain JS 的维护者 Jacob Lee 老师最近发布了一个非常棒的新工具,可以自动为 TypeScript 代码生成 TSDoc 注释。这可以极大地提高开源项目的可维护性和贡献者友好性。本文将详细介绍这个工具的工作原理。
原推:https://twitter.com/zhanghaili0610/status/1696010772315537814?s=20

整个工作流程可以划分为以下几个步骤(上图覆盖了前两个步骤):
将源代码文件传给检索式问答 Agent,给它一个针对技术写作人员的提示,要求其定义代码中涉及的 LangChain 专有术语。Agent 可以自主决定需要查阅哪些术语来理解代码。这里使用了之前构建的 Weaviate 向量索引,其中包含了 LangChain Python 文档,可以覆盖 JS/TS 实现和抽象的大部分内容。
使用 OpenAI Functions 并构造 Runnable Chain,将第一步生成的上下文以及原始代码作为输入,输出结构化的格式化数据,包含生成的注释内容、所注释的声明等信息。
对于每条生成的注释,使用 TypeScript 的 AST 解析接口,在源码中确定对应的声明的位置。
使用第 2 步生成的数据,生成实际的注释字符串。
将生成的注释拼接插入源代码文件相应位置,并写入文件系统。
整个流程使用了 LangChain 的模块化和组合性,通过 Runnable Map 和 RunnableSequence 可以非常灵活地将不同的步骤组合在一起。关键的 LLM 推理步骤使用了OpenAI API。
与直接让 LLM 生成整个文件的注释相比,这种结构化的流程可以避免一些常见的问题,如无法处理特殊术语、覆盖已有注释等。同时也更加高效,只需要针对必要的声明生成注释。
这个工具对于提高开源项目的可维护性和活跃度有非常大的帮助。它可以减轻维护者的负担,降低新贡献者的进入门槛。测试结果显示,对 LangChain.js 本身代码库使用这个工具就能自动生成数百个高质量的 TSDoc 注释!
总之,这是一个非常棒的项目,充分展示了 LangChain 在自动化文档和代码生成方面的潜力。结合检索问答、LLM 生成和编程接口,可以完成非常复杂的任务。期待 LangChain 团队未来会有更多像这样的创新项目!

