前言:

很多初学者会问:我直接调

OpenAI 或者百度的 API 不好吗?干嘛非得中间加个框架? 想象一下,如果你出国旅行,每个国家的插座形状都不一样,难道你要带十几个不同的充电头吗?LangChain 就是那个“万能转换插头”! 现在的模型种类繁多,今天你想用 OpenAI,明天想换成通义千问或者 DeepSeek。如果没有 LangChain,你需要把代码全盘重写;有了 LangChain,你只需要改一行代码。它在底层帮你统一了所有大模型的调用接口,这才是它的核心魅力所在。


1.安装依赖和配置密钥

1
2
# 我们以 OpenAI 为例,并使用 dotenv 来管理密钥
pip install langchain-openai python-dotenv

2.创建.env文件存放API

API 密钥千万不能直接明文写在代码里传到网上!我们在项目目录下新建一个 .env 文件来专门存放它们:

1
2
3
OPENAI_API_KEY=sk-xxxxxxxxx你的密钥xxxxxxxxx
# 如果在国内调用,通常还需要配置一个代理地址
OPENAI_BASE_URL=https://api.your-proxy.com/v1

3.大模型的两种调用方式

现在我们写一段简单的Python代码,实例化大模型

1
2
3
4
5
6
7
8
9
10
11
12
13
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI

# 1. 自动加载 .env 文件里的密钥,保密工作完成!
load_dotenv()

# 2. 实例化大模型 (就像选定一个聊天对象)
llm = ChatOpenAI(
model="gpt-3.5-turbo"
temperature=0.6, # 温度值(0-1),值越低输出越严谨,值越高越灵活
max_completion_tokens=2048 # 最大生成 tokens 数,控制输出长度
)

3.1 一次性 invoke 对话(适合短文本、快速获取结果)

一次性发送提问,等待模型完整返回结果,适合不需要实时反馈的场景:

1
2
3
4
# 一次性提问并获取完整结果
res = llm.invoke('你好?简单介绍一下 LangChain')
# 打印模型返回的内容
print(res.content)

3.2 流式对话(主流方式,提升用户体验)

流式对话会将模型的输出按片段返回,像打字机一样逐字显示,避免因等待完整结果导致的“卡顿感”,是目前主流的交互方式(如 GPT、豆包等均采用此方式):

1
2
3
4
5
6
7
# 定义提问内容
question = '你好?简单介绍一下 LangChain'

# 流式调用,返回迭代器,逐片段获取输出
for chunk in llm.stream(question):
# end='' 禁止换行,flush=1 强制实时刷新,实现“打字机”效果
print(chunk.content, end='', flush=1)