一. 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本身不包含具体模型实现,需要根据使用的模型安装对应的提供商包

image

   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)
View Code

 

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)
View Code

 

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)
View Code

 

posted on 2026-07-21 16:26  colorfulworld  阅读(14)  评论(0)    收藏  举报