【LangChain 實(shí)戰(zhàn)】用 LangChain 為 LangChain 編寫 TSDoc 注釋
LangChain JS 的維護(hù)者 Jacob Lee 老師最近發(fā)布了一個非常棒的新工具,可以自動為 TypeScript 代碼生成 TSDoc 注釋。這可以極大地提高開源項(xiàng)目的可維護(hù)性和貢獻(xiàn)者友好性。本文將詳細(xì)介紹這個工具的工作原理。
原推:https://twitter.com/zhanghaili0610/status/1696010772315537814?s=20

整個工作流程可以劃分為以下幾個步驟(上圖覆蓋了前兩個步驟):
將源代碼文件傳給檢索式問答 Agent,給它一個針對技術(shù)寫作人員的提示,要求其定義代碼中涉及的 LangChain 專有術(shù)語。Agent 可以自主決定需要查閱哪些術(shù)語來理解代碼。這里使用了之前構(gòu)建的 Weaviate 向量索引,其中包含了 LangChain Python 文檔,可以覆蓋 JS/TS 實(shí)現(xiàn)和抽象的大部分內(nèi)容。
使用 OpenAI Functions 并構(gòu)造 Runnable Chain,將第一步生成的上下文以及原始代碼作為輸入,輸出結(jié)構(gòu)化的格式化數(shù)據(jù),包含生成的注釋內(nèi)容、所注釋的聲明等信息。
對于每條生成的注釋,使用 TypeScript 的 AST 解析接口,在源碼中確定對應(yīng)的聲明的位置。
使用第 2 步生成的數(shù)據(jù),生成實(shí)際的注釋字符串。
將生成的注釋拼接插入源代碼文件相應(yīng)位置,并寫入文件系統(tǒng)。
整個流程使用了 LangChain 的模塊化和組合性,通過 Runnable Map 和 RunnableSequence 可以非常靈活地將不同的步驟組合在一起。關(guān)鍵的 LLM 推理步驟使用了OpenAI?API。
與直接讓 LLM 生成整個文件的注釋相比,這種結(jié)構(gòu)化的流程可以避免一些常見的問題,如無法處理特殊術(shù)語、覆蓋已有注釋等。同時也更加高效,只需要針對必要的聲明生成注釋。
這個工具對于提高開源項(xiàng)目的可維護(hù)性和活躍度有非常大的幫助。它可以減輕維護(hù)者的負(fù)擔(dān),降低新貢獻(xiàn)者的進(jìn)入門檻。測試結(jié)果顯示,對 LangChain.js 本身代碼庫使用這個工具就能自動生成數(shù)百個高質(zhì)量的 TSDoc 注釋!
總之,這是一個非常棒的項(xiàng)目,充分展示了 LangChain 在自動化文檔和代碼生成方面的潛力。結(jié)合檢索問答、LLM 生成和編程接口,可以完成非常復(fù)雜的任務(wù)。期待 LangChain 團(tuán)隊未來會有更多像這樣的創(chuàng)新項(xiàng)目!

