V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kenshinhu
V2EX  ›  机器学习

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

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

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

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

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

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

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

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

    另外一点是所有这些方案都是代码中的静态信息,但是可以考虑附加运行时动态信息,比如主要功能调用路径、状态的典型取值等。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   946 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:42 · PVG 03:42 · LAX 12:42 · JFK 15:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.