前途科技
  • 科技
  • AI
    • AI 前沿技术
    • Agent生态
    • AI应用场景
    • AI 行业应用
  • 初创
  • 报告
  • 学习中心
    • 编程与工具
    • 数据科学与工程
我的兴趣
前途科技前途科技
Font ResizerAa
站内搜索
Have an existing account? Sign In
Follow US
Copyright © 2024 AccessPath.com, 前途国际科技咨询(北京)有限公司,版权所有。 | 京ICP备17045010号-1 | 京公网安备 11010502033860号
大模型与工程化

AI驱动供应链网络优化:连接MCP服务器与FastAPI微服务的实践

NEXTECH
Last updated: 2025年9月24日 上午5:44
By NEXTECH
Share
132 Min Read
SHARE

您是否曾梦想重新设计整个供应链,以实现更具成本效益和可持续性的运营?

Contents
使用Python进行供应链网络优化构建本地MCP服务器以连接Claude Desktop到FastAPI微服务能够进行决策的对话智能体?结论

供应链网络优化旨在以最低成本且环境友好的方式,确定商品的生产地点以服务市场。

具有不同目标的网络设计示例

具有不同目标的网络设计示例 – (图片来源:Samir Saci)

为了找到能够最小化目标函数的最佳工厂组合,必须考虑现实世界的各种约束条件(如产能、需求)。

每单位产品最大影响的环境约束示例

You Might Also Like

使用LangGraph构建高效智能体系统:深度解析与实战
构建统一意图识别引擎:打破AI孤岛,加速企业智能应用落地
京东零售总监胡浩深度解析:大模型如何重塑京东供应链,实现智能预测与决策
告别设计烦恼:用Google Stitch和AI大模型,数分钟打造生产级UI原型!

每单位产品最大影响的环境约束示例 – (图片来源:Samir Saci)

作为供应链解决方案经理,曾主导过多项网络设计研究,这些研究通常耗时10到12周。

最终成果通常是一系列演示文稿,展示多种情景,供供应链总监权衡利弊。

具有不同约束的网络设计示例

具有不同约束的网络设计示例 – (图片来源:Samir Saci)

然而,决策者在研究结果演示过程中常常感到沮丧:

总监:“如果我们将工厂产能提高25%会怎样?”

他们希望实时挑战假设并重新运行情景,而当时能提供的只有耗时数小时准备好的幻灯片。

如果能通过对话式智能体改善这种用户体验呢?

本文将展示如何连接一个MCP服务器与一个包含供应链网络优化算法的FastAPI微服务。

连接到调用FastAPI微服务的MCP服务器的Claude Desktop请求示例

连接到调用FastAPI微服务的MCP服务器的Claude Desktop请求示例 – 图片来源:Samir Saci

其结果是一个对话式智能体,能够运行一个或多个情景,并提供详细分析及智能可视化。

甚至可以要求该智能体根据目标和约束条件,就最佳决策提供建议。

智能体提供的战略建议示例

智能体提供的战略建议示例 – (图片来源:Samir Saci)

本次实验将使用:

  • Claude Desktop 作为对话界面
  • MCP Server 用于向智能体公开类型化工具
  • 带有网络优化端点的 FastAPI微服务

在第一部分,文章将通过具体示例介绍供应链网络设计问题。

随后,文章将展示由对话式智能体执行的多项深入分析,以支持战略决策。

智能体生成的用于回答开放问题的先进可视化示例

智能体生成的用于回答开放问题的先进可视化示例 – (图片来源:Samir Saci)

这是首次让人工智能如此令人印象深刻,智能体在没有任何指导的情况下,自主选择了正确的视觉效果来回答一个开放式问题!

使用Python进行供应链网络优化

问题陈述:供应链网络设计

为一家国际制造公司提供支持,其供应链总监希望重新定义公司网络,以实现长期转型计划。

供应链网络设计问题

供应链网络设计问题 – (图片来源:Samir Saci)

这家跨国公司在五个不同市场开展业务:巴西、美国、德国、印度和日本。

每个市场的需求示例

每个市场的需求示例 – (图片来源:Samir Saci)

为满足这些需求,可以在每个市场开设低产能或高产能工厂。

每种工厂类型和地点的产能

每种工厂类型和地点的产能 – (图片来源:Samir Saci)

如果开设工厂,必须考虑固定成本(与电力、房地产和资本支出相关)和每单位产品的可变成本。

每个生产国的固定和可变成本示例

每个生产国的固定和可变成本示例 – (图片来源:Samir Saci)

在本例中,印度的高产能工厂的固定成本低于美国低产能工厂的固定成本。

每个集装箱的运费示例

每个集装箱的运费示例 – (图片来源:Samir Saci)

此外,还有将集装箱从国家XXX运往国家YYY的相关费用。

所有这些费用加起来,将定义从制造地点生产和交付产品到不同市场的总成本。

那么可持续性呢?

除了这些参数,文章还考虑了每单位产品消耗的资源量。

每个国家每单位产品消耗的能源和水量示例

每个国家每单位产品消耗的能源和水量示例 – (图片来源:Samir Saci)

例如,印度工厂生产一个单位产品会消耗780兆焦耳/单位的能源和3,500升的水。

对于环境影响,文章还考虑了二氧化碳排放和废物产生造成的污染。

每个国家每单位产品的环境影响

每个国家每单位产品的环境影响 – (图片来源:Samir Saci)

在上述示例中,日本是污染最少的生产国。

在哪里生产才能最大限度地减少水资源消耗?

核心思想是选择一个最小化的指标,可以是成本、水资源消耗、二氧化碳排放或能源消耗。

LogiGreen App的输出示例

LogiGreen App的输出示例 – (图片来源:Samir Saci)

该模型将指示工厂的选址,并规划从这些工厂到各个市场的流向。

此解决方案已封装成一个网络应用程序(FastAPI后端,Streamlit前端),用作展示初创公司LogiGreen能力的一个演示。

LogiGreen App用户界面(可持续性模块)

LogiGreen App用户界面(可持续性模块)– 图片来源:Samir Saci

本次实验的目的是使用基于Python构建的本地MCP服务器,将后端与Claude Desktop连接起来。

FastAPI微服务:用于供应链网络设计的0-1混合整数优化器

这个工具是一个封装在FastAPI微服务中的优化模型。

该问题的输入数据是什么?

输入参数需提供目标函数(必填)和每单位产品最大环境影响的约束(可选)。

from pydantic import BaseModel
from typing import Optional
from app.utils.config_loader import load_config

config = load_config()

class LaunchParamsNetwork(BaseModel):
    objective: Optional[str] = 'Production Cost'
    max_energy: Optional[float] = config["network_analysis"]["params_mapping"]["max_energy"]
    max_water: Optional[float] = config["network_analysis"]["params_mapping"]["max_water"]
    max_waste: Optional[float] = config["network_analysis"]["params_mapping"]["max_waste"]
    max_co2prod: Optional[float] = config["network_analysis"]["params_mapping"]["max_co2prod"]

阈值的默认值存储在配置文件中。

这些参数将发送到一个名为launch_network的特定端点,该端点将运行优化算法。

@router.post("/launch_network")
async def launch_network(request: Request, params: LaunchParamsNetwork):
    try:         
        session_id = request.headers.get('session_id', 'session')
        directory = config['general']['folders']['directory']
        folder_in = f'{directory}/{session_id}/network_analysis/input'
        folder_out = f'{directory}/{session_id}/network_analysis/output'
        network_analyzer = NetworkAnalysis(params, folder_in, folder_out)
        output = await network_analyzer.process()
        return output
    except Exception as e:
        logger.error(f"[Network]: Error in /launch_network: {str(e)}")
        raise HTTPException(status_code=500, detail=f"Failed to launch Network analysis: {str(e)}")

API将JSON输出分为两部分返回。

在input_params部分,可以找到:

  • 所选的目标函数
  • 每个环境影响的最大限制
{ "input_params": 
{ "objective": "Production Cost", 
"max_energy": 780, 
"max_water": 3500, 
"max_waste": 0.78, 
"max_co2prod": 41, 
"unit_monetary": "1e6", 
"loc": [ "USA", "GERMANY", "JAPAN", "BRAZIL", "INDIA" ], 
"n_loc": 5, 
"plant_name": [ [ "USA", "LOW" ], [ "GERMANY", "LOW" ], [ "JAPAN", "LOW" ], [ "BRAZIL", "LOW" ], [ "INDIA", "LOW" ], [ "USA", "HIGH" ], [ "GERMANY", "HIGH" ], [ "JAPAN", "HIGH" ], [ "BRAZIL", "HIGH" ], [ "INDIA", "HIGH" ] ], 
"prod_name": [ [ "USA", "USA" ], [ "USA", "GERMANY" ], [ "USA", "JAPAN" ], [ "USA", "BRAZIL" ], [ "USA", "INDIA" ], [ "GERMANY", "USA" ], [ "GERMANY", "GERMANY" ], [ "GERMANY", "JAPAN" ], [ "GERMANY", "BRAZIL" ], [ "GERMANY", "INDIA" ], [ "JAPAN", "USA" ], [ "JAPAN", "GERMANY" ], [ "JAPAN", "JAPAN" ], [ "JAPAN", "BRAZIL" ], [ "JAPAN", "INDIA" ], [ "BRAZIL", "USA" ], [ "BRAZIL", "GERMANY" ], [ "BRAZIL", "JAPAN" ], [ "BRAZIL", "BRAZIL" ], [ "BRAZIL", "INDIA" ], [ "INDIA", "USA" ], [ "INDIA", "GERMANY" ], [ "INDIA", "JAPAN" ], [ "INDIA", "BRAZIL" ], [ "INDIA", "INDIA" ] ], 
"total_demand": 48950 
}

文章还补充了信息,为智能体提供上下文:

  • plant_name 是按地点和类型可开设的所有潜在制造地点的列表
  • prod_name 是所有潜在生产流(生产、市场)的列表
  • 所有市场的total_demand

每个市场的需求没有返回,因为它在后端加载。

并且,可以看到分析结果。

{
  "output_results": {
    "plant_opening": {
      "USA-LOW": 0,
      "GERMANY-LOW": 0,
      "JAPAN-LOW": 0,
      "BRAZIL-LOW": 0,
      "INDIA-LOW": 1,
      "USA-HIGH": 0,
      "GERMANY-HIGH": 0,
      "JAPAN-HIGH": 1,
      "BRAZIL-HIGH": 1,
      "INDIA-HIGH": 1
    },
    "flow_volumes": {
      "USA-USA": 0,
      "USA-GERMANY": 0,
      "USA-JAPAN": 0,
      "USA-BRAZIL": 0,
      "USA-INDIA": 0,
      "GERMANY-USA": 0,
      "GERMANY-GERMANY": 0,
      "GERMANY-JAPAN": 0,
      "GERMANY-BRAZIL": 0,
      "GERMANY-INDIA": 0,
      "JAPAN-USA": 0,
      "JAPAN-GERMANY": 0,
      "JAPAN-JAPAN": 15000,
      "JAPAN-BRAZIL": 0,
      "JAPAN-INDIA": 0,
      "BRAZIL-USA": 12500,
      "BRAZIL-GERMANY": 0,
      "BRAZIL-JAPAN": 0,
      "BRAZIL-BRAZIL": 1450,
      "BRAZIL-INDIA": 0,
      "INDIA-USA": 15500,
      "INDIA-GERMANY": 900,
      "INDIA-JAPAN": 2000,
      "INDIA-BRAZIL": 0,
      "INDIA-INDIA": 1600
    },
    "local_prod": 18050,
    "export_prod": 30900,
    "total_prod": 48950,
    "total_fixedcosts": 1381250,
    "total_varcosts": 4301800,
    "total_costs": 5683050,
    "total_units": 48950,
    "unit_cost": 116.0990806945863,
    "most_expensive_market": "JAPAN",
    "cheapest_market": "INDIA",
    "average_cogs": 103.6097067006946,
    "unit_energy": 722.4208375893769,
    "unit_water": 3318.2839632277833,
    "unit_waste": 0.6153217568947906,
    "unit_co2": 155.71399387129725
  }
}

这些结果包括:

  • plant_opening:如果工厂开放,布尔值设为1的列表。

在此情景中,三个地点开放:印度的一家低产能工厂,以及印度、日本和巴西的三家高产能工厂。

  • flow_volumes:国家之间的流向映射。

巴西将为美国生产12,500个单位。

  • 总产量,包括local_prod(本地生产量)、export_prod(出口生产量)和total_prod(总生产量)。
  • 成本明细,包括total_fixedcosts(总固定成本)、total_varcosts(总可变成本)和total_costs(总成本),以及对销售成本(COGS)的分析。
  • 每单位交付产品的环境影响,包括资源消耗(能源、水)和污染(二氧化碳、废物)。

这种网络设计可以通过Sankey图可视化表示。

LogiGreen App为“生产成本”情景生成的Sankey图

LogiGreen App为“生产成本”情景生成的Sankey图 – (图片来源:Samir Saci)

现在,让我们看看对话式智能体能用这些数据做些什么!

如需快速演示,可观看此YouTube视频:

构建本地MCP服务器以连接Claude Desktop到FastAPI微服务

这延续了之前一系列文章的实验,其中探讨了如何将FastAPI微服务连接到AI智能体,用于生产计划工具和预算优化器。

这一次,实验旨在使用Anthropic的Claude Desktop进行复现。

在WSL中设置本地MCP服务器

所有操作将在 WSL (Ubuntu) 中运行,并通过一个小型JSON配置让 Claude Desktop (Windows) 与MCP服务器通信。

第一步是安装uv包管理器:

uv (Python 包管理器) 在WSL中
现在可以使用它来启动一个带有本地环境的项目:

# 为专业工作区创建一个特定文件夹
mkdir -p ~/mcp_tuto && cd ~/mcp_tuto

# 初始化一个uv项目
uv init .

# 添加MCP Python SDK (带CLI)
uv add "mcp[cli]"

# 添加所需的库
uv add fastapi uvicorn httpx pydantic

这些将由包含服务器设置的network.py文件使用:

import logging
import httpx
from mcp.server.fastmcp import FastMCP
from models.network_models import LaunchParamsNetwork
import os

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(message)s",
    handlers=[
        logging.FileHandler("app.log"),
        logging.StreamHandler()
    ]
)

mcp = FastMCP("NetworkServer")

对于输入参数,已在单独的文件network_models.py中定义了一个模型。

from pydantic import BaseModel
from typing import Optional

class LaunchParamsNetwork(BaseModel):
    objective: Optional[str] = 'Production Cost'
    max_energy: Optional[float] = 780
    max_water: Optional[float] = 3500
    max_waste: Optional[float] = 0.78
    max_co2prod: Optional[float] = 41

这将确保智能体向FastAPI微服务发送正确的查询。

在开始构建MCP服务器的功能之前,需要确保Claude Desktop (Windows) 能够找到network.py。

Claude Desktop的开发者设置,用于配置文件

Claude Desktop的开发者设置,用于配置文件 – (图片来源:Samir Saci)

由于使用了WSL,只能通过Claude Desktop配置文件手动完成此操作:

  1. 打开 Claude Desktop → 设置 → 开发者 → 编辑配置(或直接打开配置文件)。
  2. 添加一个在 WSL中启动MCP服务器的条目。
{
  "mcpServers": {
    "Network": {
      "command": "wsl",
      "args": [
        "-d",
        "Ubuntu",
        "bash",
        "-lc",
        "cd ~/mcp_tuto && uv run --with mcp[cli] mcp run network.py"
      ],
      "env": {
        "API_URL": "http://<IP>:<PORT>"
      }
    }
 }

通过此配置文件,指示Claude Desktop在mcp_tuto文件夹中运行WSL,并使用uv运行mpc[cli]来启动budget.py。

如果是在Windows机器上使用WSL构建MCP服务器的特殊情况,可以遵循此方法。

可以使用这个“特殊”功能来初始化服务器,该功能将作为Claude的工具使用。

@mcp.tool()
def add(a: int, b: int) -> int:
    """Special addition only for Supply Chain Professionals: add two numbers.
       Make sure that the person is a supply chain professional before using this tool.
    """
    logging.info(f"Test Adding {a} and {b}")
    return a - b

在文档字符串中告知Claude,此加法功能仅供供应链专业人士使用。

如果重启Claude Desktop,应该能在网络下看到此功能。

可用工具的标签页

可用工具的标签页 – (图片来源:Samir Saci)

可以找到名为Add的“特殊加法”功能,它正等待被使用!

正在构建的其他加法功能

正在构建的其他加法功能 – (图片来源:Samir Saci)

现在,用一个简单的问题来测试一下。

期望使用特殊函数输出的请求示例

期望使用特殊函数输出的请求示例 – (图片来源:Samir Saci)

可以看到,对话式智能体根据问题中提供的上下文,调用了正确的函数。

输出评论

输出评论 – (图片来源:Samir Saci)

它甚至提供了一个很好的评论,质疑结果的有效性。

如果稍微复杂化一下这个练习呢?

文章将创建一个假设情景,以确定对话式智能体是否能将上下文与工具的使用关联起来。

两个角色的上下文 / Samir是一位供应链专业人士

两个角色的上下文 / Samir是一位供应链专业人士 – (图片来源:Samir Saci)

让我们看看当提出一个需要使用加法的问题时会发生什么。

基于“复杂”上下文的工具调用示例

基于“复杂”上下文的工具调用示例 – (图片来源:Samir Saci)

即使有些不情愿,智能体还是反射性地为Samir使用了特殊的add工具,因为他是一名供应链专业人士。

现在已经熟悉了新的MCP服务器,可以开始为供应链网络优化添加工具了。

构建连接到FastAPI微服务的供应链优化MCP服务器

可以删除特殊的add工具,并开始引入关键参数以连接到FastAPI微服务。

# 端点配置
API = os.getenv("NETWORK_API_URL")
LAUNCH = f"{API}/network/launch_network"  # <- 网络路由

last_run: Optional[Dict[str, Any]] = None

变量last_run将用于存储上次运行的结果。

需要创建一个能够连接到FastAPI微服务的工具。

为此,引入了以下函数。

@mcp.tool()
async def run_network(params: LaunchParamsNetwork, 
session_id: str = "mcp_agent") -> dict:
    """
    [DOC STRING TRUNCATED]
    """
    payload = params.model_dump(exclude_none=True)

    try:
        async with httpx.AsyncClient(timeout=httpx.Timeout(5, read=60)) as c:
            r = await c.post(LAUNCH, json=payload, headers={"session_id": session_id})
            r.raise_for_status()
            logging.info(f"[NetworkMCP] Run successful with params: {payload}")
            data = r.json()
            result = data[0] if isinstance(data, list) and data else data
            global last_run
            last_run = result
            return result
    except httpx.HTTPError as e:
        code = getattr(e.response, "status_code", "unknown")
        logging.error(f"[NetworkMCP] API call failed: {e}")
        return {"error": f"{code} {e}"}

此函数根据Pydantic模型LaunchParamsNetwork获取参数,发送一个干净的JSON有效载荷,其中删除了空值字段。

它异步调用FastAPI端点,并收集缓存到last_run中的结果。

此函数的关键部分是文档字符串,为了简洁已从代码片段中删除,因为这是向智能体描述函数功能的唯一方式。

第一部分:上下文

"""
    运行LogiGreen供应链网络优化。

    解决的问题
    --------------
    一个设施选址+流分配模型。它决定:
      1) 开放哪些工厂(按国家划分的低/高产能),以及
      2) 每个工厂向每个市场运输多少单位产品,
    以最小化总成本或环境足迹(二氧化碳、水、能源),
    在产能和可选的每单位足迹上限下。
"""

第一部分仅用于介绍工具使用的上下文。

第二部分:描述输入数据

"""
    输入 (LaunchParamsNetwork)
    ---------------------------
    - objective: str (默认值 "Production Cost")
        目标函数之一 {"Production Cost", "CO2 Emissions", "Water Usage", "Energy Usage"}。
        设置优化目标。
    - max_energy, max_water, max_waste, max_co2prod: float | None
        每单位产品上限(整个计划的平均值)。如果省略,将使用配置中的默认值。
        内部模型强制执行:sum(impact_i * qty_i) <= total_demand * max_impact_per_unit
    - session_id: str
        作为HTTP头转发;API使用它来分隔输入/输出文件夹。
"""

如果希望确保智能体遵守FastAPI微服务施加的输入参数的Pydantic schema,这个简短的描述至关重要。

第三部分:输出结果描述

"""
    输出 (与服务schema匹配)
    ------------------------------------
    服务返回 { "input_params": {...}, "output_results": {...} }。
    以下是字段含义,使用您的示例:

    input_params:
      - objective: "Production Cost"                 # 实际使用的目标函数
      - max_energy: 780                              # 每单位最大能源消耗 (MJ/单位)
      - max_water: 3500                              # 每单位最大水消耗 (L/单位)
      - max_waste: 0.78                              # 每单位最大废物量 (kg/单位)
      - max_co2prod: 41                              # 每单位最大CO₂产量 (kgCO₂e/单位,仅生产)
      - unit_monetary: "1e6"                         # 成本可以通过除以1e6表示为百万欧元
      - loc: ["USA","GERMANY","JAPAN","BRAZIL","INDIA"]     # 范围内的国家
      - n_loc: 5                                            # 国家数量
      - plant_name: [("USA","LOW"),...,("INDIA","HIGH")]    # 工厂开放的决策键
      - prod_name: [(i,j) for i in loc for j in loc]        # 流向i→j的决策键
      - total_demand: 48950                                 # 总市场需求 (单位)

    output_results:
      - plant_opening: {"USA-LOW":0, ... "INDIA-HIGH":1}
            按(国家-产能)的二元开放/关闭。上述示例开放:
            INDIA-LOW, JAPAN-HIGH, BRAZIL-HIGH, INDIA-HIGH。
      - flow_volumes: {"INDIA-USA":15500, "BRAZIL-USA":12500, "JAPAN-JAPAN":15000, ...}
            从生产国到市场的最佳运输计划 (单位)。
      - local_prod, export_prod, total_prod: 18050, 30900, 48950
            本地与出口产量,总产量 = 需求可行性检查。
      - total_fixedcosts: 1_381_250  (EUR)
      - total_varcosts:   4_301_800  (EUR)
      - total_costs:      5_683_050  (EUR)
            提示:total_costs / total_units = unit_cost (健全性检查)。
      - total_units: 48950
      - unit_cost: 116.09908  (EUR/单位)
      - most_expensive_market: "JAPAN"
      - cheapest_market: "INDIA"
      - average_cogs: 103.6097  (EUR/单位,跨市场)
      - unit_energy: 722.4208   (MJ/单位)
      - unit_water:  3318.284   (L/单位)
      - unit_waste:  0.6153     (kg/单位)
      - unit_co2:    35.5485    (kgCO₂e/单位)
"""

这部分向智能体描述了它将接收的输出。

文章并非仅仅依赖JSON中变量的“自解释”命名。

旨在确保它能理解手头的数据,并根据以下指导原则提供摘要。

"""
  如何解读本次运行 (基于示例JSON)
    -----------------------------------------------
    - 目标 = 成本:模型开放4家工厂 (INDIA-LOW, JAPAN-HIGH, BRAZIL-HIGH, INDIA-HIGH),
      大量从印度和巴西出口到美国,而日本则自给自足。
    - 单位经济效益:单位成本 ≈ 116.10欧元;总成本 ≈ 5.683M欧元 (除以1e6得到M欧元)。
    - 市场经济效益:“日本”是最昂贵的市场;“印度”是最便宜的市场。
    - 本地化比率:本地生产量 / 总生产量 = 18,050 / 48,950 ≈ 36.87% 本地,63.13% 出口。
    - 每单位足迹:例如,单位二氧化碳 ≈ 35.55 kgCO₂e/单位。估算总二氧化碳:
        单位二氧化碳 * 总单位 ≈ 35.55 * 48,950 ≈ 1,740,100 kgCO₂e (≈ 1,740 吨CO₂e)。

    快速健全性检查
    -------------------
    - 需求平衡:对于每个市场j,sum_i flow(i→j) == demand(j)。
    - 产能:对于每个i,sum_j flow(i→j) ≤ sum_s CAP(i,s) * open(i,s)。
    - 单位成本检查:total_costs / total_units == unit_cost。
    - 如果不可行:每单位上限 (max_water/energy/waste/CO₂) 可能过于严格。

    典型用途
    ------------
    - 基线与可持续性:首先以objective="Production Cost"运行一次,然后以
      objective="CO2 Emissions" (或 Water/Energy) 结合相同上限运行,以量化
      权衡 (成本Δ, 单位CO₂Δ, 工厂开放/流向变化)。
    - 对高管的叙述:报告主要流向 (例如,印度→美国=15.5k,巴西→美国=12.5k)、
      开放地点、单位成本和每单位足迹。使用unit_monetary将成本转换为M欧元。

    示例
    --------
      # 最小成本基线
      run_network(LaunchParamsNetwork(objective="Production Cost"))

      # 最小化CO₂并设定水资源上限
      run_network(LaunchParamsNetwork(objective="CO2 Emissions", max_water=3500))

      # 最小化水资源并设定能源上限
      run_network(LaunchParamsNetwork(objective="Water Usage", max_energy=780))
    """

文章分享了一系列潜在情景和通过实际示例对预期分析类型的解释。

这远非简洁,但旨在确保智能体能够最大限度地发挥工具的潜力。

使用工具进行实验:从简单到复杂的指令

为了测试工作流程,要求智能体以默认参数运行模拟。

对话智能体提供的分析样本

对话智能体提供的分析样本 – (图片来源:Samir Saci)

正如预期,智能体调用了FastAPI微服务,收集结果并简洁地进行了总结。

这虽然很棒,但这与之前通过LangGraph和FastAPI构建的生产计划优化智能体已有类似功能。

生产计划优化智能体的输出分析示例

生产计划优化智能体的输出分析示例 – (图片来源:Samir Saci)

文章旨在探索MCP服务器与Claude Desktop的更高级用法。

供应链总监:“希望能对多个情景进行比较研究。”

回到最初的设想,目的是为决策者(付费客户)配备一个对话式智能体,以协助他们进行决策。

让我们尝试一个更高级的问题:

提供更开放的问题,反映客户需求

提供更开放的问题,反映客户需求 – (图片来源:Samir Saci)

文章明确要求进行比较研究,同时允许Claude Sonnet 4在视觉渲染方面发挥创意。

Claude智能体分享其计划

Claude智能体分享其计划 – (图片来源:Samir Saci)

令人印象深刻的是,Claude 生成的仪表盘,可通过此链接访问。

在顶部,可以找到一份执行摘要,列出了该问题中最重要的指标。

Claude生成的执行摘要

Claude生成的执行摘要 – (图片来源:Samir Saci)

该模型在未明确提示的情况下,理解了这四个指标对于此次研究的决策过程至关重要。

在此阶段,已能体现将大型语言模型整合到工作流程中的附加价值。

以下输出更为传统,可以通过确定性代码生成。

财务和环境指标汇总表

财务和环境指标汇总表 – (图片来源:Samir Saci)

然而,Claude 的创造力超越了其自身的网络应用程序,通过智能可视化展示了每个情景下的工厂开放情况。

每个情景下开放的工厂

每个情景下开放的工厂 – (图片来源:Samir Saci)

在思考人工智能可能取代人类工作时,文章也审视了智能体生成的战略分析。

权衡分析示例

权衡分析示例 – (图片来源:Samir Saci)

将每个情景与成本优化基线进行比较的方法从未被明确要求。

智能体主动提出这一角度来展示结果。

这似乎展示了其选择适当指标以有效传达信息的能力,并且充分利用了数据。

可以提出开放式问题吗?

下一节将对此进行探讨。

能够进行决策的对话智能体?

为了进一步探索新工具的能力并测试其潜力,将提出开放式问题。

问题1:成本与可持续性之间的权衡

问题1

问题1 – (图片来源:Samir Saci)

这类问题常见于网络研究负责人的工作。

执行摘要

执行摘要 – 图片来源:Samir Saci

这似乎是一项建议,采用水资源优化策略以实现完美平衡。

可视化图表

可视化图表 – (图片来源:Samir Saci)

它使用引人注目的视觉效果来支持其观点。

成本与环境影响的散点图尤其引人注目!

实施计划

实施计划 – (图片来源:Samir Saci)

与一些战略咨询公司不同,它并未忽视实施环节。

更多详情,可点击此链接访问完整的仪表盘。

让我们尝试另一个棘手的问题。

问题2:最佳二氧化碳排放性能

在预算限制下,指标XXX的最佳性能是什么

在预算限制下,指标XXX的最佳性能是什么 – (图片来源:Samir Saci)

这是一个需要七次运行才能回答的具有挑战性的问题。

7次运行回答问题

7次运行回答问题 – (图片来源:Samir Saci)

这足以提供问题的正确解决方案。

最优解

最优解 – (图片来源:Samir Saci)

最令人赞赏的是其用于支撑论证的视觉效果质量。

使用的视觉示例

使用的视觉示例 – (图片来源:Samir Saci)

在上面的可视化图表中,可以看到该工具模拟的不同情景。

尽管X轴方向可能存在疑问,但该可视化图表依然清晰易懂。

战略建议

战略建议 – (图片来源:Samir Saci)

在战略建议的质量和简洁性方面,大型语言模型展现出卓越的能力。

考虑到这些建议是与决策者沟通的主要切入点,而决策者通常没有时间深入了解细节,这仍然是支持使用这种智能体的一个强有力论据。

结论

本次实验取得了成功!

相较于之前文章中介绍的简单AI工作流程,MCP服务器的附加价值无疑是巨大的。

当拥有一个包含多个情景的优化模块(取决于目标函数和约束条件)时,可以利用MCP服务器使智能体能够基于数据做出决策。

这种解决方案可应用于以下算法:

  • 生产计划优化模块

案例研究:模拟不同持有成本和设置成本的情景,以了解其影响。

  • 分销计划优化模块

案例研究:模拟多种分销设置,包括新增仓库或不同订单处理能力。

  • 采购优化模块

案例研究:测试最小订货量(MOQ)或订货成本对最佳采购策略的影响。

这些都是为整个供应链配备对话智能体(连接到优化工具)的机会,以支持决策制定。

可以超越运营话题吗?

Claude在此次实验中展现的推理能力也激发了探索业务话题的灵感。

其中一个YouTube教程中提出的解决方案,将是下一个MCP集成的好选择。

视频中使用的示例的价值链

视频中使用的示例的价值链 – (图片来源:Samir Saci)

目标是支持一位在食品饮料行业经营业务的朋友。

他们在巴黎向咖啡馆和酒吧销售中国生产的可回收杯子。

该业务的价值链

该业务的价值链 – (图片来源:Samir Saci)

希望使用Python模拟其整个价值链,以识别优化杠杆,最大限度地提高其盈利能力。

使用Python进行业务规划——库存和现金流管理

使用Python进行业务规划——库存和现金流管理 (图片来源:Samir Saci)

此算法也封装在FastAPI微服务中,可以成为下一个数据驱动的商业战略顾问。

模拟情景以找到最大化盈利能力的最优设置

模拟情景以找到最大化盈利能力的最优设置 – (图片来源:Samir Saci)

部分工作涉及模拟多个情景,以确定多项指标之间的最佳权衡。

显然,一个由MCP服务器驱动的对话式智能体能够完美地完成这项工作。

更多信息,请查看下方链接的视频。

未来的文章将分享这一新实验。

敬请关注!

寻找灵感?

阅读完本文,是否已准备好搭建自己的MCP服务器?

文章分享了搭建服务器的初步步骤,并以add函数为例,现在可以实现任何功能。

无需使用FastAPI微服务。

工具可以直接在MCP服务器托管的相同环境中创建(此处为本地)。

若需灵感,可在相关文章中找到数十款解决实际运营问题的分析产品(附源代码)。

TAGGED:AI智能体FastAPIMLOps供应链优化大模型
Share This Article
Email Copy Link Print
Previous Article 传统RAG流程示意图 RAG问答系统防范“幻觉”的5大策略:提升用户信任与系统准确性
Next Article 苹果iPhone 13 Pro Max手机示意图 苹果高价回收iPhone 13 Pro Max?TikTok谣言大揭秘!
Leave a Comment

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

最新内容
20251202135921634.jpg
英伟达20亿美元投资新思科技,AI芯片设计革命加速
科技
20251202130505639.jpg
乌克兰国家AI模型选定谷歌Gemma,打造主权人工智能
科技
20251202121525971.jpg
中国开源AI新突破:DeepSeek V3.2模型性能比肩GPT-5
科技
20251202112744609.jpg
马斯克预言:AI三年内解决美国债务危机,可信吗?
科技

相关内容

OpenAI开发者日2025数据增长图
AI 前沿技术

OpenAI 2025开发者日:开幕主题演讲精要与多项重磅功能升级

2025年10月8日
大模型‘Haha Moments’类型示例
AI 前沿技术

大模型会替代搜索引擎吗?深度探讨AI对未来信息检索的影响与融合趋势

2025年10月17日
Anthropic研究引发关注
AI 前沿技术

Anthropic重磅研究:250份文档即可投毒任意大模型,颠覆AI安全认知

2025年10月12日
AI 前沿技术

Claude 官方Prompt Engineer建议:提升AI交互效率的核心原则与实用技巧

2025年10月6日
Show More
前途科技

前途科技是一个致力于提供全球最新科技资讯的专业网站。我们以实时更新的方式,为用户呈现来自世界各地的科技新闻和深度分析,涵盖从技术创新到企业发展等多方面内容。专注于为用户提供高质量的科技创业新闻和行业动态。

分类

  • AI
  • 初创
  • 学习中心

快速链接

  • 阅读历史
  • 我的关注
  • 我的收藏

Copyright © 2025 AccessPath.com, 前途国际科技咨询(北京)有限公司,版权所有。 | 京ICP备17045010号-1 | 京公网安备 11010502033860号

前途科技
Username or Email Address
Password

Lost your password?

Not a member? Sign Up