Bootstrap

【DataWhale-LLM】一、Langchain是什么?如何使用Langchain?

一、简单介绍LangChain

LangChain is a framework for developing applications powered by large language models(LLMs).
开发:可以使用LangChain的开源building blocks和组件构建应用。
生产:可以使用LangSmith检查、监督以及评估你的chain。
部署:可以使用LangServer把chain转化为API。
我们知道很多大语言模型,包括开源的LLaMA系列、通义千文、GLM系列等,非开源的GPT系列、Claude系列、Gemini系列等。那么我们如何使用这些大模型构建应用呢?
LangChain就是一个很好的工具。接下来,将简单介绍如何使用LangChain。

二、如何使用LangChain?(以通义千问为例)

2.1 安装

可以使用conda创建一个虚拟环境,方便管理。

conda create -n your_env_name python=3.10
conda activate your_env_name

之后安装LangChain,

pip install langchain

对于大语言模型来说,jupyter能够更好的调试,所以建议安装jupyter。接下来,让我们看下如何使用LangChain调用通义千问的模型。

2.2 简单案例

2.2.1 简单介绍通义千问

它是由阿里达摩院开发的大预言模型,可以在modelscope在线体验。

2.2.2 准备

你需要申请一个api-key(点击这里跳转)。大多数大语言模型都需要申请,有些需要付费,选择通义千问的原因之一就是因为它目前不要钱,白嫖真香。如下图所示
设置API-KEY

2.2.3 开始吧

先安装一个包(pip 贯穿整个学习过程),不过我发现这个包好像已经安装过了😓。试一下吧,运行说缺少包的再安装。

pip install --upgrade --quiet  dashscope(这个dashscope是用来调用通义模型的)

接下来,就跟着我在jupyter中逐步执行吧

from getpass import getpass
DASHSCOPE_API_KEY = getpass()

执行上述代码后,会弹出来一个框让你输入API-KEY,把上一步申请到的KEY复制到里边就行了。

import os
os.environ["DASHSCOPE_API_KEY"] = DASHSCOPE_API_KEY

设置环境变量

from langchain_community.llms import Tongyi
Tongyi().invoke("LangChain是什么?")

让后就可以调用了。😊
下面是答案:

‘LangChain是一个开源的自然语言处理库,由Galactica团队开发,旨在为研究人员和开发者提供一个灵活、可扩展的框架,用于构建和实验各种自然语言处理任务的模型。LangChain支持多种语言和模型架构,并且可以与Hugging Face的Transformers库等其他工具集成。它允许用户轻松地组合不同的预训练模型和组件,以实现复杂的自然语言处理工作流。LangChain的目标是促进自然语言处理领域的创新和研究,同时降低开发者的入门门槛。’

怎么样,还算简单哈。

2.2.4 Chain

接下来,更进一步,让我们用提示模板来指导其进行相应。提示模板可以将我们的输入更好的告诉大模型。

from langchain_core.prompts import PromptTemplate
llm = Tongyi()

定义一个模板,你可以对答案提一些要求,或者给它一些引导,比如说它现在是一个XX身份来回答你的问题。 – 怪好玩的😏

template = """Question: {question}
Answer: 答案不超过十个字."""

prompt = PromptTemplate.from_template(template)

组合成一个chain

chain = prompt | llm

让后再看一下答案

question = "LangChain是什么?"
chain.invoke({"question": question})

下面是答案

‘LangChain是一个自然语言处理的框架。’

有点尴尬,超过10个字了,不过它确实变短了。

总结

感觉短时间内没有办法把LangChain理解清楚,我自己也是一头雾水,不过接下来我会继续探索,相信随着学习的深入,会对LangChain有一个全面的认识。
文章若有错误的地方,欢迎批评指正。

参考文献

LangChain官方文档

;