AI 第一课
认识 LangChain
LangChain 是一个开源的 Python 框架,专注于帮助开发者构建语言模型驱动的应用程序。这类应用程序通常使用大型语言模型(LLMs),如 OpenAI 的 GPT-3 或 GPT-4。LangChain 提供了各种工具和模块,使开发者能够轻松连接语言模型、API、数据存储等资源,从而创建智能、动态的交互式应用程序。
LangChain 的两大特性
LangChain 的核心特性包括 数据感知 和 代理性。简单来说,它不仅可以联网获取实时信息,而不是局限于本地固定数据库,还能根据问题自主选择工具(API)来执行复杂任务。
示例
-
实时财务分析助手
用户希望使用财务助手获取某家公司的最新财务数据。通常的语言模型只能基于训练数据作答,这些数据可能已经过时。通过“数据感知”特性,财务助手可以连接实时的金融数据 API(如 Yahoo Finance、Alpha Vantage),获取最新数据并结合语言模型生成实时的回答。 -
旅行规划助手
用户希望计划一次多站的国际旅行,不仅需要旅游信息,还需动态查询航班、酒店和天气。利用“代理性”特性,助手可与多个 API 集成,根据需求自动调用不同工具来收集信息,并生成详细的旅行方案。
LangChain 的六大组件
LangChain 包含六大核心组件,支持其数据感知和代理性,接下来我们将逐一介绍并为各位举出具体示例:
- 模型(Models):提供各大语言模型的接口和调用细节,并包含输出解析机制。
示例:对于一个问答应用,可以通过模型接口轻松调用 GPT-4 生成答案,或使用更小的模型来处理基础的文本分析任务。
- 提示模板(Prompts):使提示工程流程化,进一步激发大语言模型的潜力。
示例:一个面向客户服务的应用可以使用提示模板,生成统一格式的响应。用户问题可以填充到模板中,让模型生成标准化的答复。
- 数据检索(Indexes):构建并操作文档,接受用户查询并返回最相关的文档,轻松搭建本地知识库。
示例:在一个知识库问答应用中,用户提出问题后,数据检索组件会找到最匹配的文档内容,并将其提供给模型生成更精准的回答。
- 记忆(Memory):通过短时和长时记忆,在对话过程中存储和检索数据,让 ChatBot 记住用户的偏好。
示例:在一个虚拟助手中,助手可以记住用户的名字、偏好,甚至在上次对话中谈到的内容,从而提供更加个性化的服务。
- 链(Chains):LangChain 的核心机制,封装各种功能并通过组合自动完成常见用例。
示例:一个文件分析应用可以由一个链自动完成读取文件、提取关键词、进行摘要生成和输出分析报告的过程。
- 代理(Agents):LangChain 的另一核心机制,允许模型自主调用外部和内部工具,实现自驱力,让应用具备更强的智能化功能。
示例:在旅行助手应用中,代理可以根据用户需求先调用航班 API 查找航班信息,再调用酒店 API 查找住宿推荐,并调用天气 API 获取天气预报,最终整合成完整的旅行计划。
借助这些组件,LangChain 可以帮助开发者快速创建具有自驱力、实时响应和智能交互的 AI 应用程序。
安装LangChian
接下来,我们将通过Anaconda软件来搭建使用LangChain的环境,并调用OpenAI的API,让您能够开始使用我们的LangChain。
首先我们打开Anaconda创建一个虚拟环境
- 首先,打开控制台输入如下指令:
pip install langchain
直接通过pip安装 LangChain 的最新版本 - 安装与特定功能相关的依赖性
LangChain 支持多种功能组件(如向量数据库、API 集成等),这些功能可能需要安装额外的依赖项。以下是一些常见的依赖项安装方法:
-
OpenAI 模型支持(若使用 OpenAI 的 GPT-3 或 GPT-4):
pip install openai -
Hugging Face Hub 支持(若使用 Hugging Face 上的模型):
pip install huggingface_hub -
向量数据库支持:
-
Pinecone(用于语义搜索和索引)
pip install pinecone-client -
Chroma
pip install chromadb
-
-
Document Loaders 支持(如加载 PDF、Word、HTML 文件等):
-
PyMuPDF(支持 PDF 加载)
pip install pymupdf -
Unstructured
pip install unstructured -
Python-Magic(支持文件类型检测)
pip install python-magic
-
当然我们也可以直接通过下述指令下载LangChain的所有可选依赖项(可能不成功哦,还是建议逐一安装):
pip install langchain[all]
PS:安装完成后,还可以通过如下指令更新到 LangChain 的最新版本,以能使用较新的工具。
pip install --upgrade langchain或pip install langchain[all]
3. 验证安装
安装完成后,可以通过以下命令验证是否安装成功:
python -c "import langchain; print(langchain.__version__)"
4. 示例代码运行测试
你可以尝试一个简单的代码片段(通过text),确保 LangChain 已正确安装并可正常使用:
from langchain.llms import OpenAI
llm = OpenAI(model="text-davinci-003")
response = llm("Hello, LangChain!")
print(response)
5. 设置 API 密钥
如果你使用 OpenAI、Hugging Face 等模型,需设置 API 密钥。可以将密钥直接设置为环境变量:
export OPENAI_API_KEY='your_openai_api_key'
export HUGGINGFACEHUB_API_TOKEN='your_huggingface_api_token'
3. 语言模型
OpenAI 提供了不同类型的语言模型,主要包括 聊天模型(Chat Model)、文本模型(Text Model)、图像生成(Image)、音频模型(Audio)和其它类型的模型。这些模型各有特色,用于满足不同场景下的需求。但是由于后两类模型还不成熟,模型数量较少,我们只重点讲解前两个模型。
- Chat Model(聊天模型)
聊天模型是专门为生成对话而设计的语言模型,优化方向在于模拟人类对话的自然性与流畅度,主要用于人类与 AI 之间的互动。ChatGPT 是此类模型的典型代表。
-
GPT-3.5-Turbo 和 GPT-4
OpenAI 的主流聊天模型包括 gpt-3.5-turbo(即 ChatGPT)和 GPT-4。这些模型非常擅长对话任务,能够理解上下文,回答问题,甚至进行复杂推理。 -
模型版本命名方式
OpenAI 以时间和功能区分同一模型的不同版本,以下是一些常用命名规则的解释:- gpt-3.5-turbo-0613:代表 ChatGPT 的一个特定版本,快照时间为 2023 年 6 月 13 日。这个版本通常是在模型升级或修正后提供的,确保更好的稳定性和性能。
- gpt-3.5-turbo-16k:代表可以处理更长文本的版本,支持 16K tokens 的输入长度,而标准版通常支持 4K tokens。这种更高的 token 限制适用于需要大量上下文的对话,但也意味着处理更多内容会增加费用。
-
费用与字节限制
传输的字节越多,调用成本越高。这是因为聊天模型根据 token(单词或符号单元)计费,token 越多,费用越高。例如,gpt-3.5-turbo-16k 尽管能处理更多内容,但处理长对话的成本会相应增加。需要注意的是,较大的 token 版本可能并非对所有用户开放。
- Text Model(文本模型)
在 ChatGPT 发布之前,文本模型一直是使用大型语言模型的主要 API 接口。这类模型是用于多种文本生成和理解任务的通用模型,包括问答、文本生成、摘要、情感分析等。
- 代表性模型:text-davinci-003
text-davinci-003 是文本模型的典型代表,基于 GPT-3。这个模型广泛用于文本生成和自然语言处理任务,因为它擅长理解和生成高质量的长文本,并具有较强的知识库。 - 文本嵌入模型:text-embedding-ada-002
OpenAI 还推出了针对特定任务训练的模型,比如 text-embedding-ada-002。这是一个专门用于文本嵌入(embedding)的模型,可以将文本转换成高维向量表示。文本嵌入在搜索、推荐和语义相似性计算中极为重要。例如,当需要对大量文本进行语义分类时,可以通过生成文本的嵌入来比较它们的相似性。 - 相似度比较模型:text-similarity-curie-001
用于相似度任务的模型,如 text-similarity-curie-001,主要目的是计算两段文本的语义相似度。模型会生成文本向量并计算向量之间的距离来衡量相似度。例如,在问答系统中,可用该模型将用户问题与数据库中的答案进行比较,找到最相关的结果。
总结
我们用一张图总结一下
| 模型类别 | 主要模型 | 功能 | 典型应用 |
|---|---|---|---|
| 聊天模型 | gpt-3.5-turbo、GPT-4 | 产生对话,理解上下文 | 人机对话,虚拟助理 |
| 文本模型 | text-davinci-003 | 通用文本生成与分析 | 文本生成,问答系统 |
| 文本嵌入模型 | text-embedding-ada-002 | 文本转向量,用于语义处理 | 语义搜索,推荐系统 |
| 相似度模型 | text-similarity-curie-001 | 比较文本相似度 | 答案匹配,推荐 |
第一次发布文章,如果有什么问题,请在评论区指出哦