LangGraph+MCP+Ollama:打造强大的多智能体聊天机器人

张高兴的大模型开发实战:(六)在 LangGraph 中使用 MCP 协议 MCP(Model Context Protocol,模型上下文协议)是一种专为大语言模型设计的开源通信协议,使用 MCP 可以标准化模型与外部数据源、工具或服务之间的交互。也就是说通过 MCP 协议,可以使模型具备调用外部工具的能力,比如获取数据、执行外部操作等。 阅读详情

我将在本文教你如何使用 LangGraph、MCP 和 Ollama 打造一个多智能体(Multi-Agent)聊天机器人。

MCP 是 Model Context Protocol(模型上下文协议)的简称。一些开发者将其比作“为 AI 打造的 USB-C 接口”。

尽管 MCP 去年才发布,但最近它突然流行起来,这也引发了关于它的“花期”能持续多久的讨论。LangChain 还在 X 上发起了一项投票:

img

结果显示,40.8% 的人认为 MCP 是未来的标准,25.8% 的人觉得 MCP 只是昙花一现,其余 33.4% 的人选择观望。

虽然 MCP 在 2024 年 11 月才发布,但它已经支持了如 GitHub、Slack 和 PostgreSQL在内的许多服务。

img

作为一个开放标准,令人惊讶的是它可以与任何大语言模型(LLM,例如 Claude、OpenAI、Gemini 等)一起使用。

img

接下来,我将为你展示如何使用 LangGraph、MCP 和 Ollama 打造一个多智能体(Multi-Agent)聊天机器人。

img

我将向聊天机器人提出两个不同的问题:第一个问题是,“你能写一份关于最新 LLM 的报告吗?”

img

如果你观察聊天机器人生成输出的过程,你会发现这个 Agent 使用其结构化的流程(通过 create_chatbot 函数驱动)来处理输入。这个函数将系统提示、用户消息和工具执行整合成一个流畅的交互过程,然后根据查询决定使用哪个工具。它会调用 Google 搜索工具来查找最新信息并生成报告。

对于第二个问题,“编写一个使用 Seaborn 创建带回归线的散点图的 Python 脚本”,聊天机器人会处理请求并将其路由到合适的工具,比如 python_repl 或 data_visualization,具体取决于查询的结构。async_tool_executor 会动态处理工具调用,确保同步和异步函数(比如生成代码或可视化内容)都能正确执行。

img

在这个过程中,我们使用 StateGraph 管理聊天机器人的对话状态,因此它能够对后续问题提供准确且具有上下文感知的回答。

get_tools 函数确保只提供可用的工具,维持系统稳定性。

主函数让一切顺利运行,实时处理用户输入,调用正确的工具并处理输出。

因此,在这个本文结束时,你将明白 MCP 和函数调用(Function Call)的区别,什么时候使用函数调用,什么时候使用 MCP,以及我们如何利用 LangGraph、MCP 和 Ollama 打造一个强大的智能体聊天机器人。

MCP 和函数调用有什么区别?

在函数调用中,AI 就像一个技术娴熟的工人,严格按照脚本操作——它可以填写表格并调用预定义的工具,但只能使用它已有的工具,并且一次调用一个。而在 MCP 中,AI 更像是一个拥有工具箱的智能体:它可以在工具箱中翻找(发现新工具),组合使用它们,处理更多任务,并拥有更大的自主性。

  • 函数调用与模型的提示紧密耦合,开发者需要管理调用顺序,这使得它非常可控,但某种程度上缺乏灵活性。
  • MCP 通过开放协议实现松耦合,这让它具有高度的灵活性和扩展性,但需要强大的设计来管理复杂性(并确保安全性)。

下一部分将深入探讨如何使用 MCP 构建智能体,以及如何应对这种灵活性带来的挑战。

什么时候使用函数调用和 MCP?

选择函数调用还是 MCP 取决于使用场景:

  • 当你有一组明确定义的少量动作或查询时,特别是在单步操作且需要高度结构化的输出时,使用函数调用。它非常适合可预测的任务和轻量级集成,此时 MCP 的额外开销可能显得多余。因此,当需要结构化、狭窄的任务以及与应用轻松集成时,选择函数调用。
  • 当你需要更大的灵活性、多功能工具或跨交互演变的上下文时,使用 MCP。MCP 更适合复杂、多步骤的工作流程,或者当 AI 需要维持长期上下文并与各种系统交互时。如果你的 AI Agent 是一个跨内部系统的通用助手,可以从多个数据源获取信息,MCP 是更好的选择。

值得注意的是,这两种方法并非互斥——它们可以互补。例如,可以在 MCP 客户端内部使用函数调用来处理模型的结构化输出。

从概念上讲,函数调用旨在以受控方式将自然语言翻译为函数执行,而 MCP 则旨在为 AI 提供更广泛的接口,让它在环境中探索和操作。

开始编码吧

接下来,我将介绍本次项目的重点。

首先,本项目所需的主要技术栈:

  • langchain_mcp_adapters:将 MCP 工具转换为 LangChain 工具,与 LangGraph Agent 一起使用,并提供客户端实现,允许用户连接并从多个 MCP 服务器加载工具。

  • MCP:MCP 是一个开放协议,标准化了应用程序如何为大语言模型提供上下文。

  • Googlesearch-python:一个便于 Google 搜索的包。

以下是代码的主要部分(因篇幅限制,仅讲述核心内容):

agent.py

我将 create_agent 函数设计为一个异步过程,以构建 AI Agent。我设置了一个异步函数,该函数接受 docs_info 这个可选参数,以向聊天机器人提供相关数据。

我将 MultiServerMCPClient 集成到异步上下文管理器中,确保使用服务器发送事件 (SSE) 与 MCP 服务器 http://localhost:8000/sse 无缝通信,超时时间为 30 秒。

我实现了对 client.get_tools() 的调用,以检索必要的 MCP 工具,从而启用高级功能。为了管理对话状态,我使用 MessagesState 构建了一个 StateGraph。

然后,我使用 create_chatbot(docs_info) 创建了一个聊天机器人节点,使其能够处理和与提供的文档进行交互。

img

我还设计了 async_tool_executor 函数来动态处理工具调用。它以 state 作为输入,包含对话中交换的消息列表。我提取最后一条消息(messages[-1])来检查是否有工具调用。如果没有工具调用,直接返回消息不变。如果有,我会遍历每个工具调用,提取工具名称、参数和 ID,并根据工具名查找匹配的工具。如果工具不存在,则返回错误信息;如果存在,则根据工具是异步还是同步函数来执行,并处理可能的异常。

img

我通过添加异步工具执行节点和路由函数,设计了一个结构化的对话流程。路由函数根据最后一条消息是否包含工具调用,决定下一步是转到工具节点还是结束对话。

img

nodes.py

我设计了 get_system_prompt 函数来动态生成系统提示,确保 AI 助手在清晰的指导和上下文感知下运行。我使用当前日期并定义了助手角色及其可用工具:

  • generate_image(DALL-E 生成图像)
  • data_visualization(matplotlib 创建图表)
  • python_repl(执行 Python 代码)。

img

我开发的 create_chatbot 函数处理用户输入并生成 AI 响应。它使用 ChatPromptTemplate 将系统指令与用户消息结合,通过管道操作(|)连接到 LLM,确保消息格式一致并维持结构化的对话历史。

img

server.py

我开发了一组工具,包括图像生成、数据可视化和 Python 代码执行。

  • generate_image 使用 DALL-E 根据提示生成图像并返回 URL;
  • data_visualization 执行 matplotlib 代码并返回 base64 编码的 PNG 图像;
  • python_repl 在 REPL 环境中运行 Python 代码。

img

main.py

我设计了 main 函数来运行异步代理,处理用户输入并动态与工具交互。它通过命令行获取输入,异步调用 Agent 并处理响应,特别处理工具结果(如图像 URL)。

img

结论

MCP 不仅仅是一个简单的工具调用协议升级,而是一个重大的范式升级。

MCP 提供了一个通用的开放标准,使 AI 系统能够以标准化方式连接到各种数据源、工具和服务,减少了为每个数据源构建单独连接器的需求,简化了 AI 集成过程。

当前的非智能服务可以通过 MCP 将自身功能暴露为“工具”,供 LLM 调用,这使得 LLM 能够与现有系统交互并执行任务,而无需对现有系统进行重大修改。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
  • …

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署
  • …

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
  • …

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案
  • …

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

MCP实战-基于Ollama+qwen2.5以sse方式实现MCP协议工具调用 指导实现基于Ollama+qwen2.5以sse方式实现MCP协议工具调用 阅读详情

相关推荐

“本地AI智能体开发:LangGraph与Ollama实战指南”

能够感知环境、推理决策并执行任务的系统,如自动搜索、数据分析或角色拟。

2501_91383091的博客 1805

MCP‌和LangGraph‌结合

‌,完全可以通过结合使用实现更强大的系统设计。关键在于理解它们的核心差异,并利用各自的优势解决不同层级的问题。

qq_33043025的博客 1735

AI Agent架构解析:从核心原理到实战应用开发指南

AI Agent(智能体)作为能够自主规划、调用工具并执行复杂任务的AI系统,其核心架构通常包含感知、规划、记忆、工具调用与学习五大模块,实现了从被动响应到主动执行的范式跃迁。其工作原理遵循“感知-思考-行动-学习”的闭环,通过大型语言模型进行任务分解与推理,并借助外部工具库突破模型自身限制,完成信息获取与现实操作。这种架构赋予了AI Agent处理多步骤、跨平台任务的能力,技术价值在于显著提升自动化水平与决策效率。在应用场景上,AI Agent已广泛应用于自动化工作流、复杂决策支持及软件开发等领域,例如构

com_xpp的专栏 490

大模型实战:LangGraph+MCP+Ollama:打造强大的多智能体聊天机器人

如果你真的想学习大模型,请不要去网上找那些零零碎碎的教程,真的很难学懂!你可以根据我这个学习路线和系统资料,制定一套学习计划,只要你肯花时间沉下心去学习,它们一定能帮到你!

2401_85373691的博客 2225

嵌入式设备低功耗设计误区:为什么你的RK3568总是被‘意外’唤醒?

本文深入分析RK3568嵌入式设备低功耗设计中的常见误区,重点探讨唤醒源管理不当导致的意外唤醒问题。通过解析硬件设计陷阱、软件配置错误及系统化审计方法,帮助开发者有效排查和解决GPIO配置、唤醒源设置等关键因素引起的功耗异常,提升设备续航能力。

php55的博客 460

先进半导体材料与器件Chapter3

Chapter3 异质结双极晶体管(HBT) 作者:毛茏玮 / Saint 掘金:https://juejin.im/user/5aa1f89b6fb9a028bb18966a 微博:https://weibo.com/5458277467/profile?topnav=1&wvr=6&is_all=1 GitHub:github.com/saint-000 知乎:https:/...

一个会写代码的烤鸭 5803

LangGraph + MCP + Ollama: 打造强大的多智能体聊天机器人

在当今的人工智能领域,开发人员总是不断寻求提高效率和智能化的途径。今天,我要分享一个关于和的强大组合,这些工具帮助你创建出具备智能代理(Agentic)特性的多智能体聊天机器人,能让你更好地应对个人和商业需求。

weixin_43199439的博客 1326

泛微OA E9文档管理优化:临时文件清理与存储配置指南

本文深入解析了泛微OA E9系统性能下降的常见原因——临时文件堆积,并提供了完整的优化配置指南。文章详细介绍了临时文件的产生机制,并手把手指导管理员如何通过修改存储路径、调整保留时间、设置白名单等关键配置,有效清理与管理系统临时文件,从而释放存储空间,提升系统运行效率与稳定性。

tree8的博客 431

LangGraph + MCP + Ollama 实战教程:打造强大的多智能体聊天机器人

《模型上下文协议(MCP)在AI开发中的实践应用》 MCP作为新兴的AI开放协议,正在改变智能体开发方式。本教程展示了如何结合LangGraph、MCP和Ollama构建多智能体聊天机器人。MCP通过标准化接口解决AI工具连接难题,相比传统函数调用,它赋予AI更灵活的工具发现和组合能力。文章详细解析了技术架构:使用LangGraph管理工作流,MCP实现工具标准化接入,以及异步处理机制确保系统响应。核心模块包括智能体逻辑(Agent.py)、聊天节点(Nodes.py)和工具服务器(Server.py),支

Q2024107的博客 878

Wireshark时间分析实战:精准调试网络延迟与时间同步问题

本文深入探讨了Wireshark在网络延迟与时间同步问题分析中的核心应用。通过实战案例,详细讲解了如何设置时间显示格式、利用时间参考点量化关键路径延迟,以及运用时间平移功能校正错位时间轴。掌握这些时间分析技巧,能帮助网络工程师精准定位隐藏于数据包时序中的性能瓶颈与故障根源。

weixin_29290963的博客 262

Vivado IP核与约束文件管理指南:解决OOC警告、COE文件丢失与Block Design复用

本文详细介绍了Vivado IP核与约束文件管理的系统化方法,包括解决OOC警告、COE文件丢失与Block Design复用等常见问题。通过IP核锁定机制、分层约束架构和动态约束技术,提升FPGA工程的健壮性和团队协作效率,特别适合中大型项目开发。

weixin_30887919的博客 430

LangGraph+MCP+Ollama:打造强大的多智能体聊天机器人,大模型入门到精通,收藏这篇就足够了!

MCP 提供了一个通用的开放标准,使 AI 系统能够以标准化方式连接到各种数据源、工具和服务,减少了为每个数据源构建单独连接器的需求,简化了 AI 集成过程。

DEVELOPERAA的博客 647

大疆Livox Mid-70雷达的使用

一、前期准备 (一)、使用Livox Viewer测试雷达 1、设置静态IP sudo ifconfig enx081f7152092a 192.168.1.50 查看IP是否设置成功 lacyexsale@lacyexsale-KLV-WX9:~$ ifconfig enx081f7152092a Link encap:以太网 硬件地址 08:1f:71:52:09:2a inet 地址:192.168.1.50 广播:192.168.1.255 掩码:255.255.25

LacyExsale的博客 1万+

从零构建企业级AI Agent:LangChain+LangGraph+MCP实战指南

AI Agent(智能体)是人工智能领域的关键技术,它通过赋予大语言模型规划、执行和反思能力,使其从简单的对话工具升级为能够自主完成复杂任务的智能系统。其核心原理在于将大模型作为推理引擎,结合工具调用、记忆管理和工作流编排等模块,模拟人类解决问题的思维过程。这项技术的核心价值在于能够将AI能力无缝集成到业务系统中,实现自动化、智能化的任务处理,显著提升工作效率。在应用场景上,AI Agent广泛应用于智能客服、数据分析助手、自动化运维和知识管理等多个领域。本文聚焦于企业级AI Agent的开发,详细介绍了如

weixin_34320159的博客 380

在Windows11下安装完Ubuntu20.04双系统后配置环境的过程

在Windows11下安装完Ubuntu20.04双系统后配置环境的过程 1.NVIDIA驱动检测及安装 2.Anaconda的安装 3.安装cuda、cudnn、pytorch 4.其他报错

aaaccc444的博客 2424

解锁VS2022!手把手教你本地部署Deepseek

在 VS2022 中本地部署 Deepseek,我们首先需要确保硬件资源的充足,如高性能的 GPU、大容量内存和高速存储等,这是模型稳定运行的基石。如果生成的摘要能够准确概括原文的核心内容,就表明 Deepseek 模型在文本分析方面的功能正常,部署稳定可靠。这对于开发者来说,能够大大提高开发效率,当遇到一些常见的功能实现时,可以借助 Deepseek 模型快速生成基础代码框架,减少手动编写的工作量。在大语言模型的蓬勃发展的当下,Deepseek 凭借其卓越的性能和创新的技术,已然成为该领域的佼佼者。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1万+

2026年AI Agent开发者学习路线:从核心概念到工程实践

如果你在2024年或2025年看到这篇文章,并且正在考虑“转行AI Agent”,那么恭喜你,你正站在一个巨大的信息差面前。很多人以为AI Agent就是“会调用API的ChatGPT”,或者“一个能自动写代码的脚本”,这种理解会让你在学习和求职时完全走错方向。 真正的AI Agent开发,核心不是“调用大模型”,而是 构建一个具备自主感知、规划、决策和执行能力的智能系统 。它更像是一个“数字员工”,需要你为其设计大脑(认知)、四肢(工具调用)和工作流(任务分解)。市面上大多数所谓的“学习路线”,要么是堆砌

501

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LangChain 1.2 概述

应用为王!第 4 页学习LangChain框架,高效开发大模型应用。大模型应用技术特点:门槛低,天花板高。第 18 页。

· 654

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

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

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

工程化Agentic RAG系统:构建具备自检与多轮检索能力的生产级AI问答框架

这次我们来看一个能真正解决企业级问答难题的技术框架:工程化 Agentic RAG 系统。它不是一个简单的开源工具包,而是一套融合了 Google Search 能力、多智能体协作和工程化思维的解决方案,目标是把实验室里的 RAG 技术变成生产环境中可信赖的 AI Agent。如果你正在为传统 RAG 检索不全、答案不准、难以部署到真实业务而头疼,这篇文章会直接告诉你,这个新范式能不能用、怎么用,以及如何从零开始构建一个生产级的系统。 传统 RAG 就像一次性的搜索引擎查询,信息分散在不同数据库时,要么答案

weixin_30824479的博客 310

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

LangChain 概述:从大模型到智能体应用的桥梁

文章摘要 LangChain是一个连接大语言模型与外部工具、数据源的智能体开发框架,旨在解决LLM的知识滞后、幻觉问题和执行能力不足等局限性。其发展经历了从基础模块到智能体平台的演进,2025年发布的v1.2版本标志着框架成熟,采用LangGraph进行智能体编排,支持结构化输出、多模态和中间件系统。主要应用于RAG、智能体构建、对话系统等场景,通过模块化设计(core/classic/community)满足不同开发需求。作为大模型应用开发的关键工具,LangChain帮助开发者快速构建具备推理和行动能力

2301_80809484的博客 426

大模型智能体开发实战:从环境搭建到企业级项目落地

大模型智能体(AI Agent)作为人工智能应用的核心架构,其本质是构建一个能够理解目标、规划任务、调用工具并处理复杂流程的智能工作流。其技术原理基于大型语言模型的推理能力与外部工具(如数据库、API、计算函数)的协同,通过提示工程(Prompt Engineering)和状态管理实现任务分解与执行。这一架构的价值在于将大模型的通用认知能力与专业工具的执行能力相结合,解决传统自动化脚本难以处理的非结构化、多步骤的复杂问题。在应用场景上,智能体广泛应用于智能数据分析助手、自动化客服、内容生成与审核、多步骤业务

weixin_30251829的博客 462

03 大模型核心开发框架

如果是java选手,学习过langchain4j,上手这部分内容应该很快。先详细看看课程目标建立对 LangChain 的整体认识,知道它是什么、解决什么问题、在 AI 应用开发里处于什么位置。理解 LangChain 在 1.x 时代的产品边界、包结构、版本演进,以及它与LangGraph、LangSmith、Deep Agents 的关系。建立对 Model I/O、Chains、Memory、Retrieval、Tools/Agents、Callbacks 这六类教学视角的整体认知。

Misnearch的博客 397

人工智能世界观(认知篇)

本文系统梳理了人工智能(AI)的基础知识体系,重点解析了大模型(LLM)的核心原理、技术演进及应用边界。主要内容包括: AI基础认知:从规则驱动到数据驱动的范式转变,强调AI=数据+算法+算力的技术本质,区分了弱AI与通用AI(AGI)的能力差异。 技术发展史:回顾AI七十年发展,从符号主义、专家系统到深度学习的五次技术浪潮,重点分析Transformer架构如何推动大模型革命。 大模型原理:详解LLM的三大支柱(参数量/数据量/算力),揭示自回归生成和注意力机制的工作逻辑,对比GPT与BERT的技术路线差

轻舟已过万重山 551

实战教程来了!从零开始打造MCP+Ollama集成

模型上下文协议MCP与Ollama的整合实现指南在过去一两个个月里,模型上下文协议(Model Context Protocol,MCP)频繁出现在各种技术微信交流群中。我们已经看到了许多很酷的集成案例,大家似乎相信这个标准会长期存在,因为它为大模型与工具或软件的集成设立了规范。前面一篇文章给大家分享了MCP一些基础概念,但是读完之后还是模棱两可,所以决定尝试将Ollama中的小型语言模型与MCP服务器连接起来,体验一下这个新标准。今天,向大家展示如何实现Ollama与MCP服务器的集成。

yanqianglifei的专栏 1399
上一篇: DeepSeek + LangGraph + Chat UI:轻松搭建本地智能助手
下一篇: langgraph:基于agent和qwen2.5构造一个多功能机器人,私有化部署
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2835原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值