之前写了一个开源的长文本的代码阅读 ,其实很流程很简单的,如果使用langchain是可以很快解决这个问题的。我目前也是用自己写的python langchain来实现阅读代码,舒服的一批!地址我再发一下
https://github.com/xsser/codechai
BUG
但是这个脚本有一个bug,是我认知上错误导致的,我以为llm的token就是单个字母,导致我在截断最大文本的时候搞错了。
其实:200K*表示大约150K个单词或680K个Unicode字符。
而且,每个品牌实现的方式不一样,anthropic和openai实现token的代码逻辑 也是不一样的。
以下是一个利用官方sdk来实现一个数token的方法,只要把loade后的document转成string丢进去就行了。
from anthropic import Client
def count_tokens(text):
client = Client(api_key=anthropic_api_key)
tokens = client.count_tokens(text)
return tokens
这也是我后期要修复的一个问题
其实我一直在玩langchain和llamaindex,之前用的llamaindex,但是langchain loader更多,我就换了阵营。
RAG杂谈
我想说的是目前市面上的RAG技术都是有问题的,总归问答出来的问题都是怪怪的不舒服。什么反省、状态机、qa拆分、使用元数据注解来结构化文档巴拉巴拉,你能听到的RAG,我都接触了下,结果就是毛用没有,至少对我一个程序员的需求来说,是这样的,因为我不需要大量的文档阅读,我更喜欢自动化的去阅读代码,从代码里告诉我架构如何,有什么精彩的设计的地方,或者是让llm 帮我自动化根据某个框架编写代码,我也不需要什么IDE预测我的编写代码。
之前很火的破解copolit那个帖子,你想想它为什么设置缓存和边界?本质就是一个RAG技术啊!用过copolit的人,你敢说它100%预测正确?我都用过!有的时候预测正确,而且代码质量不高。所以这个玩意儿就是要亲自去实践才知道,不要老看别人写了一个很很牛逼的帖子 就觉得方向对。
langchain生态
langchain其实很强,强到可怕啊,国内的应用层生态和国外的langchain比,那简直。。。langchain已经出了smith、graph、flow,flow已经很方便的可以让人构建一个llm应用了。smith可以debug, graph做状态机RAG。
国内因为商业需要 都在卷rag,我觉得llm发展速度很快就可以实现很大的上下文了,这个对rag来说是降维打击,有量子传输门还要啥自行车。
目前的gemini pro 1.5和claude haiku已经可以实现阅读一个中等项目的代码了。
现在的我已经实现基于langflow的 github代码阅读,只要加以扩展就可以实现自动化的订阅我star的项目解读 并且发送到我手机上进行问答,未来编程和学习就会很方便,可以这么说,未来是谁拥有足够的数据了,构建llm很简单。
原文始发于微信公众号(xsser的博客):利用llm api 长文本阅读代码和学习
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论