电子书

MATLAB 智能体 AI 指南

简介:MATLAB 智能体 AI

生成式人工智能改变了我们与计算机的交互方式,但想要比聊天更进一步,构建能够自主推理、采取行动和执行 MATLAB® 代码的人工智能系统,则需要一种全新的方法。如今,要求大型语言模型解决工程问题,往往意味着反复复制代码、手动修正错误,并寄希望于 AI 了解您的专业领域。智能体 AI 改变了这一点。

本指南将向您展示如何构建不仅提出解决方案,而且能够执行解决方案的 AI 系统。通过将 LLM 使用模型上下文协议 (MCP) 连接到 MATLAB,您可以创建能够编写代码、运行仿真、分析结果并反复迭代直至完成任务的智能体。

三个框展示了从生成式 AI (手动复制粘贴)到生成式 AI + 工具(AI 编写,您调试)再到智能体 AI (AI 编写、运行并修复代码)的发展过程。

从传统基于聊天的 AI 向完全自主智能体 AI 的演变。


从聊天到行动:为何选择智能体 AI?

如果您使用过 ChatGPT 或 Claude 来协助编写 MATLAB 代码,您一定很熟悉这个流程:提出问题,获得代码,将其粘贴到 MATLAB 中,遇到错误,返回聊天界面,解释错误,获取新代码,如此往复。它能正常工作,但速度缓慢且令人沮丧。

智能体 AI 闭合了这一循环。不再是由您手动操作的文本生成器,AI 智能体能够:

  • 编写代码并直接执行。
  • 查找错误并将其自动修正。
  • 访问您的工作区和数据
  • 反复执行直到任务完成
  • 提供经过验证的有效结果

与此形成对比的是生成式 AI,其特点为:

  • 根据请求生成代码片段
  • 需要您手动复制、粘贴并运行代码。
  • 依赖您来解释错误并提出后续问题。
  • 无法访问您的文件或数据
  • 无法验证代码是否实际有效

将聊天机器人变为伙伴的四项能力

生成式 AI 就像拥有一位撰写报告的顾问。具备智能体能力的 AI 就像有一位能够完成工作的伙伴。这类 AI 不仅告诉您如何解决问题,它还会解决问题,展示结果,并询问您是否需要更改。

智能体系统功能

一个智能体系统应具备四项关键能力。正是这四项能力使其从聊天机器人变为了自主求解器。

能力 含义 MATLAB 示例
推理 将复杂问题分解为若干步骤 “为了优化该控制器,我将首先分析被控对象,然后设计一个 PID 控制器,最后进行调试。”
规划 达成目标的序列行动 “步骤 1:加载数据。步骤 2:训练模型。步骤 3:验证。步骤 4:导出。”
工具使用 调用外部函数和 API 调用 trainnetsim 或自定义 MATLAB 函数
自适应 从反馈和错误中学习 “出现了错误。让我检查一下尺寸,然后再试一次。”

为何将 MATLAB 与智能体 AI 结合使用?

MATLAB 可为工程和科学领域的智能体 AI 提供独特的价值,因为它具备:

  • 可靠计算:大型语言模型会产生数学幻觉,而 MATLAB 能正确计算。
  • 领域专业知识:提供了超过 100 个用于信号处理、控制、深度学习等的工具箱。
  • 仿真能力:连接到 Simulink® 进行系统级测试和验证。
  • 专业工具:内置代码分析、可视化和部署功能。

理解模型上下文协议

LLM 想使用 MATLAB 就必须具备发现可用工具、以正确参数调用这些工具并接收结果的能力。这正是模型上下文协议所提供的:一个使 AI 与工具交互成为可能的通用框架。我们可将 MCP 想做 AI 的 USB-C 端口:正如 USB-C 允许任何设备连接任何外设,MCP 也让任何 AI 模型能够连接任何工具,包括 MATLAB。

三步流程图:AI 智能体(Claude、Copilot 等)连接到 MCP 服务器(协议桥),该服务器连接到 MATLAB(执行代码)。

MCP 架构:AI 智能体如何连接到 MATLAB。

MCP 服务器负责在 AI 请求与 MATLAB 执行之间进行转译。智能体决定做什么;MATLAB 负责计算。

使用 MCP 调用 MATLAB 的两种方法

方法 用例 您需要
将 MATLAB 用作工具 (MCP Core Server) 允许外部 AI 应用(Claude Desktop、GitHub Copilot、VS Code)执行 MATLAB 代码 MATLAB + MCP Core Server + 自选 AI 客户端
将 MATLAB 用作主机(MCP 客户端) 在 MATLAB 中构建调用外部工具和 API 的智能体 MATLAB + MCP 客户端插件 + 使用 MATLAB 调用 LLMs

MATLAB MCP Core Server 让所有兼容 MCP 的 AI 应用均可使用 MATLAB。安装完成后,诸如 Claude Desktop、GitHub Copilot 或 Gemini CLI 等 AI 助手可以在您的控制下替您编写并执行 MATLAB 代码。

在幕后,MCP Core Server 提供了五项基础能力,使智能体能够自主地与 MATLAB 协作。您无需直接调用这些功能;智能体会根据您的指令自动使用它们:

当您让 AI... MCP Core Server 会负责...
“编写一个函数以过滤此信号。” 代码生成 — 创建并保存 .m 文件到您的工作区
“运行此脚本并向我展示结果。” 代码执行 — 运行 MATLAB 代码并捕获输出、图表和错误
“请检查我的代码是否存在问题。” 代码分析 — 使用 MATLAB 内置的代码检查工具评估代码样式和正确性
“请修正该错误后重试。” 迭代改进 - AI 识别错误,修改代码并重新运行
(自动) 会话管理 — 透明地启动并维护 MATLAB 连接

智能体工作流的实际应用

典型的互动如下所示:您请求:“为此噪声信号创建一个巴特沃斯滤波器。”AI 编写代码,在 MATLAB 中运行,检查是否存在错误或意外结果,优化方法,并提供带图的可运行代码,整个过程无需您进行任何复制或粘贴操作。

安装

从 GitHub 获取 MATLAB MCP Core Server:

# 克隆仓库
git clone https://github.com/mathworks/matlab-mcp-core-server

# 遵循您的 AI 客户端的设置说明
# (Claude 桌面版、带 Copilot 的 VS Code、Gemini 命令行工具等)

配置示例(Claude 桌面版)

将以下内容添加到您的 claude_desktop_config.json 中:

{ 
 "mcpServers": { 
 "matlab": { 
 "command": "/path/to/matlab-mcp-server", 
 "args": [] 
 } 
 } 
} 

了解您托付给 AI 的内容

具备智能体功能的 AI 工具能够在您的计算机上编写和执行代码,并访问您的文件。此能力强大但需要信任。在批准重大操作之前,尤其是在产品级环境中,请审查 AI 所提出的建议。


在 MATLAB 中构建 AI 智能体(MCP 客户端)

如果您想构建一个在 MATLAB 内运行并能够调用外部工具和 API 的智能体,该怎么办?MATLAB MCP 客户端使这一切成为可能,从而将 MATLAB 转变为智能体 AI 开发的平台。

四个组件:您的 MATLAB 代码(智能体逻辑)、大型语言模型 API(OpenAI、Ollama 等)、MCP 客户端(工具发现)以及外部 MCP 服务器(任何工具或 API)

基于 MATLAB 的智能体 AI 系统的四个构建模块。

MATLAB 作为 AI 智能体主机的关键能力

  • 发现工具:查询 MCP 服务器以列出可用工具及其输入架构。
  • 调用工具:使用 callTool 调用外部工具,就像调用本地 MATLAB 函数一样简便。
  • LLM 集成将工具架构转换为 openAIFunction 对象,以实现无缝的函数调用。

接下来,让我们来看一个在 MATLAB 中构建智能体工作流的示例:

% 连接到 MCP 服务器 
client = mcpClient("path/to/mcp-server"); 
 
% 列出服务器可用工具 
tools = listTools(client); 
disp(tools); 
 
% 将工具转换为适用于 LLM 的 OpenAI 函数格式 
functions = openAIFunction(tools); 
 
% 创建一个启用函数调用的聊天 
chat = openAIChat("你是个能干的助手。", ... 
 Tools=functions); 
 
% 发送用户查询 - LLM 决定是否需要使用工具 
response = generate(chat, "第十个质数是多少?"); 
 
% 如果大型语言模型请求调用工具,请执行该操作 
if isfield(response, 'tool_calls') 
 toolRequest = response.tool_calls; 
 result = callTool(client, toolRequest); 
     
 % 将结果反馈给大型语言模型以获得最终响应 
 finalResponse = generate(chat, result); 
end 

您可以连接到什么?

任何 MCP 服务器均可与 MATLAB MCP 客户端配合使用。这包括用于数据库、Web API、文件系统、其他 AI 服务以及您构建的自定义工具的服务器。此生态系统正在迅速发展。


在 MATLAB 中实现工具调用

工具调用是智能体 AI 的核心机制。LLM 不直接执行函数,而是输出一个结构化请求,描述应使用哪些参量调用哪个函数。您的代码随后执行该函数并将结果返回给 LLM。

四步工作流:用户查询,LLM 决定(请求 addNumbers(212,88)),MATLAB 执行(结果 = 300),语言模型回应(“和为300”)

智能体 AI 系统如何处理从用户输入查询到最终响应的全过程。

LLM 推理计算内容。MATLAB 负责将其正确计算。当用户提交查询时,LLM 会解读其意图,并决定调用哪个工具以及使用哪些参数。然后,MATLAB 执行该函数并返回结果。LLM 生成自然语言形式的回答。用户无需自行编写或运行代码。

在 MATLAB 中定义工具

% 定义一个函数,供大型语言模型调用 
function result = addTwoNumbers(x1, x2) 
 result = x1 + x2; 
end 
 
% 为 LLM 创建工具定义 
addTool = openAIFunction("addTwoNumbers", ... 
 "将两个数字相加"); 
addTool = addParameter(addTool, "x1", "数字", ... 
 "要相加数字中的第一个", Required=true); 
addTool = addParameter(addTool, "x2", "数字", ... 
 "要相加数字中的第二个", Required=true);

构建一个简单的智能体

function aiAgent(userQuery) 
 % 初始化具有工具的聊天 
 chat = ollamaChat("mistral-nemo", Tools=addTool); 
     
 % 获取大型语言模型响应 
 response = generate(chat, userQuery); 
     
 % 检查大型语言模型是否想调用工具 
 if isfield(response, 'tool_calls') 
 % 提取函数调用细节 
 funcName = response.tool_calls.function.name; 
 args = response.tool_calls.function.arguments; 
         
 fprintf("AI 请求: %s(%f, %f)\n", ... 
 funcName,args.x1,args.x2); 
         
 % 执行该函数 
 result = addTwoNumbers(args.x1, args.x2); 
 fprintf("结果:%f\n", result); 
 else 
 % 无需调用工具 - 直接显示响应 
 disp(response.content); 
 end 
end

使用 MATLAB 附加功能,多个 LLM 提供商支持工具调用。这些提供商包括:

  • OpenAI:最新的 GPT 模型(通过 API)
  • Azure OpenAI:企业部署
  • Ollama:本地模型,如 Mistral、GPT-OSS、DeepSeek 和 Qwen

创建高效的 AI 智能体

从演示走向生产,需要采用能使智能体变得可靠、可观测且安全的模式。这些方法已在现实世界的智能体系统中经过实战检验。

模式 1:ReAct(推理 + 行动)

最常见的智能体模式是在思考与行动之间交替进行。LLM 推理下一步该做什么,采取行动,观察结果,并重复此过程。

% ReAct 循环模式 
while ~taskComplete 
 % 思考:LLM 推理下一步行动 
 thought = generate(chat, [context, "接下来我应该做什么?"]); 
     
 % 行动:如有需要,执行工具。 
 if needsTool(thought) 
 result = executeTool(thought.tool_call); 
 context = [context; result]; 
 end 
     
 % 观察:根据结果更新状态 
 taskComplete = checkCompletion(context); 
end 

模式 2:工具链

复杂任务需要按顺序调用多个工具。一个的输出成为下一个的输入。例如:

阶跃 行动 目的
1 生成代码 AI 根据您的需求编写 MATLAB 代码。
2 分析代码 检查错误、样式问题及潜在的 Bug。
3 执行代码 在 MATLAB 中运行并捕获输出。
4 评估结果 AI 审查输出;修正错误或确认成功。

模式 3:人员在环

对于功能安全关键型的应用,在智能体采取行动之前添加批准步骤:

% 人员在环模式 
proposedAction = generate(chat, query); 
 
% 显示建议的行动以供批准 
fprintf("建议:%s\n", proposedAction.description); 
approval = input("批准吗?(是/否):", "s"); 
 
if strcmp(approval, "y") 
 result = executeAction(proposedAction); 
else 
 disp("操作已取消。"); 
end 

实用指南

有几条指南是确保智能体可靠性的关键:

  • 从简单开始:在构建复杂调用链之前,先让单个工具能够正常运行。
  • 增加可观测性:记录每一次 LLM 调用和工具执行情况,因为调试时会需要这些数据。
  • 优雅地处理错误:LLM 会犯错;请构建带有指数退避机制的重试逻辑。
  • 设定边界:限制迭代次数、词元预算以及智能体可以访问的工具。
  • 进行对抗性测试:在智能体触达用户之前,故意测试边缘情况以尝试使其崩溃。