最新anghain开发应用程序系列(一):快速入门篇windpoplar

要想开发出优秀的AI应用程序,除了有性能强大的大语言模型(后续简称LLM)作基础,优秀的提示词工程技术,借助检索增强生成从外部知识库获取LLM不具备的专有知识,通过智能体对接外部工具扩展LLM能力,缺一不可。此外AI应用程序通常都需要经过多轮提示以及解析输出,并有机连接成一个整体,本质上是个链的过程,如何快速高效实现也是一个问题。

基于以上这些痛点,哈里森·蔡斯 (Harrison Chase) 于2022年10月创建了LangChain,使我们能更方便和快捷的开发出功能强大的AI应用程序。可以说,LangChain是目前最强的AI应用程序开发框架之一,从Java程序员的视角来说,它的地位就相当于Java界的Spring一样。

如何学习LangChain,官网上的使用说明文档最权威,但是官网文档的一大特定或者说是弊端就是,知识点不聚焦,比较零散,初学者一上来很难抓住重点。此外LangChain迭代速度很快,网上虽然也有不少此类文章,但大部分都有所过时。

基于此,我实践并整理了最新版的LangChain结合国内性价比最高的智谱AI GLM-4大模型的系列文章,希望能给大家起到一定的参考作用,同时也欢迎共同探讨。本篇文章是第一篇,从零开始带大家快速入门LangChain开发AI应用程序。

二、LangChain简介

LangChain本质上是一个用于开发由LLM驱动的应用程序的框架。它通过连接LLM和外部一切可以利用的能力,给应用程序赋能,使得应用程序能够具备上下文意识和推理能力。

整个LangChain由六层组成,架构图如下。

最底层是协议层,包括LangChain表达语言(LCEL)和一些基础抽象类。主要是提示词模板、输出解析器、链的抽象类,通过LCEL语法以及管道的概念,来简化代码的开发。

第二层是集成组件层,包括各种大语言模型输入输出、外部知识库检索、智能体工具等第三方集成。具体的比如智谱AI大语言模型包装类、嵌入模型HuggingFaceEmbeddings、向量数据库FAISS等,都在这一层。

第三层是认知架构层,包括构成应用程序认知架构的链、智能体和检索策略。主要是链(Chains)、智能体(Agents)和检索策略的具体实现类。

第四层是应用模板层,包括各种参考应用模板。有多种可以快速运行部署的应用示例,参考价值还是比较高的。

第五层是部署层,LangServe,是一个用于将LangChain部署为REST API的库。

第六层是表现层,LangSmith,一个开发平台,允许调试、测试、评估和监控LangChain应用。

三、环境准备

在使用LangChain进行AI应用程序开发前,需要准备好相应的开发环境,包括Conda、Jupyter Notebook、使用的智谱AI GLM-4大模型。

1、安装Conda

使用Python的人都会遇到库的安装、环境的管理问题,Conda就是解决这些问题的一个工具,目前有AnaConda和MiniConda两种,都是Continuum Analytics的开源项目。这两种的区别就是:AnaConda大而全,预装了大部分科学计算库(99%其实用不上),提供了图形界面,适合初学者;MiniConda小而精,只有命令行。个人推荐使用MiniConda,比较轻量,节省时间和空间,需要什么再安装就可以。

创建虚拟环境:

激活虚拟环境:

2、安装Jupyter Notebook

为了能更方便编程和调试,及时执行代码块,我们使用Jupyter Notebook来作为Python集成开发工具。

在虚拟环境中安装Jupyter Notebook:

启动Jupyter notebook:

3、安装LangChain

在Jupyter Notebook中进行操作,安装LangChain的最小集。

4、调用智谱AI的GLM-4大模型

LLM的选择有多种方案。

方案一:远程调用OpenAI的ChatGPT系统API,效果较好,token花费较贵;

方案二:远程调用智谱AI的GLM-4的API,效果较好,token花费较低;

方案三:本地部署开源大语言模型ChatGLM3-6B,效果较差,不需要收费,但电脑需要有13GB以上的GPU。

下面的操作都在Jupyter Notebook中进行。

安装智谱的SDK包:

由于最新的LangChain 0.1.7集成的ChatZhipuAI类和最新zhipuai SDK版本兼容性方面有问题,需要重新包装一个类。代码如下:

创建调用的对话大模型对象,api key需要修改成你自己的:

四、AI应用程序开发入门

环境准备好之后,就可以开始使用LangChain进行AI应用程序开发了。LangChain其实就是通过各种链(Chain)将外部数据和计算连接到LLM,从而构建面向AI的应用程序。AI应用程序开发的入门,介绍了简单LLM链、检索链、智能体三个示例程序,通过一步一步操作,让大家快速入门。

1、简单LLM链(LLM Chain)

1)上面已经安装并创建了智谱AI大模型,现在可以直接调用它。

结果:

2)在LangChain中,可以使用提示词模板,将原始用户输入转换为更好的 LLM 输入。提示词模板是LangChain的一大提效法宝。

然后可以将提示词、LLM组合成一个简单的LLM链。Chain是LangChain的核心,最新的版本使用了Unix经典的管道方式来连接,相比之前简洁了很多。

调用LLM链。

结果:

3)可以看到,输出结果是一个AIMessage消息对象。很多情况使用字符串要方便得多,可以添加一个字符串输出解析器来将聊天消息转换为字符串。输出解析器也是LangChain的一大提效法宝。

输出结果变成了字符串类型:

本示例通过提示词模板、LLM、输出解析器,以管道的方式组成一个链,可以快速的调用AI大模型,实现一个简单的AI应用程序。

2、检索链(Retrieval Chain)

之前简单LLM链示例里问的问题(“langsmith 如何帮助测试?”),完全是依赖大语言模型已有的知识来进行回答。当我们有更专业更准确的知识时,可以通过检索的方式从外部获取最相关的知识,然后作为背景知识传递给大语言模型,来获得更精准的结果。

1)首先从互联网获取数据

需要先安装BeautifulSoup:

2)接下来需要使用嵌入模型进行向量化,再存储到向量数据库。

因为OpenAIEmbeddings嵌入模型需要和OpenAI ChatGPT配套使用。我们换成更通用的HuggingFaceEmbeddings。

现在可以使用此嵌入模型将文档提取到向量存储中了,为了简单起见,使用了本地向量数据库FAISS 。

首先安装FAISS所需的软件包:

然后在向量数据库中建立索引:

首先,建立一个文档链,该链接受问题和检索到的文档并生成答案。

调用检索链,得到答案。

结果:

本示例首先获取外部互联网页面数据,经过嵌入模型对数据进行向量化,存储到向量数据库,当用户输入提示词时,到向量数据库中获取相关信息作为背景知识一起输入给LLM,最后LLM输出更准确的信息。通过这种检索增强生成的方式,可以方便的构建一些面向特定私有化知识领域的专用AI应用程序。后续会有一篇文章专门深入的介绍检索增强生成方面的应用。

3、智能体(Agent)

所谓智能体,实际上是指预先提供多种工具(tools),智能体调用LLM根据我们的问题决定使用某种工具,进而调用工具获得需要的信息,再把需要的信息发送给LLM,获得最终结果。工具可以是LangChain内置的工具,也可以是自定义的工具,比如通过网络进行搜索获取信息的工具、数学计算的工具、我们自己定义的特定功能函数等。

在这个示例中,我们给智能体提供了两个工具:一个是刚才创建的有关 LangSmith的检索器,另一个是能够回答最新信息的搜索工具。

1)首先,为刚才创建的检索器设置一个工具,名字叫"langsmith_search":

然后设置为环境变量:

创建搜索工具:

3)创建智能体使用的工具列表:

4)接下来可以创建智能体来使用这些工具。

首先安装langchain hub,这个网站上提供了很多提示词模板,可以直接使用。

获取提示词和创建智能体执行器。这里做了些优化,create_openai_functions_agent换成了create_openai_tools_agent,"hwchase17/openai-functions-agent"换成了"hwchase17/openai-tools-agent"。

4)现在可以调用智能体了。先向它询问有关 LangSmith 的问题:

结果如下,可以看到LLM先根据问题确定要使用"langsmith_search"工具,然后LangChain调用"langsmith_search"工具从向量数据库中获得相关信息,最后返回信息给LLM得到最终结果。

5)再询问下天气情况:

结果如下,可以看到LLM先根据问题确定要使用"tavily_search_results_json"工具,然后LangChain调用"tavily_search_results_json"工具从互联网上获得相关信息,最后返回信息给LLM得到最终结果。

本示例通过给智能体提供多种工具(有关LangSmith的检索器、回答最新信息的搜索工具),智能体调用LLM根据我们的问题决定使用某种工具,进而调用工具获得需要的信息,再把需要的信息发送给LLM,获得最终结果。通过这种工具增强的方式,可以构建集成特定应用的AI应用程序,比如在应用程序中集成在线购物、自定义的数据计算等实用功能。后续会有一篇文章专门深入的介绍智能体工具方面的应用。

五、总结

首先对LangChain做了介绍,LangChain是哈里森·蔡斯 (Harrison Chase) 于2022年10月创建的,对于AI应用程序开发来说,它的地位就相当于Java界的Spring。LangChain的整体架构分为六层,它的核心概念就是链,链接外部一切能链接的东西赋予LLM力量。

然后从零基础开始介绍了LangChain环境的安装和配置,包括Conda、Jupyter Notebook、LangChain,以及智谱AI GLM-4在LangChain的最新调用API。

最后再通过LLM链、检索链、智能体三个经典的示例,带大家一步一步的快速上手了提示词模板、输出解析器、管道、LLM链、检索链、智能体等功能的使用和开发。

THE END
0.人工智能(普通本科)专业介绍毕业生主要从事智能制造业、互联网企业、通信行业相关的工作,具体岗位如:AI应用工程师、数据分析师、智能系统集成工程师、技术支持工程师等,也可到高新技术产业、政府机关、科研机构、学校等从事本专业领域的设计、开发、研制、应用、维护、管理和教学等工作,还可继续攻读智能科学与技术相关技术学科、交叉学科的硕士学位jvzquC41|u4mprxv0gjv0ls1kplp1:553183:B3jvo
1.AI应用案例全景分析:从理论到实践ai应用分析本报告将深入探讨AI在多个领域的典型应用案例,通过代码实现、流程图解析和可视化展示,全面呈现AI技术的实际应用价值。我们将覆盖计算机视觉、自然语言处理、推荐系统、医疗健康、金融科技、自动驾驶、智能制造和农业科技等八大领域,每个案例都包含技术原理、实现代码、流程图和效果分析。jvzquC41dnuh0lxfp0tfv8|{y~d9A<1ctzjeuj1fgzbkux137613A7:2
2.人工智能实验室实验室简介: 成都信息工程大学计算机学院人工智能实验室(地址:HSZXB210、HSZXB213)为计算机学院的人工智能学科方向提供课程实践及教学支持。主要是云计算、数据分析相关课程与研究方向为主、多学科综合应用相结合的专业实验室,主要为智能科学与技术、计算机科学与技术专业的课程提供专业开发环境。 jvzquC41lupy{7hwkv4ff~3ep1oohx4329803A;:0jzn
3.学院简介成都锦城学院计算机与软件学院简介 一、概况 计算机与软件学院自2005年我校建校之际同时成立,目前专业设置有6个本科专业:计算机科学与技术(四川省教育厅“卓越工程师计划专业”,AI赋能特色专业)、网络工程(学业与职业并重,迈普、讯方、华为ICT学院等多企业合作共建专业)、软件工程(四川省教育厅“综合改革试点专业”、四川省教育厅“应用型示范专业” jvzquC41lupy{7hflei/gmz0ep5y{pp1z{pk0qyo
4.信息工程学院专业介绍湖北职业技术学院一、学院简介 信息工程学院是湖北职业技术学院电子信息高水平专业群建设学院,开设有计算机应用技术、计算机网络技术、软件技术、大数据技术、人工智能技术应用、移动互联应用技术等6个专业。其中软件技术为国家级骨干专业、省级品牌专业,软件技术(人工智能技术与应用方向)团队荣获国家级职业教育教师教学创新团队,建有软件技术专jvzquC41lm4idye0gjv0ls1kplp1:5:71873<3jvo
5.人工智能简介学科前沿信息教研组学科阵地人工智能简介 人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图jvzquC41yy}/esx{gf{/exr1zm€e1}l{|5ymz~;1euovnsva5=:9B8
6.学院简介(2)培养目标:培养掌握数学、自然科学和机器人领域所需的机械设计、自动控制、传感检测、机器人技术、人工智能等理论知识和实践技能,具备机器人领域设计研发、系统集成、生产制造、调试维护和创新应用等工程能力,能够运用相关理论和方法解决机器人应用领域复杂工程问题的高素质应用型人才。 (3)主要课程:机器人学,机器人操jvzquC41ck4zk}xf0gjv0ls1z{ml1~ll0nuo
7.卓越计划实验班和研究生开设《软件工程中的人工智能创新应用二、课程简介 《软件工程中的人工智能创新应用》特色在于保留了新加坡南洋理工大学原汁原味的授课内容与授课方式,使学生通过学习回归分析、朴素贝叶斯理论、支持向量机理论、神经网络、强化学习等理论知识,以及R、Python、Tensor Flow和Hadoop等软件工具,进行基于数据分析的算法设计与实现和基于预测和自动化业务流程的应用软件jvzquC41uqluyjwg0jkow7jfw0io1rshq173;>4644=/j}r
8.海思Hi3751V900人工智能和8K媒体应用芯片简介|ScenSmart一站式海思Hi3751V900是一款8K+AI应用的旗舰SoC芯片,适用于智能电视和智慧家庭中心等场景。编解码能力强劲,支持AVS3/H.265/AV1等主流解码协议的8K@120解码。集成8核64位Cortex-A73 CPU,Mali-G52 MC6 GPU,集成独立NPU,提供强大的边缘智能计算能力。jvzquC41yy}/uljpuogsv7hqo1mfpnwcn/jfulwkrvopp6th/uud1qn5977w;95/hqx.cr2cpf39m8