LangChain快速入门——AI实践记录以及工具使用
一、大语言模型的定义和特点
大语言模型是一种人工智能模型,通常使用深度学习技术,比如神经网络,来理解和生成人类语言。这些模型的“大”在于它们的参数数量非常多,可以达到数十亿甚至更多,这使得它们能够理解和生成高度复杂的语言模式。 你可以将大语言模型想象成一个巨大的预测机器,其训练过程主要基于“猜词” :给定一段文本的开头,它的任务就是预测下一个词是什么。
但是,大语言模型并不完全理解语言,它们没有人类的情感、意识或理解力。它们只是通过复杂的数学函数学习到的语言模式,一个概率模型来做预测,所以有时候它们会犯错误,或者生成不合理甚至偏离主题的内容。
二、LangChain
LangChain 是一个全方位的、基于大语言模型这种预测能力的应用开发工具,它的灵活性和模块化特性使得处理语言模型变得极其简便。不论你在何时何地,都能利用它流畅地调用语言模型,并基于语言模型的“预测”或者说“推理”能力开发新的应用。LangChain 的预构建链功能,就像乐高积木一样
安装方法见LangChain 实战课 - 掘金小册 - 掘金小册
OpenAI API
LangChain本质上就是对各种大模型提供的API的套壳,是为了方便我们使用这些API,搭建起来的一些框架、模块和接口。
API的获取地址跟ChatGPT不大一样
API地址是:platform.openai.com/
价格:在这里可以查看openai.com/pricing
-
注册 OpenAI 账号并获取 API 密钥:请访问 OpenAI 平台,注册账号后,点击右上角的个人中心,选择“View API keys”,然后点击“Create new secret key”以生成您的 API 密钥。请妥善保存此密钥,因为关闭页面后将无法再次查看。
-
设置计费账户:在个人中心选择“Manage account”,然后在“Billing”选项中点击“Set up paid account”,填写您的信用卡信息以设置付款方式。
-
阅读官方文档:在 OpenAI 官方文档 中,您可以找到有关 API 的详细使用指南,包括支持的参数、选项以及如何通过 API 与模型进行交互。
-
选择合适的编程语言并安装必要的库:根据您的需求,选择适合的编程语言(如 Python、JavaScript 等),并安装相应的库或模块,以便在代码中发起 HTTP 请求。
-
编写代码并调用 API:在代码中配置 API 请求参数,如输入文本、生成文本长度等,并加入您的 API 密钥以进行身份验证。然后运行代码,发起 API 请求,成功调用后,GPT 将返回相应的结果
通过 LangChain 调用 Text 和 Chat 模型
使用LangChain来调用OpenAI的Text和Chat模型
调用 Text 模型
代码如下:
plain
复制代码
AI练中学
import os
os.environ["OPENAI_API_KEY"] = '你的Open API Key'
from langchain.llms import OpenAI
llm = OpenAI(
model="gpt-3.5-turbo-instruct",
temperature=0.8,
max_tokens=60,)
response = llm.predict("请给我的花店起个名")
print(response)
输出:
花之缘、芳华花店、花语心意、花风旖旎、芳草世界、芳色年华
这只是一个对OpenAI API的简单封装:先导入LangChain的OpenAI类,创建一个LLM(大语言模型)对象,指定使用的模型和一些生成参数。使用创建的LLM对象和消息列表调用OpenAI类的__call__方法,进行文本生成。生成的结果被存储在response变量中。没有什么需要特别解释之处。
调用 Chat 模型
代码如下:
plain
复制代码
AI练中学
import os
os.environ["OPENAI_API_KEY"] = '你的Open API Key'
from langchain.chat_models import ChatOpenAI
chat = ChatOpenAI(model="gpt-4",
temperature=0.8,
max_tokens=60)
from langchain.schema import (
HumanMessage,
SystemMessage
)
messages = [
SystemMessage(content="你是一个很棒的智能助手"),
HumanMessage(content="请给我的花店起个名")
]
response = chat(messages)
print(response)
这段代码主要是通过导入LangChain的ChatOpenAI类,创建一个Chat模型对象,指定使用的模型和一些生成参数。然后从LangChain的schema模块中导入LangChain的SystemMessage和HumanMessage类,创建一个消息列表。消息列表中包含了一个系统消息和一个人类消息。系统消息通常用来设置一些上下文或者指导AI的行为,人类消息则是要求AI回应的内容。之后,使用创建的chat对象和消息列表调用ChatOpenAI类的__call__方法,进行文本生成。生成的结果被存储在response变量中。
思考题
-
Q: 从今天的两个例子看起来,使用LangChain并不比直接调用OpenAI API来得省事?而且也仍然需要OpenAI API才能调用GPT家族模型。那么LangChain的核心价值在哪里?至少从这两个示例中没看出来。针对这个问题,你仔细思考思考。
A: 确实LangChain的价值并不是表面上直接调用OpenAI API时所能明显感受到的。如果只是在最基础的任务中,比如简单地调用GPT模型生成文本,LangChain确实可能看起来并没有带来太多附加价值。
但是,LangChain的核心价值并非仅限于简单的模型调用,它的优势主要体现在以下几个方面:
1. 处理复杂的工作流:
LangChain设计的初衷是帮助开发者更高效地构建复杂的语言模型驱动应用程序,尤其是涉及多步骤、跨多个模块的工作流。例如:
- 多步骤推理:可以将多个GPT调用结合起来,形成多阶段的推理过程。例如,一个步骤负责从数据库中获取信息,另一个步骤基于这些信息生成文本或做决策。
- 状态管理:LangChain提供了内建的状态管理机制,可以帮助追踪上下文、用户会话等信息,这对于构建复杂的对话系统或者长流程推理尤为重要。
2. 集成外部数据源:
LangChain不仅仅局限于调用模型本身,它可以轻松地与外部数据源集成,如:
- 数据库:直接查询SQL数据库,并基于查询结果生成动态响应。
- API调用:可以集成各种外部API,在模型推理过程中实时调用这些外部服务。
- 文件系统:支持读取各种文件(如PDF、CSV、Excel等),并基于文件内容进行推理。
通过这些数据源的集成,LangChain能够将模型生成和外部资源的查询结合起来,构建出更智能的应用。
3. 工具链与代理系统:
LangChain内置了工具链和代理系统,可以根据需要让模型在执行时调用多个外部工具或API。这意味着,LangChain可以自动决定在特定任务中应当使用哪些外部工具,而开发者不需要手动去管理这一过程。
例如,LangChain可以用来构建一个代理,在没有人工干预的情况下:
- 自动选择使用哪种模型(例如GPT-3、GPT-4,或者其他任务特定的模型)。
- 调用外部API或数据库进行查询。
- 处理长时间运行的任务,甚至是将任务分配到不同的模型或工具上。
4. 可扩展性与模块化设计:
LangChain是模块化的,允许开发者基于其提供的组件快速构建定制化的应用。它不仅支持与OpenAI模型交互,还支持与其他语言模型(如Llama、GPT-J等)、甚至自定义模型进行整合。模块化设计让开发者可以根据不同应用需求灵活切换和扩展模型及数据源。
5. 多模态能力:
LangChain不仅限于文本输入输出,它还支持包括图像、音频等在内的多模态输入。这在某些需要综合分析不同类型数据(如文本与图像)的任务中非常有用。
6. 增强模型能力(Memory) :
LangChain有内建的“记忆”机制,可以在长期交互过程中保持状态和上下文,帮助实现更加持久的对话和推理任务。通过记忆,模型不仅能在当前会话中进行推理,还能根据过去的会话记录做出更符合上下文的决策。
总结:
LangChain的价值不在于替代OpenAI API的直接调用,而是在于其提供的丰富的功能和框架,使得开发者能够构建更复杂、智能的应用。如果你只是单纯地想用GPT生成一些文本,那么直接调用OpenAI API可能已经足够。但是,如果你的应用需要跨越多个步骤、调用多个外部资源、或者需要处理复杂的推理任务,那么LangChain无疑可以简化这一过程,并提供更高效的开发方式。
AI实践记录以及工具使用
豆包MarsCode的AI练中学功能理论上将所有需要的包都配置好了,如果代码不缺少包,就不需要自行配置。如果缺少某些包,用pip install 安装相关即可。对于我这种小白来说入门很友好,充分考虑了我们的上手难度,更好的理解大模型和掌握LangChain开发技巧。一边学这个一边刷题,提升代码能力,夯实语法基础和算法能力。跑项目的过程中遇到问题可以随时问豆包,找一些思路。而且发下四年哪块的语法忘了可以及时补上,再记录下来去AI刷题栏目找点相关的题目,反正是云端编辑器,不用把大量时间花在配环境上了,提高学习效率。