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 小时前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节
破烂三角裤2 小时前
AI 没有记忆?我给儿童故事 Agent 搭了一套“长期记忆”系统
langchain
小李不想当小白2 小时前
SPI通信外设与W25Q64 (硬件SPI)(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
云和数据.ChenGuang4 小时前
光哥说Python 异常深度解析:从异常模型到工程化实践
java·前端·人工智能·python·langchain
adinnet20266 小时前
电商客服对话知识库的自学习闭环与质量演进机制
学习
lazy H7 小时前
【计算机网络】第 13 篇:NAT 和端口映射是什么?为什么本地服务外网访问不了?
java·网络·网络协议·学习·计算机网络·408
Maiko Star7 小时前
【HM-LC】LangChain RAG查询优化详解:查询重写、混合检索与重排序实战
langchain·rag
试剂界的爱马仕8 小时前
α-Cyano-4-hydroxycinnamic acid(CHCA)用作 MALDI-TOF 基质的配制与使用
大数据·人工智能·深度学习·学习
2501_913061348 小时前
MCP核心能力
langchain
小向是个Der8 小时前
嵌入式进阶——编译与链接
汇编·单片机·学习·编译原理·交叉编译