AI Agent从无到有20:使用LangChain大模型组件统一调用多模型

【NLP笔记】LLM应用之AI Agent & LangChain实战 AI Agent & LangChain 阅读详情

纲要

  • LangChain 大模型组件概述
  • LLMs 与 ChatModels 的核心区别
  • 官方合作包与社区包的依赖组织
  • 大模型标准参数配置
  • 标准事件驱动大模型交互
    • invoke:同步调用
    • stream:流式输出
    • batch:批量处理
    • astream_events:异步事件流
    • with_structured_output:结构化输出
  • 消息格式:OpenAI 格式与 LangChain 格式
  • 上下文窗口与速率限制的基础认知
  • 完整可运行代码示例

为什么需要统一的大模型组件

当前大模型生态中,不同的厂商提供各自独立的 API 与调用方式。若直接使用原生 SDK 进行 AI 应用开发,在需要切换或组合多个模型时将面临极高的集成成本。LangChain 提供的大模型组件正是为了抹平这些差异:无论是 OpenAI、DeepSeek 还是 Anthropic 的模型,都可以通过统一接口进行调用,从而显著降低开发复杂度。

LLMs 与 ChatModels 的区别

LangChain 对大模型的封装分为两类,其核心差异如下:

类型输入/输出功能特性当前地位
LLMs纯字符串仅文本补全,无工具调用、结构化输出、多模态旧范式,逐渐弃用
ChatModels消息列表(支持 OpenAI 与 LangChain 两种消息格式)支持工具调用、结构化输出、多模态、流式等主流推荐使用
  • ChatModels 既兼容 OpenAI 的 system / user / assistant 消息结构,也支持 LangChain 自定义的 SystemMessage、HumanMessage、AIMessage、ToolMessage 等格式。
  • 在 LangChain 中,带有 Chat 前缀的类(如 ChatOpenAI)都属于 ChatModels,而早期以纯文本为主的模型封装通常以 LLM 结尾(如 OpenAI)。当前实际开发中几乎全部采用 ChatModels。

包的组织:官方合作包与社区包

从 LangChain 0.3 版本开始,依赖包进行了拆分:

  • 官方合作包:以 langchain- 为前缀,如 langchain-openai、langchain-anthropic、langchain-google-genai、langchain-aws。由 LangChain 官方维护,接口升级及时,稳定性高。
  • 社区包:集中在 langchain-community 中,由开源社区贡献,维护时效和稳定性相对较低。

推荐优先使用官方合作包。安装方式示例:

pip install langchain-openai langchain-anthropic langchain-deepseek

标准参数一览

实例化大模型组件时可配置的核心参数(官方合作包强制统一):

参数说明示例
model模型名称"gpt-4"
temperature随机度(0~1),越小越遵循指令,越大越有创造性0.0(严格)或 0.7(创意)
timeout单次请求超时秒数30
max_tokens最大输出 token 数(部分新模型推荐使用 max_completion_tokens,详见官方文档)200
stop停止符,遇到该字符时立即停止输出"\n" 或 "我"
max_retriesAPI 调用失败后的最大重试次数3
api_key对应厂商的 API 密钥可从环境变量读取
base_url代理地址(如有需要)"https://api.openai.com/v1"
rate_limit请求速率限制(QPS)按厂商文档设置

注意:标准参数仅对厂商 API 开放了相应能力的模型有效。社区包不强制使用统一参数名。

标准事件驱动

大模型组件提供了一系列标准方法(事件)来驱动交互,下面的时序图展示了几种核心事件的生命周期:

ChatModel App ChatModel App loop [流式生成] invoke(prompt) 一次性返回完整 AIMessage stream(prompt) chunk (token by token) batch([prompt1, prompt2]) [AIMessage1, AIMessage2] astream_events(prompt) on_chat_model_start on_chat_model_stream (chunks) on_chat_model_end (完整结果) with_structured_output(schema).invoke(prompt) Pydantic 模型实例

invoke:同步调用

最基础的调用方式,传入提示词,等待模型返回完整结果。

stream:流式输出

逐 token 返回,前端可以呈现打字机效果,显著提升用户体验。使用 for 循环消费 chunk.content。

batch:批量处理

同时向模型发送多个请求,全部完成后统一返回结果列表。适用于批量评测、离线生成等场景。

astream_events:异步事件流

基于事件的流式输出,允许开发者在模型开始响应、流式输出中、输出结束时捕获不同事件并执行自定义逻辑。需使用 async for,并指定 version="v2"。

with_structured_output:结构化输出

让模型直接返回结构化数据(如 JSON),而非纯文本。通常结合 Pydantic 定义输出模式,下游代码可直接按字段读取,避免正则解析。

消息字段说明

大模型返回的 AIMessage 包含以下关键字段:

  • content:模型响应的文本内容
  • tool_calls:工具调用信息(标准化字段)
  • invalid_tool_calls:无效的工具调用
  • usage_metadata:输入 / 输出 token 统计
  • id:消息唯一标识
  • response_metadata:响应头、token 计数等原始数据

不同模型的原生返回字段并不相同,LangChain 会对 usage_metadata 等做标准化处理,但部分字段仍需注意厂商差异。

完整可运行代码

以下代码展示了使用 langchain-openai 调用 GPT-4,并演示标准参数配置以及五个核心事件。运行前请设置环境变量 OPENAI_API_KEY,并安装依赖:

pip install langchain-openai pydantic
import os
import asyncio
from pydantic import BaseModel, Field
from langchain_openai import ChatOpenAI

# 1. 配置模型,演示所有标准参数
llm = ChatOpenAI(
    model="gpt-4",
    temperature=0.4,          # 随机度
    timeout=30,               # 超时秒数
    max_tokens=200,           # 最大输出 token 数
    # stop=["我"],            # 可选停止符
    max_retries=3,            # 最大重试次数
    api_key=os.getenv("OPENAI_API_KEY"),   # 从环境变量读取
    # base_url="https://your-proxy.com/v1", # 如需代理
)

prompt = "用一句话介绍一下你自己。"

# 2. invoke:同步调用
print("=== invoke ===")
result = llm.invoke(prompt)
print(result.content)
print()

# 3. stream:流式输出
print("=== stream ===")
for chunk in llm.stream(prompt):
    print(chunk.content, end="", flush=True)
print("\n")

# 4. batch:批量处理
print("=== batch ===")
questions = [
    "LangChain 是什么?",
    "LangChain 有哪些竞品?",
]
results = llm.batch(questions)
for q, r in zip(questions, results):
    print(f"Q: {q}\nA: {r.content}\n")
print()

# 5. astream_events:异步事件流
async def stream_events():
    print("=== astream_events ===")
    events = []
    async for event in llm.astream_events(prompt, version="v2"):
        events.append(event)
        event_name = event["event"]
        if event_name == "on_chat_model_start":
            print("[事件] 模型开始响应")
        elif event_name == "on_chat_model_stream":
            chunk = event["data"]["chunk"]
            if chunk.content:
                print(chunk.content, end="", flush=True)
        elif event_name == "on_chat_model_end":
            print("\n[事件] 模型响应结束")
    # 最终输出包含 usage_metadata
    final_output = events[-1]["data"]["output"]
    print(f"Token 用量: {final_output.usage_metadata}")
    print()

asyncio.run(stream_events())

# 6. with_structured_output:结构化输出
print("=== structured output ===")
class Joke(BaseModel):
    """让模型输出一个笑话"""
    setup: str = Field(description="笑话的开场/包袱铺垫")
    punchline: str = Field(description="笑话的包袱/笑点")
    rating: int | None = Field(default=None, description="好笑程度 1-10 分")

structured_llm = llm.with_structured_output(Joke)
joke_result = structured_llm.invoke("给我讲一个程序员的笑话")
print(f"setup: {joke_result.setup}")
print(f"punchline: {joke_result.punchline}")
print(f"rating: {joke_result.rating}")

运行说明:

  • 代码依赖 langchain-openai 和 pydantic,请先通过 pip 安装。
  • 需要有效 OpenAI API Key 并设置为环境变量 OPENAI_API_KEY。
  • stop 参数可根据需要取消注释,观察停止符效果。
  • 异步部分需 Python 3.8+ 并安装 asyncio(标准库自带)。

API 速览

本文涉及的核心 API 均来自 langchain-openai 包(v0.3+),主要接口如下:

API所属库方法签名说明
ChatOpenAIlangchain_openaiChatOpenAI(model: str, temperature: float, ...)OpenAI 对话模型客户端,返回 ChatOpenAI 实例
invokeBaseChatModelinvoke(input: str, config: dict) -> AIMessage同步调用,返回完整 AIMessage
streamBaseChatModelstream(input: str, config: dict) -> Iterator[ChatGenerationChunk]流式调用,返回生成器,逐 token 产出 ChatGenerationChunk
batchBaseChatModelbatch(inputs: List[str], config: dict) -> List[AIMessage]批量调用,传入字符串列表,返回 AIMessage 列表
astream_eventsBaseChatModelastream_events(input: str, version: str, config: dict) -> AsyncIterator[dict]异步事件流,需指定 version="v2",产出事件字典
with_structured_outputBaseChatModelwith_structured_output(schema: Type[BaseModel]) -> Runnable绑定输出模式,返回支持结构化调用的 Runnable,调用 invoke 后返回 Pydantic 模型实例

参考文档

官方文档

参考链接

总结

本文系统介绍了 LangChain 大模型组件的核心知识,旨在帮助开发者通过统一接口调用不同厂商的大模型,显著降低集成复杂度。核心要点包括:

  • 组件分类:区分了旧式 LLMs(纯文本补全)与推荐的 ChatModels(支持消息、工具调用、结构化输出、多模态),当前开发应优先使用 ChatModels。
  • 包管理:LangChain 0.3 起依赖拆分为官方合作包(如 langchain-openai)和社区包(langchain-community),推荐优先使用官方合作包以确保稳定性和及时更新。
  • 标准参数:罗列了 model、temperature、timeout、max_tokens、stop、max_retries 等统一配置项,需注意部分参数(如 max_tokens)在新模型中有对应推荐字段,且标准参数仅对开放相应能力的模型有效。
  • 核心事件:详细讲解了 invoke(同步完整返回)、stream(逐 token 流式)、batch(批量并发)、astream_events(异步事件流,支持监听开始/流式/结束状态)和 with_structured_output(结合 Pydantic 直接输出结构化数据)五个核心方法,并通过时序图和完整代码展示了其生命周期和调用方式。
  • 消息格式:AIMessage 包含 content、tool_calls、usage_metadata 等重要字段,LangChain 已对部分字段(如 token 统计)做标准化处理,但厂商差异仍需关注。
  • 代码实践:提供了配置 ChatOpenAI 并演示所有核心事件的可运行 Python 脚本,涵盖同步调用、流式输出、批量处理、异步事件流和结构化输出,代码已确认可直接执行。
AI大模型实战:从RAG到Agent的LangChain学习路线 检索增强生成(RAG)通过将外部知识库与生成模型结合,解决了大模型知识更新和专业度不足的问题。其核心原理是将文档向量化存储,实现精准检索后增强生成质量。在工程实践中,RAG与智能体(Agent)技术结合,可构建具备专业知识和行动能力的AI系统。智能体通过规划、工具调用和记忆机制,能执行多步骤复杂任务。基于LangChain框架,开发者可以系统化地整合提示词管理、RAG流水线和Agent调度,快速搭建企业级AI应用。本文以文档问答系统为例,详解如何通过分阶段学习掌握这一技术栈的落地实践。 阅读详情

相关推荐

从零构建 AI Agent:LangChain 实战完全指南

LangChain AI Agent构建指南 本文详细介绍了如何使用LangChain框架构建AI Agent智能系统。主要内容包括: AI Agent概念:解释AI Agent作为能自主感知环境、决策和执行的智能系统,与传统大模型的区别,强调其工具使用、记忆管理和自主决策能力。 LangChain框架:介绍该Python/JS框架的模块化组件(模型、提示词、工具等)和核心架构,特别说明其对ReAct等Agent类型的支持。 ReAct框架原理:阐述Thought-Action-Observation循环决

Crown_22的博客 1031

8.【保姆级】从零学会LangChain调用大模型!统一接口+代码实战

模型调用场景中,用户常会根据个人使用习惯指定偏好的AI大模型厂商及名称。比如阿里巴巴的 qwen3.6-plus、qwen3.5-max,字节跳动的 doubao-pro等国产主流旗舰型号,以及OpenAI的gpt-4o、Anthropic 的claude-3.5-sonnet等海外型号,都是用户会结合任务复杂度、成本预算、合规要求等因素,在不同使用场景中高频指定的调用对象。

老陈说编程 哔哩哔哩 346

LangChain Agent 使用方法详解

是一个可以动态决策并执行任务的智能系统,能够调用工具(如搜索引擎、数据库、计算工具等),并结合大模型(LLM)进行推理和决策。相比于传统的 LLM 直接回答问题,决定了代理的决策模式。✅ 适用于插件系统,如 OpenAI Plugins。:创建一个 Agent,专门用于搜索最新的网络信息。一个 LangChain Agent 通常由以下。在 LangChain 中,在某些情况下,我们可以使用。✅ 需要严格控制工具调用方式。

大多_C的博客 1396

大模型、AI-Agent、langchain之间的关系

和传统的 RPA 相比,RPA 只能在给定的情况条件下,根据程序内预设好的流程来进行工作的处 理,而 AI Agent 则可以通过和环境进行交互,感知信息并做出对应的思考和行动。因此,大模型是构建AI-Agent时的一个高级功能单元,而非直接包含于AI-Agent内,而是被集成在AI-Agent架构的不同层次上以提供NLP相关能力。图6:基于 LLM 的代理应用场景。总的来说,这个系统描述的是一个简化的模型,展示了是一个 AI Agent 如何从感知信息开始,经过一系列内部处理和决策,最终做出响应的过程。

qq_15821487的博客 8934

IBM V3700更换控制器2(503错误)

正常的node1 ,机器代码版本:7.5.0.3, 机器代码构建:115.51.1509171734000。耐心等待后,刷新,看到node2,状态变成 节点状态:服务,错误:656,版本和node1一样了。新换的node2 ,机器代码版本:7.2.0.5, 机器代码构建:87.8.1404221000。耐心等待,刷新,node2,状态看到了,节点状态:活动,错误 724 1 1 0。拔出故障的控制,把内存和HBA卡,电池换到新的控制器。新的控制还是报错无法使用,节点状态:服务 错误:503。

klyshao的博客 4450

NLP-Beginner 任务一:基于机器学习的文本分类(超详细!!)

NLP-Beginner 任务一:基于机器学习的文本分类传送门一. 介绍1.1 任务简介1.2 数据集1.3 流程介绍二. 特征提取2.1 词袋特征(Bag-of-word)2.2 N元特征 (N-gram)三. 最优化求解3.1 Softmax回归介绍3.2 损失函数3.3 梯度下降3.4 学习率四. 代码及实现4.1 实验设置4.2 结果展示4.3 代码新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、

0oTedo0 9941

【LangChain-AI】:宏观认知

LangChain 本质是一座连接 AI 模型与 AI 应用的 “桥梁”:它以编程方式指挥和协调大模型,能够对接数据库、搜索引擎、第三方 API 等整个软件生态,将大模型的基础能力转化为可解决复杂业务问题的实际应用。核心概念辨析(高频易错点)必须严格区分 AI 模型、开发框架、AI 应用三者的层级关系:AI 模型是底层能力底座,LangChain 是中间开发框架,AI 应用是面向用户的最终产品。

艾莉丝努力练剑的博客,感谢大家一直以来的对艾莉丝的支持和鼓励,uu们如果对C/C++方向感兴趣的话,可以通过艾莉丝主页的微信名片加艾莉丝的好友,和努力练剑的艾莉丝一起加油! 1027

项目回顾一:《高速多端口共享缓存模块》

本帖子仅为了回顾一下一年前自己动手完成的第一个数字ic设计项目的历程,为复试做一下准备,完成的这个sramc模块花了整整四个月的时间,从0到12个模块的代码产出以及模块的验证,虽然没有拿奖,也没有进入复赛,设计过程中使用的技术手段和算法也不太成熟,但这这是一个值得记录的过程!

weixin_60261760的博客 1258

【AI大模型】Agent、RAG、LangChain:AI领域的三位一体

在这个由代码编织的世界里,Agent、RAG和LangChain就像是三位一体的超级英雄,它们联手打造了一个全新的智能宇宙。 你是否曾在探索人工智能的广阔天地时,对这些听起来高深莫测的概念感到困惑?

2401_85325557的博客 868

ANSYS Discovery 2023R1 保姆级教程:手把手教你玩转几何模型参数化(附避坑指南)

本文提供ANSYS Discovery 2023R1几何模型参数化的全面教程,涵盖基础环境搭建、核心操作解析及高级应用场景。重点讲解参数化建模中的常见问题与避坑方案,帮助用户高效掌握Workbench与Discovery的协同使用技巧,提升工程仿真效率。

weixin_29204205的博客 754

PSIM联合VS--C++实现正弦波发生

在利用VS联合PSIM仿真中,想要用VS构建一个正弦波发生模块。可以利用Sin函数进行编写,重点是需要编写一个计数器程序。首先打算用for循环语句来构建计数器,但在for循环运行时无法跳出,不能实时获得计数器的值。同理,while循环也无法实现。最后将count变量设置为static型,解决了这一问题。 体现出对于c++程序的运行不够了解,需要多进行程序的编写和调试。 //时钟计数器 static int count = 0; count++; if (count > Sinfre)

weixin_41850228的博客 1088

LangChain RAG&Agent实践:活动组件AI助手的实现

介绍了如何利用 LangChain 开发 RAG(Retrieval-Augmented Generation)和 Agent 应用,并通过活动组件 AI 助手的实现案例,分析了 AIGC 在活动组件业务中的应用。正文从这开始~~本文主要讲述采用 LangChain 开发 RAG 和 Agent 应用的思路,分析 AIGC 在组件活动业务中的应用案例。本文讲述了采用 LangChain 开发 RAG 和 Agent 应用的思路,分析 AIGC 在组件活动业务中的应用案例:活动组件 AI 助手。

python123456_的博客 993

项目报告:基于Sentaurus TCAD的多沟道长度NMOS器件仿真、SPICE模型提取与环形振荡器电路验证

本项目基于Sentaurus TCAD工具,完成了从器件仿真到电路验证的全流程研究。首先构建了45nm、65nm和90nm三种沟道长度的NMOS器件,通过TCAD仿真分析了其电学特性,观察到明显的短沟道效应。随后提取了BSIM4 SPICE模型参数,并生成Hspice可用的模型文件。最后利用该模型设计了11级环形振荡器进行电路验证,证明了模型的实用性。研究结果表明,随着沟道长度缩短,器件性能虽有所提升,但短沟道效应导致关态电流显著增加,影响整体能效。本项目为纳米尺度MOSFET的建模与电路设计提供了完整的技

huanghm88的专栏 286

大模型AI Agent开发框架LangChain1.0

LangChain 在 1.0 版本中,将所有 Agent 的创建方式统一为了一个入口——create_agent()。它取代了旧版本中的 create_react_agent、create_json_agent、create_tool_calling_agent 等多种分支函数,真正让开发者用一行代码即可创建任何类型的智能体。在 LangChain 0.x 时代,框架内的 Agent 系统经历了“碎片化”阶段。

奇华资料的博客 1771

YOLOv5改进系列(4)——添加ECA注意力机制

手把手教你在YOLOv5中加入ECA注意力机制,文内含两种方法,小白也能看懂!

路人贾的博客 8548

【遥感物候】植被物候与气候(气温和降水)条件的空间相关性分析

植被生长与气候的关系最为密切,通过计算植被各个生长季参数和气温、降水之间的相关系数可以分析生长季参数的变化与气温、降水之间的关系的程度。本文计算30年的植被物候参数和气候数据之间的相关性,最终效果如下: 一、相关性分析原理 植被生长季及其变化是其生长环境中多个影响因子综合作用的耦合过程,其中气候是最重要、最活跃的环境因子。通过计算各个生长季参数和气温、降水之间的相关系数...

智慧空间实验室 8262

构建第一个 AI Agent:LangChain 入门实战

今天我们使用 LangChain 快速构建了一个能联网查资料的 AI Agent,体验了最小 Agent 架构的魅力。

Q2024107的博客 1140

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

AI大模型应用开发:LangChain核心组件-认识LangChain

摘要: LangChain是由Harrison Chase于2022年10月创建的智能体开发平台,提供多种组件支持Python和TypeScript开发。其核心框架包括: LangChain:快速构建兼容多模型的智能体 LangGraph:底层控制智能体构建(记忆、人机协同等) Deep Agents:处理多步骤复杂任务 LangSmith:测试评估平台 智能体(Agent) 与传统LLM的区别在于其主动性,能规划任务、调用工具(如API)并整合实时信息。示例展示了如何通过create_agent快速开发天

在这里,我乐于倾囊相授,分享我的技术心得、项目实战经验、技术技巧。希望能够惠及更多的开发者,助力大家在技术的海洋中扬帆远航。 604

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【AI大模型】LangChain的Agent使用介绍,一文搞懂!!

工具的定义只需要集成BaseTool类,然后在_run方法中编写你的逻辑就行,大模型会把合适的参数传进来。name: 工具名称,很重要,大模型内部会使用到description:工具描述,很重要,告知大模型在什么情况下来使用这个工具return_direct:这个字段默认为false,如果设置为true,工具返回结果后,大模型就不再循环思考了会直接将这个结果当做答案。LangChain 已经内置了duckduckgo搜索引擎,安装一下依赖包即可使用,只是需要科学上网才能调通。# 搜索工具。

Android23333的博客 1246

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

AI Agent之LangChain多个案例实战

AI Agent对比(1)工作流编排LangChain:线性链,适合固定流程任务(如文档问答)。LangGraph:支持循环、条件边和状态传递,适合动态调整的复杂逻辑(如多轮决策)。Coze:可视化工作流,支持嵌套和批处理,但灵活性较低。Dify:基于自然语言定义工作流,适合API集成和Prompt调优。(2)工具调用与扩展性LangChain/LangGraph:工具作为链或图的节点,支持自定义工具和重试逻辑。Coze:依赖预置插件生态,扩展需通过开放平台。

2401_84494441的博客 2008

大模型调用工具三:LangChain Agent+@tool

本文介绍了LangChain中的@tool装饰器,它用于将普通Python函数转换为AI可调用的工具。通过@tool修饰的函数能被AI模型发现和使用,实现工具调用功能。关键点包括:1)@tool来自langchain.tools模块;2)通过docstring和类型注解定义工具功能;3)与Agent系统集成实现自动调用;4)支持参数传递和复杂功能扩展。@tool是构建智能代理的关键组件,可轻松扩展AI能力而无需修改模型,只需定义工具函数并整合到Agent中即可实现功能调用。

m0_53830442的博客 1024

LangChain RAG&Agent实践-活动组件AI助手的实现

本文主要讲述采用LangChain开发RAG和Agent应用的思路,分析AIGC在组件活动业务中的应用案例。02本文讲述了采用LangChain开发RAG和Agent应用的思路,分析AIGC在组件活动业务中的应用案例:活动组件AI助手。在应用案例分析中,展示了活动组件智能AI助手的推荐组件能力及查询历史活动和组件数据的能力。在落地过程中,分别讲述了RAG和Agent的核心实现思路。最后,对比了不同大模型在实际Agent规划中的效果,以及活动组件AI助手的整体流程架构图。

h1453586413的博客 1146

【AI-agent】大模型的调用方式

本文介绍了两种大语言模型调用方式:使用Ollama进行本地调用和阿里云百炼API调用。Ollama作为开源工具支持本地运行Llama、Mistral等模型,提供简单CLI和API服务。安装后可通过命令行或Python代码调用模型。阿里云百炼则提供云端API服务,用户注册后获取API Key即可调用qwen-flash等模型。两种方式均附有详细操作步骤和代码示例,帮助开发者快速实现大模型集成。

黄小黄的博客 1150

前端视角下认识 AI Agent 和 LangChain

AI Agent与传统应用开发的核心区别在于:AI Agent以大语言模型为核心驱动,通过LLM(大脑)、Memory(记忆)、Planning(规划)和Tools(工具)四大组件协同工作。LangChain作为AI开发框架,解决了大模型的信息过时、无法联网、私有知识盲区等问题,提供统一的多模型调用接口,使开发者能更高效地构建AI应用。相比可视化平台,编程方式提供更灵活的定制能力,适合复杂场景开发。

weixin_47339511的博客 856

LangChain写AI Agent系列 之 模型调用、提示词、输出解析

LangChain 框架由多个开源库组成。请在架构页面阅读更多内容。

python12345_的博客 1126
上一篇: AI Agent从无到有19:LangChain 核心模块与首个链式应用实战
下一篇: AI Agent从无到有21: LangChain 大模型组件标准参数与事件驱动实战
Wang's Blog
博客等级 码龄12年 7438粉丝 2422原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值