AI工艺自动调整项目实现第2讲:完成项目1

发布时间:2026/10/31 10:50:28
AI工艺自动调整项目实现第2讲:完成项目1

一、CodeX

AI编程新王Codex详细攻略,一期视频精通,附免费使用方法_哔哩哔哩_bilibili

(2026年2月最新版)Codex & Codex CLI 国内使用教程: 支付注册、安装配置、常见命令,手把手教学! | 小林coding | Java面试学习

自己的电脑安装在D盘:D:\Nodejs\node_global

配置文件config.toml在:C:\Users\33651\.codex

1、安装MCP

法1>:对话让Codex安装

Codex MCP 服务器安装全攻略:接入 context7 与 chrome-devtools - WenHaoFree

法2>手动编辑 Codex 配置文件 (config.toml)

2、让CodeX生成项目代码示例


一、项目目标 请帮我构建一个工业AI工艺优化系统(Python工程),实现以下能力: 基于 .xlsx 工艺数据训练模型 建立 工艺参数(温度/压力/流量等) → 质量结果(膜厚/方阻) 的映射模型 自动分析哪些参数对结果影响最大 自动推荐最优工艺参数组合 支持模型持续学习(新数据自动优化模型) 👉 本质是一个: 数据驱动的工艺优化系统(AI Process Optimization System) 二、系统整体架构 请按以下模块化架构生成代码: 数据层 → 特征工程 → 模型层 → 优化层 → 服务层 详细说明: 1️⃣ 数据层(Data Layer) 输入:xlsx文件 内容: 温度(多温区) 压力 流量 时间 质量指标(目标值) 2️⃣ 数据处理与特征工程(Feature Engineering) 实现: 缺失值处理 异常值过滤 特征构造(必须包含): 温度均值 温差 压力×温度 滑窗/统计特征(可选) 👉 说明:工艺参数与质量通常是强非线性关系 3️⃣ 模型层(Machine Learning) 实现回归模型: 优先使用: XGBoost(主模型) RandomForest(备选) 功能: 训练模型 预测质量 模型评估(R2 / MAE) 👉 原理:通过机器学习建立参数与质量的非线性映射 4️⃣ 优化层(Optimization Core) 实现: ✅ 贝叶斯优化(必须) 功能: 输入:目标(如最大膜厚/最小波动) 输出:最优参数组合 👉 原理: 用最少实验找到最优参数组合 5️⃣ 自学习模块(Online Learning) 实现: 增量训练(incremental learning) 支持新数据自动更新模型 功能: 新数据 → 模型更新 → 精度提升 👉 对应工业“持续优化”能力 6️⃣ 可解释性模块(Explainability) 实现: 特征重要性(feature importance) SHAP(推荐) 输出: 温度:影响最大 压力:次要 流量:中等 7️⃣ API服务层(Deployment) 使用: Flask / FastAPI 接口: ① 预测接口 POST /predict 输入: { "temp1": 700, "pressure": 1.2 } 输出: { "prediction": 123.4 } ② 优化接口 POST /optimize 输出: { "best_params": {...} } 三、项目目录结构(必须按这个生成) ai_process_optimization/ │ ├── data/ │ ├── raw/ │ ├── processed/ │ └── features/ │ ├── config/ │ └── config.yaml │ ├── src/ │ ├── data/ │ │ ├── loader.py │ │ ├── cleaner.py │ │ └── feature_engineering.py │ │ │ ├── models/ │ │ ├── train.py │ │ ├── predict.py │ │ └── update.py │ │ │ ├── optimization/ │ │ └── bayesian_opt.py │ │ │ ├── explain/ │ │ └── shap_analysis.py │ │ │ ├── api/ │ │ └── app.py │ │ │ └── utils/ │ ├── models_store/ ├── notebooks/ ├── main.py ├── requirements.txt └── README.md 四、核心流程(必须实现) 读取xlsx数据 数据清洗 特征工程 训练模型 预测质量 优化参数(贝叶斯) 输出推荐参数 保存模型 新数据 → 增量学习 五、关键技术要求 必须包含: pandas(数据处理) scikit-learn(基础建模) xgboost(主模型) scikit-optimize(贝叶斯优化) shap(可解释性) flask(API) 六、工程要求 代码必须可运行(无伪代码) 每个模块独立 支持扩展(工业级结构) 提供示例数据格式说明 提供运行说明(README) 按照这个说明生成完整Python工程代码(所有文件)

3、代码总逻辑理解

自己写的理解,在下面这个文件里

二、conda创建项目的环境,完成main.py命令行参数解析

1、conda创建项目的环境

PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】_哔哩哔哩_bilibili

(99+ 封私信) 【小白-python】使用 Conda 优雅的为每一个项目创建它的环境 - 知乎

环境安装在:

D:\Anaconda_envs\envs\process_optimization

在项目中配置Python解释器:

最后,创建requirements.txt,如下图:

2、main.py:argparse模块,完成命令行参数解析

所有目录结构仿照一、的 ai_process_optimization,如下图

参照下述链接,仿照上图的ai_process_optimization,完成命令行参数解析。

argparse (argument parser)

  • argument:参数
  • parser:解析器

(99+ 封私信) Python argparse 模块:命令行参数解析全攻略 - 知乎

深度学习基础 | argparse 模块 | 命令行参数解析_哔哩哔哩_bilibili

1>为什么使用 argparse?

在编写脚本时,如果不使用参数解析,修改超参数需要频繁更改代码,且函数传参时会导致代码臃肿。使用 argparse 可以实现:

  • 灵活传参:在终端命令行中直接指定超参数,无需修改源码。
  • 代码简洁:将多个参数打包成一个对象(Namespace),函数传参时只需传递该对象即可。

2>argparse 核心三步曲

  1. 创建解析器:parser = argparse.ArgumentParser(description='项目描述')
  2. 添加参数:parser.add_argument('参数名', ...)
  3. 解析参数:args = parser.parse_args()(解析后的参数以对象属性的形式获取,如 args.参数名)

3>核心功能与参数详解

1》帮助信息(Help)

  • 项目描述:在 ArgumentParser 中通过 description 设置。
  • 参数说明:在 add_argument 中通过 help='说明文本' 设置。
  • 查看方式:在命令行运行 python 脚本.py -h 或 --help 即可自动生成并查看帮助文档。

通过 description 设置项目描述,通过 help 设置参数说明。

import argparse # 创建解析器并添加项目描述 parser = argparse.ArgumentParser(description='这是一个用于演示帮助信息的脚本') # 添加参数并设置说明文本 parser.add_argument('--name', type=str, help='请输入你的名字') # 解析参数 args = parser.parse_args()

终端运行命令:

python script.py -h

输出结果:

usage: script.py [-h] [--name NAME] 这是一个用于演示帮助信息的脚本 optional arguments: -h, --help show this help message and exit --name NAME 请输入你的名字

上图输出结果的“NAME”是什么?

  • 参数长选项:--name
  • argparse 会去掉--,把名字转大写,作为这个参数值的占位标识 →NAME
  • 含义:--name后面需要跟一个值,NAME就代表「这里要填的内容」

运行示例:

python script.py --name Tom

这里Tom就是帮助信息里那个NAME占位对应的实际值。

2》参数的全称与缩写

  • 定义:add_argument('-tf', '--girlfriend', ...)
  • 使用:命令行中 -tf 和 --girlfriend 均可使用。
  • ⚠️ 注意:在代码中获取参数值时,只能使用全称(如 args.girlfriend),使用缩写(如 args.tf)会报错。

定义缩写和全称,代码中只能使用全称获取值。

import argparse parser = argparse.ArgumentParser(description='演示全称与缩写') # -tf 是缩写,--girlfriend 是全称 parser.add_argument('-tf', '--girlfriend', type=str, default='单身', help='你的女朋友') args = parser.parse_args() # ✅ 正确:使用全称获取 print(args.girlfriend) # ❌ 错误:使用缩写获取(会报 AttributeError: 'Namespace' object has no attribute 'tf') # print(args.tf)

终端运行命令:

# 使用缩写传参 python script.py -tf "Rose" # 或者使用全称传参 python script.py --girlfriend "Rose"

输出结果:

Rose

3》位置参数(Positional Arguments)

  • 定义:参数名前不带 - 或 --(如 add_argument('food'))。
  • 特点:
    • 必填:如果不传值,程序会报错。
    • 按序赋值:命令行中直接写值,无需写参数名,且严格按照代码定义的顺序赋值。
    • 禁止加前缀:在命令行中给位置参数传值时,不能加 --food,否则报错。

参数名前不带 -,必须按顺序传入,不能省略,且命令行中不能加前缀。

import argparse parser = argparse.ArgumentParser(description='演示位置参数') # 不带 '-',这是一个位置参数 parser.add_argument('food', type=str, help='今天想吃的食物') args = parser.parse_args() print(f"今天吃:{args.food}")

终端运行命令:

# ✅ 正确:直接写值 python script.py pizza # ❌ 错误:加了前缀(会报错:unrecognized arguments: --food) # python script.py --food pizza

输出结果:

今天吃:pizza

4》必填参数与默认值(default)

  • 必填可选参数:以 -- 开头的参数默认是可选的,若设为必填,需添加 required=True。
  • 默认值:通过 default=值 设置。若命令行未传该参数,则使用默认值。
  • 类型控制:通过 type=int 等指定参数类型,传入非该类型数据会报错。

以 -- 开头的参数默认是可选的,可通过 required=True 设为必填,通过 default 设置默认值。

import argparse parser = argparse.ArgumentParser(description='演示必填参数与默认值') # 必填可选参数 parser.add_argument('--age', type=int, required=True, help='你的年龄') # 带默认值的可选参数 parser.add_argument('--city', type=str, default='北京', help='你的城市') args = parser.parse_args() print(f"年龄:{args.age},城市:{args.city}")

终端运行命令:

# 只传必填参数,city 使用默认值 python script.py --age 25

输出结果:

年龄:25,城市:北京

5》布尔开关(Action)

  • 用法:action='store_true' 或 action='store_false'。
  • 特点:
    • 仅接受布尔值(True/False)。
    • 命令行中只需指定参数名,无需在后面跟具体的值(如 --debug 即可,不能写 --debug True)。
  • ⚠️ 避坑指南:尽量不要同时使用 action 和 default,以免产生逻辑冲突。

使用 action='store_true',命令行中只需写参数名,无需跟具体的值。

import argparse parser = argparse.ArgumentParser(description='演示布尔开关') # 布尔开关 parser.add_argument('--debug', action='store_true', help='开启调试模式') args = parser.parse_args() print(f"调试模式是否开启:{args.debug}")

终端运行命令:

# 只需写 --debug,不需要跟 True python script.py --debug

输出结果:

调试模式是否开启:True

6》变量重命名(dest)

  • 用法:add_argument('--no-warmup', dest='warmup')
  • 特点:命令行中使用 --no-warmup,但在代码中必须通过 args.warmup 来获取该参数的值。

使用 dest 参数,命令行中使用一个名字,代码中使用另一个名字获取值。

import argparse parser = argparse.ArgumentParser(description='演示变量重命名') # 命令行中使用 --no-warmup,代码中使用 args.warmup parser.add_argument('--no-warmup', dest='warmup', action='store_true', help='取消预热') args = parser.parse_args() print(f"是否取消预热:{args.warmup}")

终端运行命令:

python script.py --no-warmup

输出结果:

是否取消预热:True

4>【重要】argparse子命令:parser.add_subparsers

下述链接五、

Python argparse 模块:命令行参数解析全攻略 - 知乎

argparse --- 用于命令行选项、参数和子命令的解析器 — Python 3.14.7 文档

5>Debug 模式如何传参?

在 IDE(如 PyCharm)中直接运行代码进行 Debug 时,无法通过终端传参。解决方法是在 parse_args()