作者 | 崔皓
【LangChain实战:大语言模型理解代码库】审校 | 重楼
摘要随着LLM(大语言模型)的发展,最近流行起利用大语言模型对源代码进行分析的潮流 。网络博主纷纷针对Github Co-Pilot、Code Interpreter、Codium和Codeium上的代码进行分析 。我们也来凑个热闹,利用AI target=_blank class=infotextkey>OpenAI 的GPT-3.5-Turbo和LangChain对LangChain的源代码进行分析 。
开篇众所周知,作为程序员经常会和源代码打交道,很多情况下,当程序员遇到新代码库,或者是遗留项目的代码库,都有些手足无措 。特别是要在已有的代码库中进行修改,那更是举步维艰,生怕走错一步成千古恨 。例如:不清楚类,方法之间的关系 , 不清楚函数之间的业务逻辑 。不过现在不用担心了,有了大语言模型的加持,已让阅读代码不是难事,对代码库的整体分析也是小菜一碟 。
总结来说,可以通过大语言模型进行如下操作:
1. 通过对代码库进行问答 , 以了解其工作原理 。
2. 利用LLM提供重构或改进建议 。
3. 使用LLM对代码进行文档化 。
今天我们就从代码库问答开始,带大家手把手编写代码库问答的程序 。
整体介绍首先,我们来整理一些思路,如图1 所示 。我们会先下载LangChain的源代码,将source code的目录以及目录下面的所有源代码文件保存到磁盘上 。然后再对其进行加载和转换,也就是图中红色的部分 。将这些代码文件切割成小的文件块,用来Embedding操作 。也就是将其嵌入到向量数据库中 , 即图中橙色的部分 。接着,图中最右边用户会请求大模型,这里的模型我们使用GPT-3.5-Turbo,请求模型提问与LangChain源代码相关的问题,例如:“在LangChain中如何初始化ReAct agent “ 。此时,GPT-3.5-Turbo的大语言模型会从向量数据库中获取相关信息,并且返回给用户 。
文章插图
图1 源代码库提问思路整理
具体来说,可以采用一种分割策略,其机制由如下几个步骤组成:
1. 将代码中的每个顶级函数和类加载到单独的文档中 。
2. 将剩余部分加载到另一个独立的文档中 。
3. 保留关于每个分割来自何处的元数据信息 。
不过,这些步骤都是由LangChain内部机制实现的,我们只需要调用简单的代码就可以完成 。
整个代码的构建和处理过程如上面图1 所示,接下来我们就可以编写代码,大概会分如下几个步骤:
- 下载LangChain代码
- 在VS Code导入代码
- 安装相关依赖
- 装载LangChain的源代码文件
- 切割文件
- 嵌入到向量数据库
- 利用大模型进行查询
- 返回查询结果
下载LangChain代码首先,有请我们的主角LangChain源代码登场 。如图2 所示,可以通过访问地址:https://github.com/langchain-ai/langchain,来查看源代码库 。
文章插图
图2 LangChain源代码库
当然可以通过Clone方法下载代码,或者使用如图3所示的方式 , 直接下载zip包然后解压 。
文章插图
图3 下载LangChain源代码
下载之后进行解压,请记住解压的目录后面会用到 。
在VS Code导入代码在解压LangChain的源代码库之后 , 将其导入到VS Code中 。如图3 所示,在VS Code中加载,在LANGCHAIN-MASTER目录下面的 /libs/langchain/langchain下面就是我们的目标目录了 。里面存放着LangChain的源代码 , 接下来就需要对这个目录进行扫描读取器中的文件 。
文章插图
图3LangChain代码库所在位置
安装相关依赖在对代码库进行加载之前,我们先创建对应的Jupyter Notebook文件 。如图4 所示,为了方便我们在源代码的根目录下面创建chat_with_code.ipynb文件 。
文章插图
图4 源代码文件结构
在文件中加入一些依赖包如下,分别加载了OpenAI的包,它是用来应用GPT-3.5-Turbo模型的 。TikToken 是用来处理NLP(自然语言处理)任务的 , 例如:分词,嵌入,计算文本长度 。ChromDB 是向量数据库的包,源代码文件会保存在这里,以便后续查询 。另外,LangChain的包是进行一些操作的脚手架,少了它程序玩不转 。
推荐阅读
- Docker优秀实践:掌握这七个技巧让你成为容器化大师
- 17名医生都没能诊断出的病,竟被ChatGPT破解,AI医疗的潜力有多大?
- 大白话说明白K8S的PV / PVC / StorageClass
- 手镯大小、形状与材质:和谐搭配的关键
- 曝霍启山和何超欣联姻,差三辈被质疑,三大因素注定霍家门不易进
- 28岁男星否认出轨!狗仔偷拍导致大乌龙,直指女友是出轨对象
- 于和伟这位大器晚成的演员备受欢迎,祝福他越来越好
- 大厨绝招 巧用蚝油添鲜味
- 大厨醒你 煮食秘籍
- 秋喝“大枣姜汤”暖手脚!