怎么可以有效利用 LLM 分析开源项目,如 Vue/React?

19 天前
 kenshinhu
最近在学习新框架的过程中,我想通过大语言模型( LLM )来强化对项目源代码的理解。我发现 Claude 可以将代码块通过 Mermaid 转换成图形,这无疑能让开发者更好地学习和理解代码模块。

然而,由于 LLM 有 Token 数量的限制,开源项目的文件和代码量通常很大,直接将完整代码提供给 LLM 进行分析并不现实。

如果手动分段和汇总代码,操作也不太现实(当代码量很大时,多个 LLM 会话还是需要手动处理)。

我发现编译过程中有一个抽象语法树( AST )的概念,可以解析代码,生成一种结构化表示,便于理解代码各部分的关系。通过 AST 可以很容易提取函数、类、变量等信息。

尽管将代码转成 AST 之后再让 LLM 理解是一种抽象的解决方案,但这种方法可能依然会超出 Token 的限制。

像通过 CodeBERT 结合 RAG 这样的方案,虽然可以通过代码的特定标识做检索,但不能在抽象理解后让 LLM 再次处理。

关于这种组合策略,还有哪些其他方向可以考虑?
969 次点击
所在节点    机器学习
3 条回复
murmur
19 天前
根本不看源码,前端的深度就那么点,有时间可以往理论或者广度扩展,比如计算机图形学,移动端开发,游戏引擎,系统设计,后端,界面交互设计,等等
kenshinhu
19 天前
@murmur 是的,我也是这样观点。但收限于个人的知识点,很多时候源代码是有对某些理论的应用,如果不知道这些理论就可能摸不着头脑。我的想法是有了这个组合策略就可以扩展抽象出源代码的体系,以突破个人的知识点限制。
secondwtq
19 天前
个人觉得 AST 直接喂给 LLM 不太靠谱,应该说 AST 作为实现内部的细节,本身就没有固定表示(并且 serialize 成可读的文本之后会比源代码更加 verbose )。把 AST 里面提取的信息喂过去是可行的。

另外一点是所有这些方案都是代码中的静态信息,但是可以考虑附加运行时动态信息,比如主要功能调用路径、状态的典型取值等。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1068972

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX