带你亲证AI应用开发的“奇点”时刻

带你亲证AI应用开发的“奇点”时刻

AI 应用开发——新的历史节点

事实上,没有任何一种突破能够不经历重重失败,不体验一轮轮的痛苦,就能直接展现在人类面前。AI 技术自诞生之初直至今日,其发展之路从未一帆风顺——辉煌与寒冬交替,希望与失望交织。现代 AI 的核心驱动力神经网络,70 年间两落三起;自然语言处理技术亦不例外,在 ChatGPT 和 GPT-4 出现之前,NLP 技术也曾受过质疑,长期经历低谷期。

每一次 AI 新技术突然流行之时,总会有人发问:这次,会不会又是昙花一现?

在我看来,这次大模型领域的突破的的确确是真切的、清晰可见的。“ChatGPT 将引发巨变!” 诸多业界“真大佬”掷地有声地给出了同样肯定的答案。

阿里巴巴集团董事会主席张勇在 2023 年阿里云峰会宣布:“AI 大模型的出现是一个划时代的里程碑,就像工业革命一样,大模型将会被各行各业广泛应用,带来生产力的巨大提升,并深刻改变我们的生活方式。”“面向 AI 时代,所有产品都值得用大模型重新升级。

英伟达的创始人、CEO 黄仁勋也在英伟达 GTC 线上大会上将 ChatGPT 称为 AI 的 “iPhone 时刻”。

更有人认为,“iPhone 时刻”把 ChatGPT 和大模型的技术影响力和未来前景说小了。其实,这并不是 iPhone 时刻,而是互联网时刻。因为很多互联网应用比平台都大,而在人工智能基础功能平台上,会成长出超过平台的企业,也就是说,未来的人工智能应用企业有可能会超过 Apple、微软、谷歌等平台企业。

无论如何,有一点毋庸置疑。我们正站在一个崭新的历史节点上。

在这个节点上,ChatGPT、GPT-4 和其他大语言模型为我们提供了新的视角和新的可能性,在大语言模型的基础上,有可能成长出跨平台的企业,改变未来的科技格局。

在这个节点上,LangChain 这个以大模型为引擎的全新应用开发框架从天而降,几乎和 ChatGPT 一起面世。作为程序设计者的我们,现在可以利用大模型的潜能以及 LangChain 的便捷,开发出令人惊叹的智能应用。LangChain 作为新一代 AI 开发框架,必将受到程序员的追捧,点燃 AI 应用开发的新热潮。

img

LangChain 的 GitHub Star 数量疯涨中,没有放缓的节奏

这样的预期,正是我们开设这门课程,以及邀请你来学习这门课程的原因。

何谓 LangChain?释放大语言模型潜能的利器

在这门课程中,我们将共同探索如何使用 LangChain。那么如何理解 LangChain 呢?

作为一种专为开发基于语言模型的应用而设计的框架,通过 LangChain,我们不仅可以通过 API 调用如 ChatGPT、GPT-4、Llama 2 等大型语言模型,还可以实现更高级的功能。

我们相信,真正有潜力且具有创新性的应用,不仅仅在于能通过 API 调用语言模型,更重要的是能够具备以下两个特性:

  1. **数据感知:**能够将语言模型与其他数据源连接起来,从而实现对更丰富、更多样化数据的理解和利用。
  2. **具有代理性:**能够让语言模型与其环境进行交互,使得模型能够对其环境有更深入的理解,并能够进行有效的响应。

因此,LangChain 框架的设计目标,是使这种 AI 类型的应用成为可能,并帮助我们最大限度地释放大语言模型的潜能。

img

LangChain 的 6 大组件

现在你应该已经知道,LangChain 是一个基于大语言模型(LLMs)用于构建端到端语言模型应用的框架,它可以让开发者使用语言模型来实现各种复杂的任务,例如文本到图像的生成、文档问答、聊天机器人等。LangChain 提供了一系列工具、套件和接口,可以简化创建由 LLMs 和聊天模型提供支持的应用程序的过程。

打通 LangChain 从原理到应用的最后一公里

既然 LangChain 这么棒,又这么新,我们怎么学?谁来指导?

不怕!在这门课程中,我为你精心设计了 4 大模块。带你从各个角度把 LangChain 的精髓吃透。

img

启程篇:从 0 到 1

在这个模块中,我会介绍 LangChain 系统的安装流程,以及如何进行快速的入门操作。同时,

详细指导你如何使用 LangChain 来构建一个基于“易速鲜花”本地知识库的智能问答系统,让你直接感受 LangChain 强大的功能。

基础篇:深入 6 大组件

LangChain 中的具体组件包括:

  • 模型(Models),包含各大语言模型的 LangChain 接口和调用细节,以及输出解析机制。
  • 提示模板(Prompts),使提示工程流线化,进一步激发大语言模型的潜力。
  • 数据检索(Indexes),构建并操作文档的方法,接受用户的查询并返回最相关的文档,轻松搭建本地知识库。
  • 记忆(Memory),通过短时记忆和长时记忆,在对话过程中存储和检索数据,让 ChatBot 记住你是谁。
  • 链(Chains),是 LangChain 中的核心机制,以特定方式封装各种功能,并通过一系列的组合,自动而灵活地完成常见用例。
  • 代理(Agents),是另一个 LangChain 中的核心机制,通过“代理”让大模型自主调用外部工具和内部工具,使强大的“智能化”自主 Agent 成为可能!你的 App 将产生自驱力!

这些组件是 LangChain 的基石,是赋予其智慧和灵魂的核心要素,它们相互协作,形成一个强大而灵活的系统。在基础篇中,我们将深入探索这些组件的工作原理和使用方法,并给出大量用例,夯实你对这些组件的理解和应用能力。

应用篇:积累场景中的智慧

在这个模块中,我们会展示如何将 LangChain 组件应用到实际场景中。你将学会如何使用 LangChain 的工具和接口,进行嵌入式存储,连接数据库,引入异步通信机制,通过智能代理进行各种角色扮演、头脑风暴,并进行自主搜索,制定自动策略,尝试不同方案完成任务。

我们将不仅仅是讲解这些组件的功能,还会通过实际应用场景来展示它们是如何互相配合,共同完成复杂任务的。本模块中的很多机制都来源于最新论文,其中对 AI 智能代理机制的各种使用方式将令你大开脑洞,或许你会哈哈一笑,或许你会击节赞叹,钦佩设计者思路之清奇。

实战篇:动手!

你将学习如何部署一个鲜花网络电商的人脉工具,并开发一个易速鲜花聊天客服机器人。从模型的调用细节,到数据连接的策略,再到记忆的存储与检索,每一个环节都是为了打造出一个更加智能、更加人性化的系统。

至此,你将能够利用 LangChain 构建出属于自己的智能问答系统,不论是用于企业的应用开发,还是个人的日常应用,都能够得心应手,游刃有余。

LangChain 有趣用例抢先看

也许,你已经听说过太多大语言模型和 LangChain 的神奇妙用,迫不及待地想见识见识。那样也好,百闻不如一见,下面我就给你展示两个使用大语言模型和 LangChain 的具体应用,一起来看看它有多好用。

应用 1:情人节玫瑰宣传语

情人节到啦,你的花店需要推销红色玫瑰,那么咱们让大语言模型做的第一个应用,就是给咱们生成简短的宣传语。

这个需求极为简单,你直接去 ChatGPT 网站,或者用文心一言、星火认知等大模型,都做得到。不过,怎样通过 LangChain 来用程序的方式实现呢?也很容易。

第一步是安装两个包,通过 pip install langchain 来安装 LangChain,通过 pip install openai 来安装 OpenAI。

第二步,你还需要在 OpenAI 网站注册属于自己的 OpenAI Key。(当然,LangChain 也支持其他的开源大语言模型,但是推理效果没有 GPT 那么好,所以我们这个课程里面的大多数示例都是用 OpenAI 的 GPT 系列模型来完成。)

完成了上面两个步骤,就可以写代码了。

import os
os.environ["OPENAI_API_KEY"] = '你的OpenAI Key'
from langchain.llms import OpenAI
llm = OpenAI(model_name="text-davinci-003",max_tokens=200)
text = llm("请给我写一句情人节红玫瑰的中文宣传语")
print(text)

这里,我们先导入了 OpenAI 的 API Key,然后从 LangChain 中导入 OpenAI 的 Text 模型接口,并初始化这个大语言模型,把我们的需求作为提示信息,传递给大语言模型。

运行程序,我得到了好几个漂亮的文案。而且每次运行都会有新的惊喜。

img

你也许会觉得,这个应用太简单了,直接去大模型的网页上问更方便。的确如此,那下面我们再来一个无法直接在网页上完成的应用。

应用 2:海报文案生成器

你已经制作好了一批鲜花的推广海报,想为每一个海报的内容,写一两句话,然后 post 到社交平台上,以期图文并茂。

这个需求,特别适合让 AI 帮你批量完成,不过,ChatGPT 网页可不能读图。下面,我们就用 LangChain 的“代理”调用“工具”来完成自己做不到的事情。

img

鲜花海报图片

我们就用一段简单的代码实现上述功能。这段代码主要包含三个部分:

  1. 初始化图像字幕生成模型(HuggingFace 中的 image-caption 模型)。
  2. 定义 LangChain 图像字幕生成工具。
  3. 初始化并运行 LangChain Agent(代理),这个 Agent 是 OpenAI 的大语言模型,会自动进行分析,调用工具,完成任务。

不过,这段代码需要的包比较多。在运行这段代码之前,你需要先更新 LangChain 到最新版本,安装 HuggingFace 的 Transformers 库(开源大模型工具),并安装 Pillow(Python 图像处理工具包)和 PyTorch(深度学习框架)。

pip install --upgrade langchain
pip install transformers
pip install pillow
pip install torch torchvision torchaudio
#---- Part 0 导入所需要的类
import os
import requests
from PIL import Image
from transformers import BlipProcessor, BlipForConditionalGeneration
from langchain.tools import BaseTool
from langchain import OpenAI
from langchain.agents import initialize_agent, AgentType#---- Part I 初始化图像字幕生成模型
# 指定要使用的工具模型(HuggingFace中的image-caption模型)
hf_model = "Salesforce/blip-image-captioning-large"# 初始化处理器和工具模型
# 预处理器将准备图像供模型使用
processor = BlipProcessor.from_pretrained(hf_model)
# 然后我们初始化工具模型本身
model = BlipForConditionalGeneration.from_pretrained(hf_model)#---- Part II 定义图像字幕生成工具类
class ImageCapTool(BaseTool):name = "Image captioner"description = "为图片创作说明文案."def _run(self, url: str):# 下载图像并将其转换为PIL对象image = Image.open(requests.get(url, stream=True).raw).convert('RGB')# 预处理图像inputs = processor(image, return_tensors="pt")# 生成字幕out = model.generate(**inputs, max_new_tokens=20)# 获取字幕caption = processor.decode(out[0], skip_special_tokens=True)return captiondef _arun(self, query: str):raise NotImplementedError("This tool does not support async")#---- PartIII 初始化并运行LangChain智能代理
# 设置OpenAI的API密钥并初始化大语言模型(OpenAI的Text模型)
os.environ["OPENAI_API_KEY"] = '你的OpenAI API Key'
llm = OpenAI(temperature=0.2)# 使用工具初始化智能代理并运行它
tools = [ImageCapTool()]
agent = initialize_agent(agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,tools=tools,llm=llm,verbose=True,
)
img_url = 'https://mir-s3-cdn-cf.behance.net/project_modules/hd/eec79e20058499.563190744f903.jpg'
agent.run(input=f"{img_url}\n请给出合适的中文文案")

根据输入的图片 URL,由 OpenAI 大语言模型驱动的 LangChain Agent,首先利用图像字幕生成工具将图片转化为字幕,然后对字幕做进一步处理,生成中文推广文案。

运行结果 1:

img

运行结果 2:

img

运行结果 3:

img

说明:因为 temperature=0.2 代表模型拥有一定的随机性,所以大模型每次的推理过程生成的文案都不尽相同。

针对上面的鲜花图片,程序进入了 AgentExecutor 链,开始思考推理,并采取行动——调用 Image Cationer 工具,接收该工具给出的结果,并根据其返回的内容,再次进行思考推理,最后给出的文案是:“爱,让每一天充满美丽,让每一个心情都充满甜蜜。” 多么浪漫而又富有创意,大模型懂我!

当然,这个过程中还有很多很多的细节,比如大模型是怎么思考的?LangChain 调用大模型时传入的具体提示文本是什么?代理是什么?AgentExecutor Chain 是什么?它究竟是怎样调度工具的?你现在可能有很多的疑惑。

在后续的课程中,我会带着你手撕 LangChain 内部源代码,把所有这些一点一滴地剖析清楚。

关于 LangChain,我想向你分享的还有太多太多,短短的开篇词已经无法容纳了。那么,就让我最后告诉你:玩 LangChain,真的很有意思,越深入,越发觉大语言模型是一个无尽的宝藏。在这样的系统中,我们并不是生硬的去设计什么固定的逻辑,而是由语言模型通过理解和推理来决定执行什么操作以及执行的顺序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/218951.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle MongoDB

听课的时候第一次碰到,可以了解一下吧,就直接开了墨者学院的靶场 #oracle数据库 Oracle数据库注入全方位利用 - 先知社区 这篇写的真的很好 1.判断注入点 当时找了半天没找到 看样子是找到了,测试一下看看 id1 and 11 时没有报错 2.判断字段…

如何在Facebook Business Manager进行企业认证

Facebook Business Manager,简称BM,按照字面意思理解就是Facebook官方的商务管理平台,是供广告主团队去使用的一个管理工具。BM可以绑定Facebook公共主页、广告账户等一系列Facebook账号。通过BM,企业就可以在一个后台&#xff0c…

集群消费和广播消费有什么区别?

为了规范消息队列中生产者和消费者的行为,消息中间件的构建中会实现不同的消费模型。本文讨论的话题来自 RocketMQ 中具体的两种消费模式,是消息队列中两种典型消费模型的实现。接下来我们就一起来看一下消息队列都有哪些消费模型,以及对应的…

Unity中Shader URP 简介

文章目录 前言一、URP(Universal Render Pipeline)由名字可知,这是一个 通用的 渲染管线1、Universal(通用性)2、URP的由来 二、Build-in Render Pipeline(内置渲染管线)1、LWRP(Lig…

使用Go实现一个百行聊天服务器

前段时间, redis作者不是整了个c语言版本的聊天服务器嘛, 地址, 代码量拢共不过百行. 于是, 心血来潮下, 我也整了个Go语言版本. 简单来说就是实现了一个聊天室的功能. 将所有注释空行都去掉, 刚好100行实现. 废话不多说, 先上代码: package mainimport ("fmt"&quo…

vue router-view报错解决

目录 1 报错内容2 解决方案2.1 检查版本2.1 正确引入使用vue-router组件 1 报错内容 我们在使用router-view组件的时候会遇到如下报错&#xff1a; 报错内容如下&#xff1a; [Vue warn]: Unknown custom element: <router-view> - did you register the component co…

IntersectionObserver API的简单介绍及应用

前言 IntersectionObserver 之前就有所了解&#xff0c;但是一直没有用&#xff0c;当时觉得浏览器兼容性不好&#xff0c;直接用onscroll监听也能实现相关功能&#xff0c;但是随着浏览器支持性越来越好&#xff0c;这个属性到迄今为止&#xff0c;可以用在大部分的正式项目中…

STM32迪文屏图标控件保姆级教程

要主图的去末尾&#xff0c;末尾福利图在等着你~~~ 文章目录 前言 开发环境 二、使用步骤 1.添加图标控件 2.设置图标属性 3.图标库ICL文件生成 4.单片机程序编写 容易踩得坑 一、前言 本篇文章主要介绍了在DGBUS平台上使用图标变量的步骤。首先需要在DGBUS中添加一个图标变量控…

最新50万字312道Java经典面试题52道场景题总结(附答案PDF)

最近有很多粉丝问我&#xff0c;有什么方法能够快速提升自己&#xff0c;通过阿里、腾讯、字节跳动、京东等互联网大厂的面试&#xff0c;我觉得短时间提升自己最快的手段就是背面试题&#xff1b;花了3个月的时间将市面上所有的面试题整理总结成了一份50万字的300道Java高频面…

2、快速搞定Kafka术语

快速搞定Kafka术语 Kafka 服务端3层消息架构 Kafka 客户端Broker 如何持久化数据小结 Kafka 服务端 3层消息架构 第 1 层是主题层&#xff0c;每个主题可以配置 M 个分区&#xff0c;而每个分区又可以配置 N 个副本。第 2 层是分区层&#xff0c;每个分区的 N 个副本中只能有…

【Spark精讲】Spark存储原理

目录 类比HDFS的存储架构 Spark的存储架构 存储级别 RDD的持久化机制 RDD缓存的过程 Block淘汰和落盘 类比HDFS的存储架构 HDFS集群有两类节点以管理节点-工作节点模式运行&#xff0c;即一个NameNode(管理节点)和多个DataNode(工作节点)。 Namenode管理文件系统的命名空…

【PostgreSQL】从零开始:(二)PostgreSQL下载与安装

【PostgreSQL】从零开始:&#xff08;二&#xff09;PostgreSQL下载与安装 Winodws环境下载与安装PostgreSQL下载PostgreSQL安装PostgreSQL1.登录数据库2.查看下我们已有的数据库 Liunx环境下载与安装PostgreSQL使用YUM下载安装PostgreSQL1.下载PostgreSQL安装包2.安装PostgreS…

spring boot 配置多数据源 踩坑 BindingException: Invalid bound statement (not found)

在上一篇&#xff1a;《【已解决】Spring Boot多数据源的时候&#xff0c;mybatis报错提示&#xff1a;Invalid bound statement (not found)》 凯哥(凯哥Java) 已经接受了&#xff0c;在Spring Boot配置多数据源时候&#xff0c;因为自己马虎&#xff0c;导致的一个坑。下面&a…

C# 提取PDF中指定文本、图片的坐标

获取PDF文件中文字或图片的坐标可以实现精确定位&#xff0c;这对于快速提取指定区域的元素&#xff0c;以及在PDF中添加注释、标记或自动盖章等操作非常有用。本文将详解如何使用国产PDF库通过C# 提取PDF中指定文本或图片的坐标位置&#xff08;X, Y轴&#xff09;。 ✍ 用于…

OSG中几何体的绘制(一)

本章主要介绍一些几何体的绘制方法。绘制几何体在场景中是非常常见的&#xff0c;也是最基本的。在很多应用程序中可以看到相当复杂的场景&#xff0c;但不管场景有多复杂&#xff0c;它们都是由少数几个基本的图形元素构建而成的。只要想想达芬奇那些伟大的作品也是由铅笔和画…

驾龄不足三年如何注册网约车?刘师傅的反击之途!

刘师傅是个勤奋的司机。他想注册成为一名网约车司机&#xff0c;但由于驾龄不够三年&#xff0c;他一直被平台回绝。在多次尝试注册失败后&#xff0c;刘师傅慢慢四处求助。他咨询了多个渠道&#xff0c;但都没有得到有效的解决方案。当他在准备放弃的时候&#xff0c;他得知了…

Redis设计与实现之字符串哈希表列表

目录 一、字符串 1、字符串编码 2、编码的选择 二、哈希表 1、字典编码的哈希表 2、压缩列表编码的哈希表 3、编码的选择 4、哈希命令的实现 三、列表 1、 编码的选择 2、 列表命令的实现 3、阻塞的条件 4、 阻塞 5、 阻塞因 LPUSH 、RPUSH 、LINSERT 等添加命令而…

CSRF(跨站脚本请求)

一、漏洞原理 CSRF&#xff08;Cross-Site Request Forgery&#xff09;是一种网络安全攻击&#xff0c;攻击者通过欺骗用户在不知情的情况下发送请求&#xff0c;从而实现对目标网站的操作。 网站管理员(已经登录网站后台)——黑客构造的恶意服务器(是网站的创建用户请求)——…

Modbus转Profinet网关使用方法

Modbus转Profinet网关&#xff08;XD-MDPN100/200&#xff09;是用于将Modbus协议和Profinet协议进行转换并进行通迅的设备。Modbus转Profinet网关&#xff08;XD-MDPN100/200&#xff09;无论是新项目还是改造项目都可轻松配置完成通迅互联。 正确的安装和配置对于确保设备的正…

mysql的redolog、undo、binlog的作用

概览&#xff1a; MySQL三大日志包括&#xff1a;undolog&#xff0c;redo log&#xff0c;binlog&#xff0c;它们分别有以下作用&#xff1a; undolog&#xff1a;是Innodb存储引擎事务生成的日志。用于事务的回滚和MVCC&#xff0c;保证了事务的原子性。 redo log&#x…