爱奇飞网

网站首页互联网 >正文

了解如何使用大型语言模型(LLM)和Langchain与您的代码对话

开心的月饼 2023-09-06 09:01:16 互联网

在编写代码时能够理解代码的复杂性是学习新编程语言的一个重要部分。由于人工智能技术的爆炸式增长,您现在可以与代码对话,在遇到困难时向它提问,并让它通过提供选项甚至为您编写建议来以最佳方式帮助您。

了解如何使用大型语言模型(LLM)和Langchain与您的代码对话

使用大型语言模型(LLM)和Langchain与代码存储库交互的能力已成为一项令人着迷的发展。PromptEngineering最近发布了一份深入研究该主题的指南,演示了如何使用Langchain和LLM为GitHub代码存储库创建问答系统。该系统允许用户与LangchainGitHub存储库聊天,但相同的代码示例可用于为任何代码库构建聊天系统。

该系统中使用的体系结构类似于用于与PDF文件等文档交互的体系结构。然而,在使用源代码时,上下文分割存在一个关键的区别。与传统文档中的文档拆分不同,代码使用的策略涉及将文件中的每个顶级函数分离到其自己的文档中。这种方法允许与代码进行更细粒度和特定于上下文的交互。

使用LLM和Langchain与您的代码对话

在YouTube上观看此视频。

您可能会发现有关使用ChatGPT和其他AI工具进行编码的主题的其他文章:

CodeLlama与ChatGPT编码的比较和测试

ChatGPT4与CodeLlama编码结果比较

如何使用ChatGPT编写代码

了解如何使用ChatGPT进行编码

如何将ChatGPT添加到VisualCodeStudio进行AI编码

10个ChatGPT代码解释器提示和技巧

为了实现这个系统,需要几个包。其中包括OpenAILLM、TickToken、VectorStore和ChromaDB,所有这些都是使用Langchain集成的。.EnV包还用于从.EnV文件加载OpenAIAPI密钥。

本指南中使用的代码示例是GitHub上的Langchain存储库。该存储库被下载并克隆到本地系统上以供进一步使用。然后使用通用加载器从存储库加载所有文档或Python文件。递归字符文本拆分器用于将这些文档拆分为块或子文档,以便于与代码进行更详细的交互。

为了在代码库上执行检索问答,使用OpenAI的嵌入计算嵌入并将其存储在Chroma矢量存储中。然后基于向量数据库创建检索对象以对嵌入执行向量搜索。使用的搜索类型是最大边际相关性(MMR),这可确保检索到的文档或块不是来自同一个Python文件。这种方法增强了搜索结果的多样性,提供了对代码更全面的理解。

对话检索链是使用ChatOpenAI、对话摘要记忆和对话检索链定义的。该系统能够根据代码库回答问题,并且由于内存组件可以记住之前的对话。此功能可以在与代码交互时提供更具交互性和吸引力的体验。

有趣的是,使用开源模型也可以实现同样的目的。具体来说,CodeLlama(一种13B模型)可用于创建类似的系统。这种灵活性证明了大型语言模型和Langchain在为代码存储库创建交互式系统方面的多功能性。

使用大型语言模型和Langchain与代码对话的能力是技术领域的重大进步。它不仅增强了与代码存储库的交互,还提供了对代码更全面的理解。无论您使用OpenAILLM还是CodeLlama等开源模型,可能性都是无限的。PromptEngineeringYouTube频道的指南和视频为有兴趣探索这一迷人领域的任何人提供了宝贵的资源。

什么是大语言模型?

大型语言模型(LLM)是一种机器学习模型,在大量文本数据上进行训练,以执行与自然语言理解和生成相关的任务。这些模型通常基于Transformer等架构,旨在处理各种NLP任务,例如翻译、摘要、问答等。

法学硕士的特点是其规模,包括训练数据和模型本身的规模。例如,像GPT-3或GPT-4这样的模型由数百或数千亿个参数组成。大量参数使模型能够捕获数据中更复杂的关系并产生更细致的输出。

该模型的架构和训练过程涉及学习在给定前面的标记的情况下预测序列中的下一个标记(例如,单词或子词)。这是通过在训练期间优化损失函数来完成的,其中将模型的预测与训练数据中的实际标记进行比较。

法学硕士具有广泛的应用,从自动化客户服务查询到协助科学研究。然而,它们也面临着挑战,例如可能产生误导性或不正确的信息,或者使训练数据中存在的偏见永久化。

什么是朗链?

LangChain是一个创新框架,旨在促进利用语言模型力量的应用程序的开发。与仅通过API与语言模型交互的传统设置不同,LangChain强调更加集成的方法。它通过将语言模型连接到各种数据源来鼓励应用程序具有数据感知能力,并通过使这些模型能够与其环境进行交互来实现代理。

该框架提供了两个主要价值主张。首先,它提供了一组对于使用语言模型至关重要的模块化组件,以及这些抽象的实现集合。这些组件的设计都是为了易于使用,无论开发人员是否选择使用整个LangChain框架。

其次,它引入了“用例特定链”的概念,它是由这些组件组装而成的更高级别接口,用于解决特定用例。这些链是完全可定制的,允许开发人员根据其特定需求定制框架。该框架的文档结构涵盖了这两个核心方面,提供与语言无关的指导,同时还为更定制的应用程序开发提供特定于语言的资源。欲了解更多信息,请跳转至官方文档。


版权说明:本站所有作品图文均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系我们


标签:

站长推荐
栏目推荐
阅读排行