我的第一个人工智能食品助手

本技术指南将介绍如何在 Sevalla 的应用程序托管平台上部署由 AI 驱动的食品食谱助手应用程序。我们将介绍托管具有 AI 功能的 Python FastAPI 应用程序的部署过程、配置和最佳实践。

首先发布在 Medium 上:点击她查看完整博客

Image description

项目概况

AI 食品食谱助手是一款现代化的 Web 应用程序,它利用:

  • FastAPI 用于后端 API
  • OpenAI 的 GPT-3.5 和 DALL-E 3 用于 AI 驱动的配方和图像生成
  • 前端使用 HTML/TailwindCSS/AlpineJS
  • 安全配置的环境变量
  • Docker 用于容器化
  • 应用程序代码可在 AI Food Recipe Assistant 的 Github Repo 上获取。

    AI应用功能及输出

    Image description

    智能配方生成

    我们部署的AI食品食谱助手将展示强大的AI功能,例如:

    自然语言理解:用户可以用简单的英语请求食谱(例如“纯素巧克力熔岩蛋糕”)

    饮食定制:根据不同的偏好自动调整食谱:

  • 素食/纯素食选择
  • 无麸质替代品
  • 适合生酮饮食的版本
  • 其他饮食限制
  • 菜系融合:支持多种菜系和文化适应
  • 人工智能生成的内容

    每个配方请求都会生成以下内容:

    详细菜谱信息:

  • 带有精确测量的成分列表
  • 一步一步的烹饪说明
  • 烹饪时间和温度
  • 食用建议
  • 营养信息
  • 视觉内容:

  • DALL-E 3 生成逼真的食物图像
  • 令人垂涎的演示建议
  • 视觉烹饪指南
  • 学习资源:
  • 烹饪技巧讲解
  • 成分替代选项
  • 完美执行的秘诀
  • 示例输出

    以下是应用程序为“纯素意大利巧克力熔岩蛋糕”生成的一个示例:

    {
        "recipe": {
            "title": "Vegan Italian Choco Lava Cake",
            "description": "Indulge in the decadence of a vegan Italian-style choco lava cake that will impress even the most discerning dessert lovers!",
            "ingredients": [
                "1 cup all-purpose flour",
                "1/2 cup unsweetened cocoa powder", 
                "1/2 cup sugar",
                "1/2 cup plant-based milk",
                "// ... other ingredients"
            ],
            "instructions": [
                "1. Preheat oven to 375°F (190°C)",
                "2. Mix dry ingredients in a bowl",
                "// ... detailed steps"
            ]
        },
        "image_url": "https://ai-generated-image.example/vegan-lava-cake.jpg",
        "learning_resources": [
            {
                "type": "video",
                "title": "Master the Art of Vegan Lava Cakes",
                "url": "https://youtube.com/cookingtutorials"
            }
        ]
    }

    让我们部署这个...

    先决条件

    在部署到 Sevalla 之前,请确保您已:

  • 塞瓦拉账户
  • Git 存储库中的应用程序代码
  • 用于 AI 功能的 OpenAI API 密钥
  • 本地部署步骤

    1. 应用程序设置

    首先,准备部署你的应用程序:

    首先尝试在本地运行我们的应用程序:

  • 克隆存储库
  • git clone https://github.com/rohitg00/ai-food-recipe-assistant.git
       cd ai-food-recipe-assistant
  • 设置 Python 环境
  • python -m venv venv
       source venv/bin/activate  # On Windows: venv\Scripts\activate
       pip install -r requirements.txt
  • Dockerfile 设置 应用程序包含一个用于容器化部署的 Dockerfile: FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . EXPOSE 8000 CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
  • 配置环境变量
  • cp .env.example .env
       # Edit .env and add your OpenAI API key:
       # OPENAI_API_KEY=your_api_key_here
  • 运行应用程序
  • uvicorn main:app --reload

    请参考 Sevella Docs 上提供的快速入门示例,随意创建您自己的应用程序。

    Sevella 部署步骤

    2. 部署至塞瓦拉

    Sevalla 使用起来非常简单,几秒钟内即可完成部署。因此,在这一步中,我们将通过连接我的 GitHub 存储库来创建一个应用程序,该存储库已包含 AI 食品食谱助手代码。

    Image description
  • 登录 Sevalla 仪表板
  • 点击“应用程序”>“添加应用程序”
  • 选择“Git 存储库”并连接到您的存储库
  • 选择部署设置:存储库:your-repo-url 分支:main 构建环境:Python 区域:选择最靠近您的用户的区域
  • 3.环境变量

    我们现在将在“环境变量”中添加“OPENAI_API_KEY”,以在我们的应用程序中使用 AI 的强大功能来推荐 AI 生成的食谱。

    gif2

    在Sevalla中配置所需的环境变量:

  • 导航到“环境变量”
  • 使用您的 API 密钥添加 OPENAI_API_KEY
  • 选择“运行时可用”和“构建过程中可用”
  • 保存更改
  • 6.部署配置

  • 从构建部分启用 Dockerfile 以使用它来自动配置 Web 进程。
  • 示例日志
  • 🔨 Building Docker Image
    [#9] COPY . .
    [#9] DONE (0.7s)
    
    📦 Exporting to Image
    - Exporting layers (2.1s)
    - Writing image sha256:957405d9ec2ff6a5014705b07809593ed17ea8a6ec4c09433f262f51e42eec6b
    - Naming to europe-west1-docker.pkg.dev/kinsta-app-hosting/kc-apps/97ad2f04-172c-4a35-8dee-933c1134f27c/ai-food-assistant-z11yi:eb339d69-56d2-4a64-9a64-0809d752aeb4
    ✅ Docker image built successfully
    
    ⬆️ Pushing Docker Image
    Repository: europe-west1-docker.pkg.dev/kinsta-app-hosting/kc-apps/97ad2f04-172c-4a35-8dee-933c1134f27c/ai-food-assistant-z11yi
    
    Layer Status:
    - 32649fbbeda8: Pushed
    - a206824f0a6e: Pushed
    - 47e66bca131f: Pushed
    - 3a8ec2a73c4d: Pushed
    - aacba17e24d9: Layer already exists
    - f751ad7c65c4: Layer already exists
    - 7822e749b484: Layer already exists
    - c3548211b826: Layer already exists
    
    Digest: sha256:2cca92185beca97a2dda1507178c502f5fafefda7befd090109d9b2feb014100
    ✅ Docker image pushed successfully
    
    🚀 Deployment
    ⏩ Deploying Web process...
    
    Server Startup:
    - Uvicorn running on http://0.0.0.0:8080
    - Started reloader process [1] using StatReload
    - Started server process [26]
    - Application startup complete
    
    Warning:
    Valid config keys have changed in V2:
    'schema_extra' has been renamed to 'json_schema_extra'

    塞瓦拉自动:

  • 从 requirements.txt 中检测 Python 需求
  • 使用 Dockerfile 设置 Web 进程
  • 配置 PORT 环境变量
  • 启用 HTTPS 并提供域名
  • 最终输出

    Image description

    Sevalla 上的应用程序架构

    部署的应用程序架构包括(3):

  • Web 进程:运行 FastAPI 应用程序
  • 环境变量:安全存储配置
  • Cloudflare 集成:提供 CDN 和 DDoS 保护
  • 自动扩展:有效处理流量高峰
  • 监控和管理

    Sevalla 提供了几种用于应用程序管理的工具:

  • 日志:实时访问应用程序日志
  • 分析:监控应用程序性能
  • Web 终端:直接调试和运行命令
  • 流程管理:控制申请流程
  • 安全功能

    该部署包括多项安全措施:

  • SSL/TLS 加密
  • 通过 Cloudflare 进行 DDoS 保护
  • 安全环境变量存储
  • 隔离的应用程序环境
  • 性能优化

    Sevalla 自动实现了多项性能功能:

  • CDN 集成:全球内容交付
  • 边缘缓存:缩短响应时间
  • 自动扩展:动态资源分配
  • 负载平衡:分布式流量处理
  • 部署验证

    部署后,验证应用程序:

  • 访问提供的域名(例如,https://ai-food-assistant-ll3mo.kinsta.app/)
  • 测试菜谱生成端点
  • 监控应用程序日志是否存在任何问题
  • 验证环境变量是否正确设置
  • 故障排除提示

    常见问题及解决方案:

  • 端口配置:确保应用程序使用 PORT 环境变量
  • 构建失败:检查 requirements.txt 的兼容性
  • 运行时错误:监控日志中的应用程序错误
  • 环境变量:验证所有必需的变量是否已设置
  • 为什么选择 Sevalla 来部署 AI 应用程序?

    构建和部署 AI 应用程序可能具有挑战性。无论您是从事业余项目的开发人员,还是开发下一个大型 AI 产品的团队的一员,您都需要一种可靠且简单的方法来将您的应用投入生产。这就是 Sevalla 的作用所在 - 让我向您展示为什么它是部署 AI 应用程序的完美选择:

    成本优化

  • 按增长付费模式:仅需为实际使用的资源付费,无需预付基础设施成本
  • 减少 DevOps 开销:无需专门的基础设施团队
  • 自动资源扩展:在低流量时段优化成本
  • 资源优化:自动扩展可防止过度配置
  • 不受供应商锁定:标准容器架构确保可移植性
  • 企业级基础设施

  • 25+ 个全球数据中心:靠近用户部署以获得最佳性能
  • Google Cloud Platform 主干:企业级基础架构和可靠性
  • Cloudflare Enterprise:包含高级 DDoS 保护和 WAF
  • 合规基础设施:符合行业安全标准
  • 私有网络:应用程序和数据库之间的安全内部连接
  • 开发人员体验

  • 5 分钟部署:几分钟内即可从代码到生产
  • 多框架支持:部署任何框架或语言
  • 内置 CI/CD:通过 Git 自动部署
  • 开发工具:Web 终端、实时日志和指标
  • 数据库集成:具有自动备份的管理数据库
  • 卓越运营

  • 99.9% SLA 支持的正常运行时间:企业级可靠性
  • 零停机部署:更新期间持续可用
  • 自动扩展:自动处理流量高峰
  • 全球 CDN:跨区域优化内容交付
  • 全天候专家支持:在您需要时提供技术援助
  • AI优化功能

  • 容器原生平台:AI/ML 工作负载的理想选择
  • 边缘计算能力:减少人工智能操作的延迟
  • 高性能计算:CPU 和内存优化实例
  • 自动故障转移:内置高可用性
  • 水平扩展:无缝处理病毒式增长
  • 业务加速

  • 更快的上市时间:推出产品时不会出现基础设施延迟
  • 资源效率:专注于产品开发,而不是 DevOps
  • 企业安全:内置合规性和保护
  • 全球覆盖:几分钟内即可实现全球部署
  • 按需扩展:不受基础设施限制地进行扩展
  • 结论

    Sevalla 提供了一个经济实惠的托管平台,用于以最低配置部署 AI 应用程序。该平台负责基础设施管理,使开发人员能够专注于应用程序开发,轻松部署和进行必要的集成。**AI 食品食谱助手** 演示了您可以多快部署现代 AI 驱动的应用程序,其功能如下:

  • 从 Git 自动部署
  • 容器编排
  • 环境变量管理
  • SSL/TLS 安全
  • CDN 集成
  • 性能优化
  • 有关在 Sevalla 上托管应用程序的更多信息,请参阅其官方文档。