算法/机理模型演示平台搭建(二)——算法接口部署(FastApi)

news2025/6/5 20:15:34

算法/机理模型演示平台搭建(二)—— 算法接口部署(FastApi)

    • 1. 项目结构
    • 2. 构建 Docker 镜像
    • 3. 运行 Docker 容器
    • 4. 访问 API 文档
    • 5. 调用 API

1. 项目结构

在这里插入图片描述
app
在这里插入图片描述
app/algorithms
在这里插入图片描述
app/models
在这里插入图片描述

Dockerfile

FROM python:3.9-slim


WORKDIR /code


COPY ./requirements.txt /code/requirements.txt


RUN pip install --no-cache-dir --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt

COPY ./app /code/app

EXPOSE 8000

CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]

源码地址:https://download.csdn.net/download/qq_37128840/90949457

2. 构建 Docker 镜像

在包含 Dockerfile 的项目根目录下,运行以下命令构建镜像:

docker build -t industrial-algorithms-api .

3. 运行 Docker 容器

构建成功后,运行以下命令启动容器:

docker run -d --name industrial-algo-container -p 8000:8000 industrial-algorithms-api
  • -d: 在后台运行容器。
  • --name industrial-algo-container: 为容器指定一个名称。
  • -p 8000:8000: 将主机的 8000 端口映射到容器的 8000 端口。

4. 访问 API 文档

容器运行后,在浏览器中访问 http://localhost:8000/docs (或 http://<你的Docker主机IP>:8000/docs,如果 Docker 不在本地运行)。

你将看到由 FastAPI 自动生成的交互式 API 文档 (Swagger UI),其中列出了所有可用的算法端点、所需的输入参数(请求体)和预期的输出格式(响应体)。

在这里插入图片描述

5. 调用 API

你可以使用 API 文档页面直接发送请求来测试各个算法,或者使用 curlPostman 或其他编程语言(如 Python 的 requests 库)向以下端点发送 POST 或 GET 请求:

  • /algorithms/linear_regression (POST)
  • /algorithms/logistic_regression (POST)
  • /algorithms/decision_tree (POST)
  • /algorithms/svm (POST)
  • /algorithms/knn (POST)
  • /algorithms/kmeans (POST)
  • /algorithms/apriori (POST)
  • /algorithms/cnn_summary (POST) - 获取 CNN 模型摘要
  • /algorithms/fea_explanation (GET) - 获取 FEA 说明
  • /algorithms/meshing_explanation (GET) - 获取 Meshing 说明
  • /algorithms/genetic_algorithm (POST)
  • /algorithms/aco_tsp (POST)
  • /algorithms/pso (POST)
  • /algorithms/interpolation (POST)
  • /algorithms/pid_control (POST)
  • /algorithms/kalman_filter (POST)
  • /algorithms/fft_analysis (POST)
  • /algorithms/naive_bayes (POST) - 新增
  • /algorithms/random_forest (POST) - 新增
  • /algorithms/gradient_boosting (POST) - 新增
  • /algorithms/pca (POST) - 新增
  • /algorithms/svd (POST) - 新增
  • /algorithms/autoencoder (POST) - 新增
  • /algorithms/rnn_lstm (POST) - 新增
  • /algorithms/reinforcement_learning_concept (GET) - 新增
  • /algorithms/anomaly_detection (POST) - 新增
  • /algorithms/fuzzy_logic_concept (GET) - 新增
  • /algorithms/monte_carlo (POST) - 新增
  • /algorithms/simulated_annealing (POST) - 新增
  • /algorithms/bayesian_optimization_concept (GET) - 新增
  • /algorithms/gmm (POST) - 新增
  • /algorithms/arima (POST) - 新增
  • /algorithms/discrete_event_simulation (POST) - 新增
  • /algorithms/agent_based_modeling (POST) - 新增
  • /algorithms/system_dynamics (POST) - 新增

请求体示例:

下面是每个 POST 端点所需请求体的示例 JSON 数据。
请注意,对于 genetic_algorithmpso,API 目前使用固定的示例函数进行优化,请求体主要用于调整算法参数。
对于新增的模拟算法 (DES, ABM, SD),API 实现也是概念性的简化模拟。

  1. /algorithms/linear_regression
    {
         
      "x_train": [1, 2, 3, 4, 5],
      "y_train": [2, 4, 5, 4, 5],
      "x_predict": [6, 7, 8],
      "learning_rate": 0.01,
      "epochs": 1000
    }
    

在这里插入图片描述

  1. /algorithms/logistic_regression

    {
         
      "x_train": [1, 2, 3, 6, 7, 8],
      "y_train": [0, 0, 0, 1, 1, 1],
      "x_predict": [4, 5],
      "learning_rate": 0.05,
      "epochs": 2000,
      "threshold": 0.5
    }
    
  2. /algorithms/decision_tree

    {
         
      "X_train": [
        [1, 1],
        [1, 0],
        [0, 1],
        [0, 0],
        [1, 1],
        [0, 1]
      ],
      "y_train": [1, 1, 0, 0, 1, 0],
      "X_predict": [
        [1, 0],
        [0, 0]
      ],
      "max_depth": 2
    }
    
  3. /algorithms/svm

    {
         
      "X_train": [
        [1, 2], [2, 3], [3, 3],
        [6, 5], [7, 8], [8, 6]
      ],
      "y_train": [1, 1, 1, -1, -1, -1],
      "X_predict": [
        [2, 2],
        [7, 7]
      ],
      "learning_rate": 0.001,
      "epochs": 5000<

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2398154.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

动态规划-647.回文子串-力扣(LeetCode)

一、题目解析 这里的子字符串是连续的&#xff0c;与之前的子序列不同&#xff0c;这里需要我们统计回文子串的数目。 二、算法原理 这里也有其他算法可以解决该问题&#xff0c;如中心扩展算法 时间复杂度O(N^2)/空间复杂度O(1)&#xff0c;马拉车算法(具有局限性) 时间复杂…

仿真每日一练 | Workbench中接触种类及选择方法简介

Workbench中给我们提供的接触类型主要包括以下几种&#x1f447; ◆ 1、摩擦 ◆ 2、无摩擦 ◆ 3、绑定 ◆ 4、不分离 ◆ 5、粗糙 ◆ 6、强制滑移 下面通过最常用的摩擦和绑定给大家展示两者的区别&#xff0c;同时文末也给大家介绍了几种接触的选择方法。首先先给大家介绍一下…

Go语言中的rune和byte类型详解

1. rune类型 1.1. 基本概念 1. rune是Go语言的内建类型&#xff0c;它是int32的别名&#xff0c;即32位有符号整数&#xff1b; 2. 用于表示一个Unicode码点&#xff0c;全拼Unicode code point&#xff1b; 3. 可以表示任何UTF-8编码的字符&#xff1b; 1.2. 特点 1. 每…

【java面试】redis篇

redis篇 一、适用场景&#xff08;一&#xff09;缓存1、缓存穿透1.1 解决方案1&#xff1a;缓存空数据&#xff0c;查询返回的数据为空&#xff0c;将空结果缓存1.2 解决方案2&#xff1a;布隆过滤器 2、缓存击穿1.1 解决方案1&#xff1a;互斥锁1.2 解决方案2&#xff1a;逻辑…

高效易用的 MAC 版 SVN 客户端:macSvn 使用体验

高效易用的 MAC 版 SVN 客户端&#xff1a;macSvn 使用体验 下载安装使用总结 最近有个项目要使用svn, 但是mac缺乏一款像 Windows 平台 TortoiseSVN 那样全面、高效且便捷的 SVN 客户端工具, 直到博主找到了该工具本文将结合实际使用体验&#xff0c;详细介绍 macSvn工具的核心…

HCIP(BGP综合实验)

一、实验拓扑 AS 划分&#xff1a; AS1&#xff1a;R1&#xff08;环回 L0:172.16.0.1/32&#xff0c;L1:192.168.1.0/24&#xff09;AS2&#xff1a;R2、R3、R4、R5、R6、R7&#xff08;内部运行 OSPF&#xff0c;AS 号为 64512 和 64513 的联盟&#xff09;AS3&#xff1a;R…

Attention Is All You Need (Transformer) 以及Transformer pytorch实现

参考https://zhuanlan.zhihu.com/p/569527564 Attention Is All You Need (Transformer) 是当今深度学习初学者必读的一篇论文。 一. Attention Is All You Need (Transformer) 论文精读 1. 知识准备 机器翻译&#xff0c;就是将某种语言的一段文字翻译成另一段文字。 由…

uniapp+vue2+uView项目学习知识点记录

持续更新中... 1、发送给朋友&#xff0c;分享到朋友圈功能开启 利用onShareAppMessage和onShareTimeline生命周期函数&#xff0c;在script中与data同级去写 // 发送给朋友 onShareAppMessage() {return {title: 清清前端, // 分享标题path: /pages/index/index, // 分享路…

精美的软件下载页面HTML源码:现代UI与动画效果的完美结合

精美的软件下载页面HTML源码&#xff1a;现代UI与动画效果的完美结合 在数字化产品推广中&#xff0c;一个设计精良的下载页面不仅能提升品牌专业度&#xff0c;还能显著提高用户转化率。本文介绍的精美软件下载页面HTML源码&#xff0c;通过现代化UI设计与丰富的动画效果&…

车载诊断架构 --- DTC消抖参数(Trip Counter DTCConfirmLimit )

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

javaEE->IO:

文件&#xff1a; 操作系统中会把很多 硬件设备 和 软件资源 抽象成“文件”&#xff0c;统一进行管理。 大部分谈到的文件&#xff0c;都是指 硬盘的文件&#xff0c;文件就相当于是针对“硬盘”数据的一种抽象 硬盘&#xff1a; 1.机械硬盘&#xff1a;便宜 2.固态硬盘&…

Oracle 用户/权限/角色管理

1. 用户 1.1. 用户的创建和删除 1.1.1. 创建用户 create user user identified {by password | externally} [ default tablespace tablespace ] [ temporary tablespace tablespace ] [ quota {integer [k | m ] | unlimited } on tablespace [ quota {integer [k | m ] | …

工厂方法模式深度解析:从原理到应用实战

作者简介 我是摘星&#xff0c;一名全栈开发者&#xff0c;专注 Java后端开发、AI工程化 与 云计算架构 领域&#xff0c;擅长Python技术栈。热衷于探索前沿技术&#xff0c;包括大模型应用、云原生解决方案及自动化工具开发。日常深耕技术实践&#xff0c;乐于分享实战经验与…

python可视化:端午假期旅游火爆原因分析

python可视化&#xff1a;端午假期旅游火爆原因分析 2025年的旅游市场表现强劲&#xff1a; 2025年端午假期全社会跨区域人员流动量累计6.57亿人次&#xff0c;日均2.19亿人次&#xff0c;同比增长3.0%。入境游订单同比大涨近90%&#xff0c;门票交易额&#xff08;GMV&#…

SOC-ESP32S3部分:28-BLE低功耗蓝牙

飞书文档https://x509p6c8to.feishu.cn/wiki/CHcowZMLtiinuBkRhExcZN7Ynmc 蓝牙是一种短距的无线通讯技术&#xff0c;可实现固定设备、移动设备之间的数据交换&#xff0c;下图是一个蓝牙应用的分层架构&#xff0c;Application部分则是我们需要实现的内容&#xff0c;Protoc…

Git-flow流

Git git是版本控制软件&#xff0c;一般用来做代码版本控制 github是一个免费版本控制仓库是国内外很多开源项目的集中地&#xff0c;其本体是一个git服务器 Git初始化操作 git init 初始化仓库 git status 查看当前仓库的状态 git add . 将改动的文件加到暂存区 gi…

VirtualBox给Rock Linux9.x配置网络

写这篇文章之前&#xff0c;先说明一下&#xff0c;我参考的是我之前写的《VirtualBox Linux网络配置》 我从CentOS7转到了Rock9&#xff0c;和配置Centos7一样&#xff0c;主流程没有变化&#xff0c;变化的是Rock9.x中的配置文件和使用的命令。 我再说一次&#xff0c;因为主…

知识图谱增强的大型语言模型编辑

https://arxiv.org/pdf/2402.13593 摘要 大型语言模型&#xff08;LLM&#xff09;是推进自然语言处理&#xff08;NLP&#xff09;任务的关键&#xff0c;但其效率受到不准确和过时知识的阻碍。模型编辑是解决这些挑战的一个有前途的解决方案。然而&#xff0c;现有的编辑方法…

.NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想

在当今数据驱动的时代&#xff0c;向量数据库&#xff08;Vector Database&#xff09;作为一种新兴的数据库技术&#xff0c;正逐渐成为软件开发领域的重要组成部分。特别是在 .NET 生态系统中&#xff0c;向量数据库的应用为开发者提供了构建智能、高效应用程序的新途径。 一…

【claude+deepseek+gemini】基于李群李代数和螺旋理论工业机器人控制系统软件UI设计

claude的首次设计html是最佳的。之后让deepseek和gemini根据claude的UI设计进行改进设计。。。当然可以尝试很多次&#xff0c;也可以让他们之间来回不断改进…… claude deepseek-r1 0528 上图为deepseek首次设计&#xff0c;下面为改进设计 …… Gemini 2.5 Pro 0506 &#x…