AI学习-langchain

官网文档地址

Deep Agents 概述 - LangChain 文档 - LangChain 教程

环境准备

创建项目

安装依赖

复制代码
pip install -U langchain==1.2.12

也可以安装一下读取环境变量的依赖

复制代码
pip install dotenv

对话模型调用

使用deepseek模型

先安装deepseek依赖

复制代码
pip install langchain-deepseek

deepseek官网

创建.env文件,配置环境变量

调用模型

复制代码
import os

from langchain_deepseek import ChatDeepSeek
from dotenv import load_dotenv
#1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先
load_dotenv(override=True)
DEEPSEEK_BASE_URL =os.getenv("DEEPSEEK_BASE_URL")
DEEPSEEK_API_KEY =os.getenv("DEEPSEEK_API_KEY")
#2、模型的初始化
deepseek = ChatDeepSeek(
    model='deepseek-v4-flash',
    api_key=DEEPSEEK_API_KEY,
    base_url=DEEPSEEK_BASE_URL
)
#3、模型调用
res = deepseek.invoke('请用一句话介绍你自己')
print(res)

响应

硅基流动平台(其他模型只要替换模型名称即可)

硅基流动平台有很多免费的模型使用(10B以下)

硅基流动统一登录

复制模型名称

查看调用方法

在.env中配置环境变量

代码实现

复制代码
import os

from langchain_deepseek import ChatDeepSeek
from dotenv import load_dotenv
#调用硅基流动平台
load_dotenv(override=True)
#1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先
GUI_KEY=os.getenv('GUI_KEY')
GUI_BASE_URL=os.getenv('GUI_BASE_URL')
#2、模型的初始化
chat = ChatDeepSeek(
    model='deepseek-ai/DeepSeek-OCR',
    api_key=GUI_KEY,
    base_url=GUI_BASE_URL
)
#3、模型调用
re = chat.invoke('你是谁')
print(re)

响应

智普模型

硅基流动平台

只需要在原来deepseek的基础上修改一下模型名称即可

复制代码
#智普模型
import os

from langchain_deepseek import ChatDeepSeek
from dotenv import load_dotenv
load_dotenv(override=True)
#1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先
GUI_KEY=os.getenv('GUI_KEY')
GUI_BASE_URL=os.getenv('GUI_BASE_URL')
#2、模型的初始化
zhipu = ChatDeepSeek(
    model='THUDM/GLM-Z1-9B-0414',
    api_key=GUI_KEY,
    base_url=GUI_BASE_URL
)
#3、模型调用
re1 = zhipu.invoke('你是谁')
print(re1)

响应

混元模型

硅基流动平台

只需要在原来deepseek的基础上修改一下模型名称即可

复制代码
#混元模型
import os

from langchain_deepseek import ChatDeepSeek
from dotenv import load_dotenv
load_dotenv(override=True)
#1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先
GUI_KEY=os.getenv('GUI_KEY')
GUI_BASE_URL=os.getenv('GUI_BASE_URL')
#2、模型的初始化
hunyuan = ChatDeepSeek(
    model='tencent/Hunyuan-MT-7B',
    api_key=GUI_KEY,
    base_url=GUI_BASE_URL
)
#3、模型调用
re1 = hunyuan.invoke('你是谁')
print(re1)

响应

chatOpenAI兼容写法

复制代码
#openAI写法
from langchain_openai import ChatOpenAI

from dotenv import load_dotenv
#1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先
load_dotenv(override=True)
DEEPSEEK_BASE_URL =os.getenv("DEEPSEEK_BASE_URL")
DEEPSEEK_API_KEY =os.getenv("DEEPSEEK_API_KEY")
#2、模型的初始化
openAi = ChatOpenAI(
    model='deepseek-v4-flash',
    api_key=DEEPSEEK_API_KEY,
    base_url=DEEPSEEK_BASE_URL
)
r = openAi.invoke("你好啊,你是谁")
print(r)

响应

langchain中模型初始化写法

init_chat_model是LangChain1.x中推出的用于初始化聊天模型的统一接口。只要是LangChain支持的模型都可以处理,它会根据模型名称自动选择对应的模型类初始化实例。

复制代码
from langchain.chat_models import init_chat_model

model = init_chat_model(
    "provider:model_name",#提供商:模型名称
    api_key='',#API密钥(可选,可从环境变量读取)
    temperature=0.7,#温度参数(可选)
    max_tokens=1000,#最大 token 数(可选)
    **kwargs #其他模型特定参数
     )

问题 :init_chat_model和直接使用 ChatTongyi、ChatOpenAI、ChatDeepSeek有什么区别?

回答:init_chat_model是LangChain1.0的统一接口,优势包括:

  • 统一接口:无需记住每个提供商的不同初始化方式(以一致的方式初始化)
  • 易于切换:简化了智能体系统中模型切换策略(只需修改模型字符串)
  • 简洁明了:更简洁的语法,减少样板代码,
  • 自动适配:内部根据模型标识自动选择对应的驱动类(ChatOpenAl、ChatDeepSeek)

调用deepseek官网

复制代码
from langchain.chat_models import init_chat_model
from dotenv import load_dotenv
import os
#1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先
load_dotenv(override=True)
DEEPSEEK_BASE_URL =os.getenv("DEEPSEEK_BASE_URL")
DEEPSEEK_API_KEY =os.getenv("DEEPSEEK_API_KEY")
model = init_chat_model(
    model='deepseek-v4-flash',
    api_key=DEEPSEEK_API_KEY,
    base_url=DEEPSEEK_BASE_URL
    )
res = model.invoke('你是谁啊')
print(res)

调用硅基流动的deepseek

复制代码
from langchain.chat_models import init_chat_model
from dotenv import load_dotenv
import os
#1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先
load_dotenv(override=True)
GUI_KEY =os.getenv("GUI_KEY")
GUI_BASE_URL =os.getenv("GUI_BASE_URL")
model = init_chat_model(
    model='deepseek-ai/DeepSeek-OCR',
    api_key=GUI_KEY,
    base_url=GUI_BASE_URL
    )
res = model.invoke('你是谁啊,用中文回答')
print(res)

模型调用

在 LangChain 中,模型调用(Invocation)是指通过特定方法触发大语言模型生成输出的过程。根据不同的应用场景和需求,LangChain 提供了几种核心的调用方式,主要是 invoke()stream()batch() 方法,以及它们的异步版本 ainvoke()astream()abatch(),下面将系统地介绍这些方法。

  • invoke() :阻塞式,一次性返回完整结果。适用于问答、批处理任务、无需实时反馈的场景。
  • ainvoke():非阻塞式,提高系统吞吐量。适用于高并发 Web 应用、IO 密集型任务。
  • stream() :流式输出,实时返回每个 token。适用于聊天机器人、长文本生成、需要提升用户体验的交互应用。
  • astream() :非阻塞式,提高系统吞吐量。适用于高并发 Web 应用、IO 密集型任务。(注:原文图片中此处拼写为 asteam(),此处已修正为正确拼写)。
  • batch()批量处理多个输入。适用于高并发场景,需要同时处理大量请求。
  • abatch():非阻塞式,提高系统吞吐量。适用于高并发 Web 应用、IO 密集型任务

阻塞式

复制代码
import os
from langchain_deepseek import ChatDeepSeek
from dotenv import load_dotenv
#1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先
load_dotenv(override=True)
DEEPSEEK_BASE_URL =os.getenv("DEEPSEEK_BASE_URL")
DEEPSEEK_API_KEY =os.getenv("DEEPSEEK_API_KEY")
#2、模型的初始化
chat = ChatDeepSeek(
    model='deepseek-v4-flash',
    api_key=DEEPSEEK_API_KEY,
    base_url=DEEPSEEK_BASE_URL
)
#3、模型调用
re = chat.invoke('你是谁')
print(re)

流式

复制代码
import os
from langchain_deepseek import ChatDeepSeek
from dotenv import load_dotenv
#1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先
load_dotenv(override=True)
DEEPSEEK_BASE_URL =os.getenv("DEEPSEEK_BASE_URL")
DEEPSEEK_API_KEY =os.getenv("DEEPSEEK_API_KEY")
#2、模型的初始化
chat = ChatDeepSeek(
    model='deepseek-v4-flash',
    api_key=DEEPSEEK_API_KEY,
    base_url=DEEPSEEK_BASE_URL
)
#3、模型调用
response = chat.stream('你是谁')
for res in response:
    print(res.content)

三种参数

复制代码
messages = [
    {'role':'system','content':'你是一个数学老师'},
    {'role':'user','content':'1+1=?'},
    {'role':'assistant','content':'2'},
    {'role':'user','content':'我刚刚问了什么'},
]
re = chat.invoke(messages)
print(re.content)
相关推荐
浔溺5 小时前
al+大数据每日学习笔记28
笔记·学习
Cx330❀5 小时前
【LangChain】LangChain 核心技术全景指南:从基础入门到 LCEL 链式编程
大数据·elasticsearch·搜索引擎·性能优化·langchain·全文检索
xian_wwq12 小时前
【学习笔记】-深度认知系列-第2讲-大模型到底是什么?——拆解“参数、训练、推理”
笔记·学习·深度认知
lzhdim13 小时前
12、JavaScript常见的内存泄露问题 - JavaScript学习系列文章
开发语言·前端·javascript·学习·ecmascript
那年窗外下的雪.15 小时前
AIDC 学习日志|第 15 天|EVPN 多归属故障收敛与撤销机制
网络·学习·php
M78佐菲16 小时前
Linux学习笔记:进程
linux·笔记·学习·算法
我命由我1234518 小时前
人脸识别 - 勒克斯(光线照射到物体表面上的明亮程度)
android·java·学习·java-ee·人脸识别·学习方法·android runtime
Logintern0919 小时前
【每天学习一点点】MPI是什么?
学习·mpi·多机训练
fengci.19 小时前
提示词注入学习小结
学习
晓梦林19 小时前
Tools2靶场学习笔记
笔记·学习