LangChain 实战指南:用真实问题串起路线

MuleSoft+LangChain构建企业级AI编排中枢 AI编排(AI Orchestration)是连接大语言模型与企业遗留系统的关键技术范式,其核心在于解耦数据集成与智能推理:前者解决多源异构系统(如SAP、Salesforce、Oracle)的协议适配、安全治理与实时聚合问题,后者专注上下文理解、多步推理与自然语言生成。该架构并非替代传统ESB或LLM框架,而是通过明确分工——MuleSoft作为‘企业系统老司机’负责可信数据管道,LangChain作为‘AI逻辑调度器’处理非结构化决策链——实现可审计、可扩展、可治理的AI落地。典型应用场景包括客户流失预 阅读详情

聊《LangChain 实战指南:一次新的项目切入》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。

摘要

先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做,以及从哪里动手。

最近圈子里有个很明显的趋势:大家聊大模型应用,不再盯着“Prompt 怎么写更聪明”,而是开始焦虑“权限怎么控”、“日志怎么存”、“出错了怎么回滚”。

这其实是好事。说明我们终于从“玩具阶段”进入了“工程阶段”。

我之前带过一个内部知识库项目,初期为了赶进度,直接扔给 LLM 一堆 PDF,跑通 Demo 就交差了。结果上线第一天,用户问了一个敏感问题,模型顺着逻辑“幻觉”出了一个不该说的答案,而且因为没做日志审计,事后根本查不到是谁、在什么时间、问了什么。

那次教训让我意识到:对于小团队或者个人开发者来说,LangChain 的核心价值不仅仅是串联模型,更是提供一套标准化的工程脚手架,让你在处理权限、追踪、重试这些脏活累活时有据可依。

今天这篇,我不讲那些花哨的 Agent 架构,咱们从一个最简单的实战切入,看看如何在资源有限的情况下,避免过度设计,快速搭建一个可用、可观测的 AI 应用骨架。

目录

  • LangChain 能解决什么问题
  • 核心组件:少即是多
  • Prompt 与 Chain:让模型听话
  • 工具调用:克制地使用
  • 项目实战:从 Demo 到可维护服务
  • 总结

LangChain 能解决什么问题

文章插图 1

很多人觉得 LangChain 太重了,动辄几百行代码才能跑个 Hello World。其实不然。

LangChain 解决的根本痛点是非结构化数据到结构化结果的映射成本,以及调用外部工具时的状态管理。

如果你只是简单地问一句“今天天气怎么样”,直接用 API 调用就行,不需要 LangChain。但一旦涉及:
1. 上下文保持:比如多轮对话,你需要记住之前的意图。
2. 工具路由:根据用户问题,决定是去查数据库、调 API 还是反问用户。
3. 标准化输出:让不同模型的输出格式统一,方便下游处理。

这时候,LangChain 提供的 Chain 和 Tool 抽象就显得很有必要。它不是为了炫技,而是为了让你在后续加日志、加权限校验时,不用重写整个业务逻辑。

核心组件:少即是多

文章插图 2

在学习 LangChain 时,千万别被 LCEL (LangChain Expression Language) 的复杂语法吓到。对于一个实战项目,你只需要掌握三个核心组件的交互:

  • Model:LLM 本身。
  • Prompt:输入的结构化指令。
  • Chain:连接 Model 和 Prompt 的执行逻辑。

其他的如 Memory(记忆)、VectorStore(向量存储),在项目初期完全可以后置。先让链路跑通,再考虑持久化。

优快云资料领取方式

Prompt 与 Chain:让模型听话

Prompt 工程是玄学,但 Chain 是科学。

在我的实践中,我发现很多初学者喜欢在一个巨大的 Prompt 里塞入所有规则。这样做不仅难以调试,而且一旦模型上下文窗口受限,效果会急剧下降。

我的建议是:拆分 Chain。

比如,做一个“员工报销助手”。
1. 第一步:提取用户自然语言中的关键信息(金额、类别、时间)。这一步用简单的 LLMChain 配合 JSON 格式输出。
2. 第二步:校验提取的信息是否符合公司规定(比如餐饮类不能超 200 元)。这一步用纯 Python 逻辑,不要交给 LLM 做判断。
3. 第三步:生成最终回复。

这样设计的好处是,如果第二步校验失败,你可以直接拦截,无需消耗昂贵的 LLM Token,也避免了模型产生“我违反了规定但我假装合规”的幻觉。

下面是一个使用 LCEL 构建简单提取 Chain 的代码示例,注意这里没有引入复杂的 Agent,只是最基础的链式调用:

from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_openai import ChatOpenAI

# 1. 定义 Prompt,强调输出格式为 JSON 以便后续程序解析
template = """
你是一个智能报销助手。请从用户的输入中提取以下字段:
- amount: 金额,浮点数
- category: 类别,字符串,只能是['餐饮', '交通', '住宿', '办公用品']之一
- date: 日期,YYYY-MM-DD 格式

如果用户未提供完整信息,请在对应字段填 null。

用户输入: {user_input}
"""

prompt = ChatPromptTemplate.from_template(template)

# 2. 初始化模型
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)

# 3. 构建 Chain: Prompt -> LLM -> 输出解析
chain = prompt | llm | StrOutputParser()

# 4. 调用
result = chain.invoke({"user_input": "上周三我买了两盒咖啡,花了50块"})
print(result)

# 预期输出类似: {"amount": 50.0, "category": "餐饮", "date": "2023-10-25"}

注意 | 操作符,这是 LCEL 的精髓,它让 Chain 变得像管道一样清晰,方便我们在中间插入日志记录或异常处理钩子。

工具调用:克制地使用

现在很流行写 Agent,让模型自己决定调用什么工具。但对于小项目,我建议前期慎用全自动 Agent。

为什么?因为 Agent 的路由逻辑是不透明的。当模型调用错误工具导致报错时,调试成本极高。

更好的做法是:显式定义工具,但限制模型的选择范围。

比如,你的应用只有两个功能:查余额、查订单。你只需要定义这两个 Tool,并在 System Prompt 中明确告诉模型:“你只能使用提供的工具,如果用户问天气,请直接拒绝。”

这种“窄通道”设计,虽然牺牲了一点灵活性,但极大地提高了系统的稳定性和可预测性。这也是我在后续加入权限控制和日志审计的基础——因为只有知道模型一定会调用哪些接口,我才能在入口处统一做鉴权。

项目实战:从 Demo 到可维护服务

回到开头提到的那个痛点:权限和日志。

在 LangChain 中,我们可以通过自定义 RunnablePassthrough 或者封装一层中间件来解决。

假设我们要实现一个简单的“数据查询助手”,我们需要确保:
1. 用户只能查自己部门的数据。
2. 所有查询必须记录日志。

我们可以这样做:

from langchain_core.runnables import RunnableLambda

# 模拟权限校验函数
def check_auth(user_id, query):
    # 实际项目中这里会查数据库验证 user_id 是否有权限
    if "敏感数据" in query:
        raise PermissionError("无权访问敏感数据")
    return True

# 模拟日志记录函数
def log_query(user_id, query, result):
    print(f"[{user_id}] Query: {query} | Result Length: {len(result)}")

# 将权限校验嵌入 Chain
auth_chain = RunnableLambda(lambda x: check_auth(x.get("user_id"), x.get("input")))

# 完整的处理链
full_chain = auth_chain | prompt | llm | StrOutputParser() | RunnableLambda(
    lambda res: log_query(x.get("user_id"), x.get("input"), res) or res
)

# 调用时需传入额外参数
try:
    output = full_chain.invoke({
        "user_id": "user_123",
        "input": "帮我查一下部门预算",
        "category": "finance"
    })
except PermissionError as e:
    print(e)

这段代码看似简单,但包含了工程化的关键要素:输入校验前置、输出后处理后置。

在实际项目中,我会把 check_auth 和 log_query 替换为真实的数据库操作和 ELK 日志接口。通过这种方式,你不需要修改核心的 LLM 调用逻辑,就能无缝接入企业级的安全监控体系。

总结

LangChain 不是一个银弹,它只是一个帮你规范“Prompt 管理”和“模型调用流程”的工具库。

对于想要快速上手 AI 应用的开发者,我的建议是:
1. 先跑通 LCEL 管道:理解数据是如何从 Input 流向 Output 的。
2. 拒绝过度 Agent 化:能用规则判断的,不要交给模型;能固定调用的,不要做成动态路由。
3. 尽早引入工程化约束:在写第一行 Prompt 之前,就想好日志存哪里、权限谁管、异常怎么处理。

大模型应用的竞争壁垒,从来不是模型本身有多聪明,而是你能否把这些聪明的“黑盒”,封装成稳定、可控、可审计的“白盒”服务。

希望这篇基于实战的梳理,能帮你在接下来的项目中少走一些弯路。如果有具体的踩坑经历,欢迎在评论区交流。

资料展示

下面是我整理的AI大模型学习资料和工具包预览,适合收藏后按主题逐步学习。

AI大模型资料展示 1

AI大模型资料展示 2

AI大模型资料展示 3

AI大模型资料展示 4

如果你想看完整资料目录,可以在评论区留言「资料」;也欢迎告诉我你更关注AI大模型里的哪类内容。

优快云官方大礼包

从Java后端到AI应用:6个月掌握大模型工程化实战路线 大模型应用开发已成为现代软件工程的重要分支,其核心在于将前沿AI能力工程化落地。从技术原理看,大模型基于Transformer架构,通过预训练与微调适应不同任务。其技术价值在于将自然语言理解与生成能力转化为可集成的服务,显著提升应用的智能化水平。在应用场景上,结合检索增强生成(RAG)技术,可构建智能问答、内容生成等系统;通过LangChain等框架,能高效开发多步骤任务处理流程。本文聚焦于传统开发者转型路径,详细拆解如何利用现有工程经验,快速掌握Prompt工程、RAG系统搭建及智能体(Agent)工作流 阅读详情

相关推荐

从RAG到LangGraph:AI Agent开发全链路学习路线

大模型应用开发已从单轮问答走向复杂AI Agent。RAG(检索增强生成)通过外接知识库解决模型知识不足与幻觉问题,MCP协议则标准化了工具调用方式,二者是Agent连接数据和能力的关键。而LangChain提供了文档处理、Prompt管理、记忆等基础组件,LangGraph进一步以图结构编排多步任务,实现条件路由与循环控制。理解这些概念并掌握其组合方式,是构建企业级智能应用的核心。然而,官方文档学习曲线陡峭,缺少一条从原理到实战的清晰路径。一套系统化的视频教程串起了RAG、MCP、LangChain与La

weixin_31715171的博客 341

测试转大模型:用真实问题串起路线

很多测试同学转型大模型,简历上写满了 RAG、Agent、LangChain,Demo 也能跑通,但一到生产环境就翻车。翻车的点往往不是模型调不通,而是权限、日志、可观测这些" boring"的工程化能力。我见过太多人在这上面栽跟头,今天把这条学习路线掰开揉碎讲讲。测试转大模型,最大的误区是以为会写用例就够了。实际上,大模型测试的核心壁垒是工程化能力:权限管理、日志追踪、可观测性设计。我的建议是学习路线:1. 先补工程化基础:日志、监控、权限模型。

2601_96285279的博客 269

【五.LangChain技术与应用】【13.LangChain与智普大模型接入:行业领先的AI整合】

最近半年,我一直在跟几个创业团队合作搞AI落地项目,发现一个特别有意思的现象:现在企业想用大模型干点实事,最大的痛点反而不是模型本身的能力,而是怎么把模型"塞"进现有系统里,还要塞得优雅、塞得高效。LangChain+智普这个组合,相当于既给了你高性能发动机(智普),又配了全套变速箱和悬挂系统(LangChain),这才是能真正跑起来的解决方案。某在线教育客户的实际数据:经过调优后,单日处理10万+咨询量,平均响应时间1.2秒,错误率0.03%,运营成本比用其他方案低了45%。

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 544

AI大模型就业:用真实问题串起路线

先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做,以及从哪里动手。摘要:很多初级开发者盯着 LangChain 或 Agent 的复杂编排转,却忽略了工程化的底线。本文复盘了一次从“能跑通”到“能上线”的惨痛经历,指出小团队在资源有限时,如何避开过度设计的陷阱,通过扎实的权限控制和全链路日志体系,构建出具备生产级竞争力的 AI 应用能力,这才是 2026 年面试官真正看重的“硬核”工程素养。AI 大模型的浪潮确实带来了新的机遇,但它并没有颠覆软件工程的基本规律。

LLM_9528的博客 315

CoppeiaSim(VREP)入门

vrep/CoppeliaSim关节抖动问题原因总结【Coppeliasim|轨迹规划(一)】设置机械臂的关节角时保证机械臂不散架设置机械臂的关节角时保证机械臂不散架。

weixin_50624597的博客 3227

迪文串口屏开发环境搭建全流程:从DGUS Tool到串口联调

串口屏作为嵌入式人机交互的核心组件,通过串口通信实现主控MCU与显示终端的指令交互。其工作原理基于变量地址映射,主控读写VP地址即可驱动屏上控件,兼具低功耗与高稳定性。在工业控制、医疗设备及智能家居面板等场景中,串口屏能显著降低开发门槛与硬件成本。迪文屏凭借DGUS Tool上位机与自定义串口协议,成为主流选择。掌握DGUS Tool版本匹配、串口驱动安装及VP地址规划,是快速搭建开发环境的关键。

weixin_33937499的博客 612

运维转大模型:用真实问题串起路线

去年我带团队做了一个内部告警处置 Agent,用 LangChain 搭了一个能自动分析日志、定位根因、甚至执行恢复命令的"智能运维助手"。Demo 演示那天,大模型把日志分析得头头是道,自动处置流程也跑得丝滑,领导看了直呼"这就是我们要的 AIOps"。两周后上线,直接翻车。不是模型不行,也不是代码有 bug,而是它第一次执行自动恢复时,没有走审批流程,差点把测试库的数据清了。更致命的是,出问题时我们完全不知道 Agent 到底做了什么、为什么这么做——日志里只有一行"执行成功",没有任何上下文。

资料免费分享,点击名片 178

LPC2124定时器实现跑马灯

文章目录一、keil 4新建工程 一、keil 4新建工程 1、Create New Project,注意,最好添加进一个新建好的文件夹里,keil不会帮你新建。 2、添加设备类型:NXP目录下的LPC2124 3、选择启动文件Startu.s 4、new 一个file,保存命名为.c文件 5、添加进project里,右击,add 选中,添加 6、设置编译输出.hex文件 ...

qq_37937830的博客 5753

Agent 核心原理:用真实问题串起路线

先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做,以及从哪里动手。最近在看团队内部的技术分享,大家讨论最多的不是某个新出的框架,而是“AI 编程工具如何从个人试用走向团队协作”。这其实是个很典型的信号:当 AI 能写代码时,它就不再只是一个补全插件,而是一个具备自主决策能力的 Agent。我在准备简历项目时,发现很多开发者把 Agent 做成了“调包侠”——把 LangChain 或 LlamaIndex 跑通就算完事。但在面试或实际工程中,这种 Demo 级的项目往往经不起推敲。

2601_96120158的博客 373

Zynq工程IP核封装:XCI引用与约束继承实战指南

IP核封装是FPGA系统设计中实现模块复用、团队协作与技术资产沉淀的关键环节。其本质是将功能逻辑、时序约束、接口协议和硬件配置统一抽象为可配置、可验证、可演进的标准化组件。核心原理在于通过XCI文件保留IP核的参数化定义能力,依托Vivado IP Packager实现约束继承、端口自动映射与时钟域解耦,从而保障跨项目集成的时序可信性与约束完备性。该技术广泛应用于Zynq SoC视频处理、高速接口(如HDMI/TMDS)、多时钟域控制系统等场景,尤其在需要长期维护与版本迭代的工业级嵌入式开发中具有不可替代的

weixin_42593701的博客 126

软件工程大作业——图书管理系统/图书个性化推荐与实现系统

软件工程期末大作业,图书管理系统,包含ER图、程序流程图、属性图、结构图

2401_82857325的博客 3649

Java 转大模型开发:用真实问题串起路线

大模型正在重塑软件工程的底层逻辑。对于 Java 背景的工程师来说,转大模型既不是从零开始,也不是顺水推舟——它更像是一次带着既有装备重新选择战场的迁移。这篇文章从工程实践的角度,梳理 Java 背景在转大模型过程中的真实优势、常见短板,以及可操作的落地路径。Java 背景转大模型,不是从零开始,也不是顺水推舟。它是一次带着既有装备重新选择战场的迁移。优势在于工程能力:类型系统、并发控制、生态工具、生产环境理解。这些能力在大模型工程里同样重要,甚至更加稀缺。

2601_96189255的博客 268

HFSS仿真PCB射频通路间的隔离度

本文介绍HFSS方式仿真带有器件的射频通路间的隔离度,可视为CST方式的补充,二者的结果相互参照。在前期靠仿真确认风险点时,可以作为一种较为直观和可信的手段。

sinat_15150363的博客 1527

文档解析的两条技术路线:TextIn与LangChain+xParse实战对比

PDF文档解析是将非结构化文件转化为结构化数据的关键技术,其核心在于布局分析(Layout Analysis)、OCR识别与语义理解的协同。原理上,端到端方案依赖大模型驱动的统一推理链,而模块化方案强调可干预的组件组装与规则注入。技术价值体现在对Corner Case的鲁棒性、定制深度与可审计性——前者提升交付效率,后者保障金融、医疗等强监管场景的合规可控。典型应用场景包括银行信贷材料识别、政务公文归档及医疗检验报告结构化。本文聚焦真实业务中高频致败的‘幽灵加密’‘字体嵌入缺失’与‘光学畸变’三类Corne

weixin_33910460的博客 346

3dmax文件格式转换——.max 转换为 .flt(解决转换后.flt没有纹理贴图的问题)

本文主要介绍如何在3dmax中将.max格式文件转换为.flt格式文件,并解决转换后的文件没有纹理贴图的问题。 在3dmax中,将.max文件转换为.flt格式,只需导出选择.flt格式即可,但是导出的文件在osgEarth中加载后,缺少纹理和贴图。 下面是解决方案: 1、选中加载的模型,然后点击 渲染-> 渲染到纹理 2、将 渲染到纹理 子窗口往下拉,点击 添加 按钮,添加 ...

cchangcs 6175

【云原生系列】第一讲:什么是云计算

云计算(cloud computing):分布式:分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,合并&反馈:通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。云计算早期:分布式计算:简单的分布式计算,解决任务分发,并进行计算结果的合并。因而,云计算又称为网格计算。通过分布式计算,可以在很短的时间内(几秒钟)完成对数以万计的数据的处理,从而达到强大的网络服务。现阶段:计算:分布式计算、效用计算、负载均衡、并行计算、存储。

颜淡慕潇 1万+

24GB内存的Mac也能微调大模型:MiniCPM5-2B-OptiQ-4bit敏感度感知LoRA实战指南

MiniCPM5-2B-OptiQ-4bit 是面向 Apple Silicon 优化的 MiniCPM5-2B MLX 混合精度量化模型:仅 1.8GB 体积,却保留了混合推理、工具调用和 128k 长上下文能力。更关键的是,它内置「敏感度感知 LoRA」,让你在 24GB 内存的 Mac 上也能顺畅完成大模型微调。本文带你从原理到命令,完整跑通这条低配本地微调路线。 ## 🍎 这个量化模型

gitblog_00096的博客 382

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ai-agents-from-zero:2026 最系统的 AI 智能体实战速成指南,从零到企业级落地的完整路线图

**ai-agents-from-zero** 是一套 2026 持续更新的 AI 智能体实战教程,用「系统教程 + 可跑源码 + 实战项目 + 面试题库」四件套,帮你从零开始掌握 AI Agent、RAG、LangChain、LangGraph、MCP 等大模型应用开发技能,最终直达企业级项目落地与 AI 应用开发岗位面试。它不是碎片化文章的合集,而是一条按知识体系编排、从入门到上线的完整学习路

gitblog_00124的博客 1261

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

深度学习工具包 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")

AI Agent 开发专题:从 ReAct、LangChain 到 MCP Server 的实战路线图

AI Agent 的想象空间很大,但开发时要反过来收敛:先判断是否需要 Agent,再定义最小工具集,然后建立状态、日志、权限和失败处理,最后才考虑框架、多 Agent 和复杂编排。Agent 不是“更强的聊天框”,而是一个由模型驱动、工具执行、状态约束、日志可追踪的任务系统。从这里继续深入,建议先完成一个小型 LangChain + Claude 工具调用 Demo,再把其中一个工具改造成 MCP Server。

2604_95848375的博客 798

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Qwen3-32B与LangChain集成开发指南

本文介绍如何将高性能开源大模型Qwen3-32B与LangChain框架集成,实现本地化、可定制的AI应用开发。涵盖模型特性、封装方法、知识库构建、系统架构及部署优化建议,助力开发者构建安全可控的智能服务。

weixin_36238982的博客 1012

前端转行AI Agent:收藏这份保姆级学习路线,技能升级

文章介绍了前端工程师如何通过学习AI Agent技术实现职业转型,强调前端技能在AI领域的应用价值。文章指出,前端工程师的逻辑思维、交互设计能力以及联调经验,都是转向AI Agent的宝贵财富。同时,文章还提供了具体的学习路径和避坑建议,包括从ChatGPT API调用开始,逐步掌握LangChain等AI框架和Prompt工程。最后,文章鼓励前端工程师结合自身工程能力与AI应用搭建,快速切入项目,积累实战经验,获得高薪Offer。前端打工人真的太懂那种痛了👇。

优快云_430422的博客 303

大模型应用开发实战:LangChain、RAG、Agent与向量数据库Milvus全栈解析

在人工智能应用开发领域,检索增强生成(RAG)和智能体(Agent)是两种核心范式,它们共同解决了大语言模型的知识更新与任务执行难题。RAG通过从外部知识库检索相关信息来增强模型生成,有效应对了模型知识过时和“幻觉”问题,其技术核心在于高效的向量检索与上下文构建。智能体则赋予模型规划与工具调用的能力,使其能够自主完成多步骤复杂任务。这两种技术通常需要与向量数据库(如Milvus)和应用框架(如LangChain)协同工作,构建起从数据处理、知识存储到智能交互的完整链路。本文将以一个完整的智能问答系统为例,深

weixin_30644369的博客 372

openJiuwen agent-tools包机制深度解析:元包、动态依赖与entry points插件系统

openJiuwen agent-tools 是面向 openJiuwen Agent 平台的 Agent Tool 生态仓库,其 Python 工程采用了一套高度模块化的包机制:根目录的 `openjiuwentools` 作为**元包**统一聚合入口,`dependencies` 通过**动态依赖**在构建时生成,各子包再借助 **entry points 插件系统**被宿主框架自动发现与加载

gitblog_00246的博客 216

收藏!前端打工人破局指南:转AI Agent,告别重复劳动,薪资翻倍

作为前端打工人,那种深陷内耗的痛,真的只有自己懂👇每天围着页面布局、接口联调死磕,需求堆成山,兼容问题调不停,看似忙碌的日子,全是机械的重复劳动,没有一点成长空间。干得越久越迷茫,感觉自己被困在“切图仔”的怪圈里,技术没沉淀,能力没突破,未来一眼就能望到尽头,甚至会焦虑被行业淘汰…终于,我下定决心跳出舒适区,系统深耕AI Agent领域6个月,从零基础入门,到现在能独立搭建完整的AI工作流,彻底摆脱了之前的内耗困境!

2301_76168381的博客 297
上一篇: 测试转大模型:从团队协作视角展开
下一篇: Agentic AI:从排查路径看工程价值
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值