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)
相关推荐
灵性(๑>ڡ<)☆2 小时前
Java学习笔记--面向对象高级(多态)
笔记·学习
AA陈超2 小时前
003 XiYou 西游 — P0 阶段实施计划
c++·笔记·学习·ue5
其实防守也摸鱼2 小时前
运维--安全与数据库
网络·数据库·学习·安全·安全威胁分析·数据库架构·软件安全
pop_xiaoli3 小时前
【iOS】YYModel源码学习
学习·ios·objective-c·cocoa
又抓住你了3 小时前
LangChain概述与环境准备:从框架定位到第一个应用
langchain
嵌入式-老费3 小时前
esp32开发与应用(利用loopback学习can)
学习
海上彼尚4 小时前
Nodejs也能写Agent - 17.LangGraph篇 - Checkpointer 与 Memory
前端·javascript·人工智能·langchain·node.js
xianrenli385 小时前
DS5900作业之“氛围(Vibe)”背后的伦理
学习·ai编程·msai
iuu_star5 小时前
Python大模型智能学习平台——设计与实现(AI教学系统)
大数据·人工智能·python·学习