怎么可以有效利用 LLM 分析开源项目,如 Vue/React? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kenshinhu
0.01D
V2EX    机器学习

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

  •  
  •   kenshinhu 2024-08-30 10:53:02 +08:00 2184 次点击
    这是一个创建于 405 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在学习新框架的过程中,我想通过大语言模型( 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  
       2024-08-30 10:58:20 +08:00
    根本不看源码,前端的深度就那么点,有时间可以往理论或者广度扩展,比如计算机图形学,移动端开发,游戏引擎,系统设计,后端,界面交互设计,等等
    kenshinhu
        2
    kenshinhu  
    OP
       2024-08-30 11:02:29 +08:00
    @murmur 是的,我也是这样观点。但收限于个人的知识点,很多时候源代码是有对某些理论的应用,如果不知道这些理论就可能摸不着头脑。我的想法是有了这个组合策略就可以扩展抽象出源代码的体系,以突破个人的知识点限制。
    secondwtq
        3
    secondwtq  
       2024-08-31 04:14:16 +08:00
    个人觉得 AST 直接喂给 LLM 不太靠谱,应该说 AST 作为实现内部的细节,本身就没有固定表示(并且 serialize 成可读的文本之后会比源代码更加 verbose )。把 AST 里面提取的信息喂过去是可行的。

    另外一点是所有这些方案都是代码中的静态信息,但是可以考虑附加运行时动态信息,比如主要功能调用路径、状态的典型取值等。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3466 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 00:44 PVG 08:44 LAX 17:44 JFK 20:44
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86