LangChain入门教程,基本案例、调用官方api、中转api、阿里api等
目录
0 关于本文
1 准备环境
1.1 安装LangChain的相关Python包
pip install langchain
pip install -qU langchain-openai
pip install "langserve[all]"
1.2 准备LangSmith的API Key(不是必要步骤,但是是免费的)




还是这个界面,点击“New Project”
点击“Generate API Key”
复制保存好你的API Key
1.3 准备语言模型的API
1.4 准备环境变量
使用你的IDE创建一个Python项目,这个你应该会,不会就建议先学好基础再来学本教程。
在.py文件(就是你书写大模型代码的Python文件,后文无特殊说明使用main.py。同理,如果你使用的是Jupyter NoteBook,就是在.ipynb文件同级目录)的同级目录下创建一个全名为.env的文件,这个文件是用于存放环境变量的,我们把环境变量定义在里面,然后py文件可通过load_dotenv()方法快速加载这些环境变量,例如我的项目文件结构是这样的:
在.env文件(全名就是“.env”,不能做任何修改)中书写定义环境变量:
2 一个简单的案例
为了让大家先感受一下LangChain框架,这里给出一个最简单的案例。注意,这个案例一定是正确的,如果报错则一定是环境缺少包或者环境变量没配置等问题。
from dotenv import load_dotenv
from langchain_core.messages import SystemMessage, HumanMessage
from langchain_openai import ChatOpenAI
# 加载.env文件的环境变量
load_dotenv()
# 创建一个大语言模型,model指定了大语言模型的种类
model = ChatOpenAI(model="gpt-3.5-turbo")
# 定义传递给模型的消息队列
# SystemMessage的content指定了大语言模型的身份,即他应该做什么,对他进行设定
# HumanMessage的content是我们要对大语言模型说的话,即用户的输入
messages = [
SystemMessage(content="把下面的语句翻译为英文。"),
HumanMessage(content="今天天气怎么样?"),
]
# 打印模型的输出结果
print(model.invoke(messages).content)
结合代码中的注释我相信你能看懂这个简单案例的功能(调用大模型,让他把“今天天气怎么样?”这句话翻译为英文并输出)。这其实就是一个最基本的LangChain程序逻辑,相信你已经有了一定的感受。
执行结果(输出类似,模型成功翻译):
如果你设置了LangSmith的API进行跟踪,则还可以查看LangSmith的结果:
点击每一行的Name可以查看该跟踪对话的详情:
接下来,后文将以此为案例为基础进行扩展,介绍一些更强大的功能。
3 使用StrOutputParser对模型结果进行解析
from langchain_core.output_parsers import StrOutputParser
# ...省略的代码
# 使用result接收模型的输出,result就是一个AIMessage对象
result = model.invoke(messages)
# 定义一个解析器对象
parser = StrOutputParser()
# 使用解析器对result进行解析
parser.invoke(result)
model.invoke(messages).pretty_print()
4 使用ChatPromptTemplate构建输入消息列表
prompt_template = ChatPromptTemplate.from_messages([
("system", "把下面的语句翻译为{language}。"),
("user", "{text}")]
)
prompt = prompt_template.invoke({"language": "英文", "text": "今天天气怎么样?"})
print(prompt)
打印结果如下,可以看见同样构建了和简单案例一样的消息队列作为Prompt,但是具有了更高的可定制性。你可能还不理解这种参数化可定制性的好处,不过后面你会慢慢感受到,比如我可以把该应用包装为一个服务,调用者只需要传给我相应参数,而不需要多余的文字。
5 通过LCEL连接各组件
chain = prompt_template | model | parser
print(chain.invoke({"language": "英文", "text": "今天天气怎么样?"}))

6 使用LangServe把大模型包装成可供调用的服务
# 安装并引入需要的包
from fastapi import FastAPI
from langserve import add_routes
import uvicorn
# 使用FastAPI创建一个可访问的应用
app = FastAPI(
title="LangChain Server",
version="1.0",
description="A simple API server using LangChain's Runnable interfaces",
)
# 将该应用包装为一个服务
add_routes(
app,
chain,
path="/chain",
)
# 通过unicorn启动服务
uvicorn.run(app, host="localhost", port=8000)

补充一:使用其他大模型
1、阿里云百炼平台(免费,推荐)





2、使用OpenAI官方的API
HTTP_PROXY='http://your_http_proxy:port'
HTTPS_PROXY='https://your_https_proxy:port'
作者:_清豆°