一. LangChain环境搭建
1. python环境
$ python --version
Python 3.12.7
2. 安装LangChain
这个命令会安装LangChain主包,它包含init_chat_model()、create_agent()等核心API,同时自动安装langchain-core作为依赖
$ pip install langchain
3. 安装模型提供商包
pip install langchain langchain-openai python-dotenv #安装opeanAI,python-dotenv 用于从 .env 文件加载 API Key,这是管理敏感信息的最佳实践,可以避免将 Key 硬编码在代码中。
langchain本身不包含具体模型实现,需要根据使用的模型安装对应的提供商包

4. 配置API Key
对应模型官网获取api key
5. 管理API key
创建.env文件,进行api key管理
# 文件路径:.env # 填入你的 API Key OPENAI_API_KEY=sk-your-api-key-here # 如果使用其他模型,也在这里配置 # ANTHROPIC_API_KEY=sk-ant-your-key # DEEPSEEK_API_KEY=sk-your-key
.gitignore中添加如下内容,确保.env不被提交
# .gitignore .env __pycache__/ *.pyc
6. 项目结构
langchain-learning/ ├── .env # API Key 配置(不提交到 Git) ├── .gitignore # Git 忽略规则 ├── config.py # 公共配置加载 ├── 01_hello_world.py # 第一篇的示例 ├── 02_first_agent.py # Agent 示例 └── ... # 更多练习
二、LangChain集成DeepSeek
DeepSeek模型:
| 模型 | 用途 | 特点 |
| deepseek-v4-flash | 通用聊天模型 | 支持tool calling与结构化输出 |
| deepseek-v4-pro | 推理模型 | 更强推理能力,但不支持tool calling。支持流式输出 |
LangChain调用大语言模型执行模式:
invoke:是一次性等待完整结果
stream:边生成边输出(流式)
astream:MCP中应用是异步框架(FastAPI),LangChain还提供了异步版本的流式方法
LangChain + deepSeek-v4-flash示例:(model.invoke:一次返回所有结果)
import os from dotenv import load_dotenv from langchain.chat_models import init_chat_model from langchain_core.messages import SystemMessage, HumanMessage from langchain_deepseek import ChatDeepSeek # 加载 .env load_dotenv() # 获取 API KEY api_key = os.getenv("DEEPSEEK_API_KEY") # ChatDeepSeek方式创建模型 llm = ChatDeepSeek( api_key=api_key, model="deepseek-v4-flash", temperature=0, max_tokens=None, timeout=None, max_retries=2 ) # 通过init_chat_model方式创建模型 # model = init_chat_model("deepseek:deepseek-v4-flash", temperature=0.7) # response = model.invoke("介绍菜鸟教程 RUNOOB") #构建聊天消息 message=[ SystemMessage(content="你是一个专业的python老师"), HumanMessage(content="请解释什么是LangChain,并给出简单示例") ] # 调用模型 response = llm.invoke(message) print(response.content)
LangChain+deepSeek-v4-pro示例(model.stream:边生成边输出):
import os from dotenv import load_dotenv from langchain.chat_models import init_chat_model from langchain_core.messages import SystemMessage, HumanMessage from langchain_deepseek import ChatDeepSeek # 加载 .env load_dotenv() # 获取 API KEY api_key = os.getenv("DEEPSEEK_API_KEY") # ChatDeepSeek方式创建模型 llm = ChatDeepSeek( api_key=api_key, model="deepseek-v4-pro", temperature=0.7, max_tokens=1024, timeout=60, max_retries=2 ) message=[ SystemMessage(content="你是一个专业的诗歌创作人"), HumanMessage(content="请作一首以月亮为题的诗歌词,要求200字") ] for chunk in llm.stream(message): print(chunk.content,end="",flush=True)
LangChain+deepSeek-v4-pro+ChatPromptTemplate示例:
import os from dotenv import load_dotenv from langchain.chat_models import init_chat_model from langchain_core.messages import SystemMessage, HumanMessage from langchain_core.prompts import ChatPromptTemplate from langchain_deepseek import ChatDeepSeek # stream格式返回结果 # 加载 .env load_dotenv() # 获取 API KEY api_key = os.getenv("DEEPSEEK_API_KEY") # ChatDeepSeek方式创建模型 llm = ChatDeepSeek( api_key=api_key, model="deepseek-v4-pro", temperature=0.7, max_tokens=1024, timeout=60, max_retries=2 ) # ChatPromptTemplate.from_template作用是将一个包含占位符的字符串模板转化为结构化的ChatPromptTemplate对象, # 便于后续向大模型发送格式化的消息 prompt=ChatPromptTemplate.from_template( "请详细解释:{topic},并且介绍与{topic1}的区别" ) chain = prompt | llm for chunk in chain.stream({"topic":"爱情","topic1":"亲情"}): print(chunk.content, end="", flush=True) # response=chain.invoke({"topic":"爱情","topic1":"亲情"}) # print(response.content)
浙公网安备 33010602011771号