LangChain入门:使用Python和通义千问打造免费的Qwen大模型聊天机器人
前言
LangChain 是一个用于开发由大型语言模型(Large Language Models,简称LLMs)驱动的应用程序的框架。
它提供了一个灵活的框架,使得开发者可以构建具有上下文感知能力和推理能力的应用程序,这些应用程序可以利用公司的数据和APIs。
这个框架由几个部分组成。
- LangChain 库:Python 和 JavaScript 库。包含了各种组件的接口和集成,一个基本的运行时,用于将这些组件组合成链和代理,以及现成的链和代理的实现。
- LangChain 模板:一系列易于部署的参考架构,用于各种任务。
- LangServe:一个用于将 LangChain 链部署为 REST API 的库。
- LangSmith:一个开发者平台,让你可以调试、测试、评估和监控基于任何 LLM 框架构建的链,并且与 LangChain 无缝集成。
LangChain本身并不开发LLMs,它的核心理念是为各种LLMs提供通用的接口,降低开发者的学习成本,方便开发者快速地开发复杂的LLMs应用。
这篇文章将在 Python 环境下使用 LangChain 框架,免费接入通用的大型语言模型,构建一个基础的 AI 聊天机器人。
废话不多说,直接进入正题。
LangChain 库
LangChain 框架的核心理念是将语言模型(如大型语言模型)与应用程序的其他部分无缝集成,以创建具有数据感知和自主性的智能应用程序。以下是 LangChain 的一些关键特点和组件:
-
数据感知:LangChain 允许开发者将语言模型连接到各种数据源,使其能够理解和处理来自这些源的信息。
-
自主性:通过 LangChain,语言模型可以与其环境交互,执行任务,如回答问题、执行命令或与用户进行交互。
-
组件化:LangChain 提供了一个抽象层,使得开发者可以轻松地使用语言模型,无论他们是否使用 LangChain 框架的其他部分。这些组件是模块化的,易于使用和集成。
-
现成的链:LangChain 提供了一系列结构化的组件集合,这些集合被称为“现成的链”,用于完成特定的高级任务。这使得开发者可以快速开始开发,而无需从头构建所有内容。
-
易于定制和扩展:由于组件化的特性,LangChain 使得定制现有链或构建新链变得容易,以适应更复杂的应用程序和特定的用例。
-
多种组件:LangChain 提供了多种组件,以支持不同的用例,包括但不限于:
- 个人助理:创建能够执行任务和提供信息的虚拟助手。
- 文档问答:开发能够理解和回答有关文档内容的问题的系统。
- 聊天机器人:构建能够与用户进行自然对话的聊天机器人。
- 查询表格数据:使应用程序能够查询和理解表格数据。
- 与 API 交互:允许应用程序与外部 API 进行交互,以获取或发送数据。
- 提取、评估和汇总:提供工具来提取信息、评估数据和汇总结果。
要使用 LangChain,开发人员需要导入必要的组件和工具,如语言模型(LLMs)、聊天模型(chat models)、代理(agents)、链(chains)和内存功能。这些组件可以组合起来创建一个能够理解、处理和响应用户输入的智能应用程序。
通过这种方式,LangChain 为开发人员提供了一个强大的平台,以构建和部署具有高级语言处理能力的应用程序。
安装langchain
pip install langchain==0.2.1 # 安装langchain
pip install langchain-community==0.2.1 # 安装第三方集成
pip install python-dotenv==1.0.1 # 使用 .env 文件来管理应用程序的配置和环境变量
pip install dashscope==1.19.2 # 安装灵积模型库
白嫖阿里云灵积模型服务
上周很多公司的大模型调用费用纷纷下调,而且一些活动给予的免费额度也是非常不错,以阿里为例:
这高低不得白嫖一番,不过海鸽之前已经开通,享受不到这波免费额度。
哭晕在厕所...
开通流程
:搜索灵积模型服务,开通服务,生成阿里云灵积模型服务的apikey
。
- 访问DashScope管理控制台:前往控制台。
- 在控制台“总览”页下,点击“去开通”。
- 阅读服务协议,确认无误后点击“立即开通”。
- 进入产品控制台,创建api-key
创建聊天机器人
导入相关包
import os
from dotenv import find_dotenv, load_dotenv
from langchain_community.llms import Tongyi
from langchain_core.runnables import RunnableSequence
from langchain.prompts import PromptTemplate
load_dotenv(find_dotenv())
DASHSCOPE_API_KEY = os.environ["DASHSCOPE_API_KEY"]
创建一个 .env 文件
文件内容为阿里控制台生成的 apikey
DASHSCOPE_API_KEY="sk-x9xxxxxxddxxxxxxxxxxx254e1xxxxx"
实例化 llm, 并赋予它一个角色
默认使用的模型(model_name)是
qwen-plus
,这里我改成qwen-turbo
,当然你可以选择适合你自己的。
class QwenTurboTongyi(Tongyi):
model_name = "qwen-turbo"
class QwenMaxTongyi(Tongyi):
model_name = "qwen-max"
def xiao_hei_zi():
llm = QwenTurboTongyi(temperature=1)
template = '''
你的名字是小黑子,当有人问问题的时候,你都会在回答的开头加上'唱,跳,rap,篮球!\n\n',然后再回答{question}, 内容尽量详细
'''
prompt = PromptTemplate(
template=template,
input_variables=["question"]
)
chain = RunnableSequence(prompt | llm)
question = '蔡徐坤是谁?'
res = chain.invoke({"question": question})
print(res)
运行
小结
这样,最简单的使用 LangChain 接入阿里通义千问大模型实现的聊天机器人算是初步完成,赶紧去白嫖吧。
最后
如果文章对你有帮助,在看
、关注
走一波呗~
转载自:https://juejin.cn/post/7373162529818771475