LangChain 学习第 1 课 - 模型基本调用

LangChain之模型调用 LangChain的模型是框架中的核心,基于语言模型构建,用于开发LangChain应用。通过API调用大模型来解决问题是LangChain应用开发的关键过程。可以把对模型的使用过程拆解成三块:这三块形成了一个整体,在LangChain中这个过程被统称为Model I/O。针对每块环节,LangChain都提供了模板和工具,可以帮助快捷的调用各种语言模型的接口。 阅读详情

本节课学到:

  1. ChatModel(聊天模型)是 LangChain 最核心的抽象,与具体厂商无关;
  2. 模型的三种调用方式:invoke(单次)、stream(流式)、batch(批量);
  3. 消息(Message)的四种角色:System / Human / AI / Tool;
  4. 返回结果 AIMessage 的结构(内容、token 用量等)。
"""
01 模型基本调用 —— LangChain 学习第 1 课
==========================================

本节课你会学到:
  1. ChatModel(聊天模型)是 LangChain 最核心的抽象,与具体厂商无关;
  2. 模型的三种调用方式:invoke(单次)、stream(流式)、batch(批量);
  3. 消息(Message)的四种角色:System / Human / AI / Tool;
  4. 返回结果 AIMessage 的结构(内容、token 用量等)。

运行方式(在项目根目录下):
    .venv\\Scripts\\python examples\\01_quickstart.py
"""

import sys
from pathlib import Path

# 让脚本可以独立运行:把项目根目录加入模块搜索路径,才能找到 config
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))

from langchain_core.messages import AIMessage, HumanMessage, SystemMessage  # 消息类型

from config import get_chat_model, print_sub, print_title  # 全局配置/排版工具


def demo_invoke_string() -> None:
    """方式一:最简单的字符串调用。传字符串会被自动包装成 HumanMessage。"""
    print_sub("1. invoke:最简单的单次调用(字符串输入)")
    llm = get_chat_model(temperature=0.3)  # temperature 低一些,回答更确定
    response: AIMessage = llm.invoke("用一句话向初学者解释什么是 LangChain")
    print("回答内容 response.content:")
    print(response.content)
    # response_metadata 里有厂商返回的原始信息(模型名、完成原因等)
    print(f"\nresponse_metadata:{response.response_metadata}")


def demo_invoke_messages() -> None:
    """方式二:消息列表调用 —— 真实应用最常用的姿势。"""
    print_sub("2. invoke:消息列表调用(System + Human)")
    llm = get_chat_model(temperature=0.7)

    # SystemMessage:设定 AI 的"人设"和规则(用户看不到)
    # HumanMessage:用户说的话
    messages = [
        SystemMessage(content="你是一个毒舌但善良的编程教练,说话简短,爱用比喻。"),
        HumanMessage(content="我学了三天 Python 还搞不懂递归,怎么办?"),
    ]
    response = llm.invoke(messages)
    print(response.content)

    # usage_metadata 记录 token 消耗(费用和上下文长度都靠它估算)
    print(f"\n本次 token 用量 usage_metadata:{response.usage_metadata}")


def demo_stream() -> None:
    """方式三:流式输出 —— 像 ChatGPT 网页版一样一个字一个字往外蹦。"""
    print_sub("3. stream:流式输出(逐块打印)")
    llm = get_chat_model(temperature=0.8)
    print("AI:", end="", flush=True)  # flush=True 立即刷新缓冲区,否则会卡成一坨
    # stream() 返回一个迭代器,每个 chunk 是一个小的 AIMessage 片段
    for chunk in llm.stream("用三句话鼓励一个刚开始学编程的人"):
        print(chunk.content, end="", flush=True)
    print()  # 换行收尾


def demo_batch() -> None:
    """方式四:批量调用 —— 一次提交多个独立问题,并发执行、按序返回。"""
    print_sub("4. batch:批量调用(多个问题并发)")
    llm = get_chat_model(temperature=0.0)  # 事实性任务用 0,减少随机发挥
    questions = [
        "中国的首都是哪里?只回答城市名。",
        "日本的首都是哪里?只回答城市名。",
        "法国的首都是哪里?只回答城市名。",
    ]
    responses = llm.batch(questions)  # 内部并发,结果顺序与输入顺序一致
    for q, r in zip(questions, responses):
        print(f"问:{q}\n答:{r.content.strip()}")


def main() -> None:
    print_title("01 模型基本调用:invoke / stream / batch 与消息类型")
    demo_invoke_string()
    demo_invoke_messages()
    demo_stream()
    demo_batch()
    print_sub("本课小结")
    print("ChatModel 三大调用:invoke(单次)、stream(流式)、batch(批量)。")
    print("消息四角色:SystemMessage 定人设、HumanMessage 是用户、AIMessage 是回答、ToolMessage 第 7 课见。")
    print("模型对象是无状态的:它不会记住上一句,多轮记忆请见 05_memory.py。")


if __name__ == "__main__":
    main()

Langchain学习笔记(七):Langchain模型接入与调用 本文是Langchain框架的学习笔记;不是教程!不是教程!内容可能有所疏漏,欢迎交流指正。后续将持续更新学习笔记,分享我的学习心得和实践经验。 阅读详情

相关推荐

开源模型应用落地-LangChain试炼-CPU调用QWen1.5(一)

基于LangChain框架,调用QWen1.5-7b-chat模型

以微薄之力,予他人些许温暖. 3884

【langchain】langchain调用huggingface本地模型基础demo

目前网上的langchain教程大多数都是关于如何调用OpenAI等远程模型,对于本地模型的调用示例写法比较少。而且langchain也在不停迭代,文档也比较杂。因此,本文将向大家介绍如何使用Langchain调用Hugging Face本地模型的基础demo,帮助大家快速开始langchain的“Hello World”。【注意】事先安装langchain_huggingface、langchain,并下载好模型权重。相关写法参考的是langchain官方文档。

十一月廿七风雨大作 9042

STM32F103C8T6实战:从零搭建三相SPWM逆变器(附MATLAB仿真、PCB、源码)

本文详细介绍了如何使用STM32F103C8T6单片机从零搭建三相SPWM逆变器,涵盖硬件选型、PCB设计、SPWM算法实现及MATLAB仿真。项目提供完整的工程文件,包括源码、PCB设计和仿真模型,适合电子工程师和学生进行实践学习。通过本教程,读者可以掌握逆变器设计的核心技术和调试方法。

weixin_30458043的博客 453

LangChain 调用deepseek模型

使用 DeepSeek 替代 OpenAI 的方案在功能和性能上相当,特别适合中文场景,且对国内用户网络更友好。主要支持主流模型(OpenAI、Anthropic、Hugging Face 等)DeepSeek 作为新兴国产模型,尚未被官方集成。备注:主要是用langchain,本方案不考虑。原因:DeepSeek 的 API 接口​。可以利用这一点实现无缝对接。

seanyang_的博客 2528

opencv实践项目-图片拼接之缝合线算法

opencv 图片缝合线算法

wyw0000的博客 2624

MATLAB闪退别慌!5分钟搞定Windows系统预设文件修复(附详细截图)

本文针对MATLAB在Windows系统下频繁闪退的问题,提供了快速有效的解决方案。核心在于修复或重置损坏的MATLAB预设文件,通过图文并茂的五步法,指导用户定位AppData目录、重命名预设文件夹,从而让MATLAB自动生成全新配置以解决闪退。文章还涵盖了问题诊断、设置备份及进阶排查方法,帮助用户彻底根除启动故障。

weixin_29234423的博客 925

[langchain教程]langchain01——用langchain调用大模型

LangChain 是一个开源框架,旨在简化基于大型语言模型(LLMs)的应用程序开发。通过模块化组件和链式结构将语言模型与外部数据源、工具和任务流程集成,构建复杂且功能强大的应用程序。

jennycisp的博客 1577

swupdate-签名验证

swupdate加密部分具体在中可以查看。

qq_28219531的博客 1148

大模型学习1——各类模型接入langchain,模型调用,记忆管理,工具调用

本系列会设计langchain开发、RAG、langgraph本文主要介绍模型如何接入langchain,模型调用,记忆管理,工具调用,具体如下```python import langchain ``` ```python langchain.__version__ ``` '1.2.0' ```python %pwd ``` 'D:\\' ```python import os print(os.getcwd()) ``` D:\ ```python #将秘钥放入nev文

m0_60792028的博客 1041

【Flutter 问题系列第 85 篇】Xcode 运行 Flutter 提示 The Dart VM Service was not discovered after 60 seconds.

在 Xcode 上运行 Flutter 时提示 `The Dart VM Service was not discovered after 60 seconds. This is taking much longer than expected...`,意思是 `60秒后未发现Dart虚拟机服务。这比预期的要长得多`

“Allen Su”的博客 2236

FortiWeb 相对路径遍历漏洞复现(CVE-2025-64446)

FortiWeb是Fortinet公司推出的企业级Web应用防火墙(WAF),专为保护Web应用和API抵御高级威胁设计。它集成人工智能与机器学习技术,通过双层检测引擎(HMM模型与SVM向量机)精准识别异常流量,可防御OWASP Top 10攻击、SQL 注入、XSS、DDoS及恶意机器人。其核心功能包括API自动化保护、虚拟补丁集成(兼容Acunetix等第三方扫描工具)及智能流量分析,支持HTTP/2、WebSocket等现代协议。(CVE-2025-64446)

iSee857的博客 467

LangChain模型调用

LangChain是连接Python与各大模型厂商的统一框架,支持OpenAI兼容接口,可便捷调用阿里云百炼、DeepSeek等模型。通过init_chat_model实现多模型统一管理,结合.env配置密钥与参数,推荐使用流式stream()提升交互体验。项目需遵循企业级规范:日志标准化、环境变量隔离、异常分级捕获、模型封装初始化,并通过if __name__ == "__main__"保护入口。配套.gitignore屏蔽敏感文件,保障安全。

weixin_61074074的博客 581

Pre-suite 开发之MFi功能搭建

Pre-suite 固件中只有带无线硬件的Ezairo 7160sl才具备无线通信能力,其无线功能包括标准BLE 5.2 低功耗蓝牙功能以及非标准的低功耗无线音频流功能。Ezairo 7160sl 支持3种低功耗无线音频流协议:来自APPLE的MFi,来自Google的ASHA以及来自onsemi的remote mic。其中MFi音频流走的G.722编码的Mode1,速率为64kbps;而非MFi音频流走的G.722的Mode3,速率为48kbps.

SnowYang2017的博客 1501

二、在Langchain中调用Llama3.1

目的:使用AutoDL的深度学习环境,简单部署大模型。

weixin_47667570的博客 1846

基于 MATLAB 的 FastICA 算法实现语音信号盲分离

FastICA 算法通过最大化信号的非高斯性,找到独立成分,从而实现信号的分离。这些混合的信号被称为盲源信号,我们希望通过分析混合信号,将它们分离出来以便进行进一步的处理和分析。FastICA 是一种常用的盲源信号分离算法,它基于统计学原理,通过寻找独立成分来实现信号的分离。FastICA(独立成分分析)是一种常用的盲源信号分离算法,在语音和图像处理领域都有广泛的应用。本文将介绍如何使用 MATLAB 实现 FastICA 算法来实现语音信号的盲分离,并提供相应的源代码。FastICA 算法原理。

学习使你进步。 2024

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【langchain/入门】使用langchain调用本地部署的大模型(以llama.cpp以及ollama为例)

langchain入门教程第二篇,使用本地部署的大模型(包含ollama以及llama.cpp)

o0o 2991

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

LangChain4j调用大模型学习

本文介绍了LangChain4j集成大模型的方法。主要内容包括:1)通过Spring Boot实现基础会话功能,包含配置OpenAI模型和开发接口;2)使用AiService工具类构建代理对象,支持手动注册和注解自动注入;3)实现流式调用提升响应体验;4)消息注解@SystemMessage和@UserMessage的使用;5)会话记忆功能实现,通过MessageWindowChatMemory保存历史消息;6)会话记忆隔离配置。文章提供了详细代码示例和配置说明,帮助开发者快速集成大模型功能。

qq_74289024的博客 1170

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【LangChain】使用聊天模型调用工具

在 LangChain 中,使用聊天模型调用工具是一种强大的机制,允许语言模型(LLM)通过动态选择和执行外部工具来完成复杂任务。工具调用(Tool Calling)结合了聊天模型的自然语言理解能力和外部工具(如搜索、计算、API 调用等)的功能,使模型能够处理需要外部数据或特定操作的任务。实现方式:bind_tools:直接绑定工具。AgentExecutor:自动管理工具调用。StructuredTool:定义结构化工具。LangGraph:自定义工作流

彬彬侠的博客 1704

大模型部署调用(vLLM+LangChain)

在上一章【[大模型三阶段训练方法(LLaMa Factory)]】内容中主要了解一个大模型的训练过程,无论是第三方的大模型还是自研的大模型,都需要部署到服务端,提供对应API接口供上层应用使用。所以,本章将主要了解vLLm + langchain的基本使用方法。

2401_85343303的博客 2039

【LangChain实战】LangChain 学习笔记(一):从定义大模型到工具调用

只会调 API 不够,还要会"编排"! 本文用 DeepSeek 实测 LangChain:从消息类型、Runnable 接口到 LCEL 管道链,再到 bind_tools 工具调用,每步都有可直接运行的完整代码,零基础也能照着写。

2601_96587588的博客 718

LangChain无法调用OpenAI API?手把手教你调用国产大模型!

import osHumanMessage(content="你的名字是什么."),太好了,它成功进行了回答!

m0_63171455的博客 1894
上一篇: Coze插件AI复刻之:网页截图
下一篇: LangChain 学习第 2 课 - 提示词模板(Prompt Template)
hackchen
博客等级 码龄19年 193粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值