指南

如何将 OpenAI API 集成到你的应用中

要集成 OpenAI API,请在 OpenAI 项目中创建一个 API 密钥,把它保存为名为 OPENAI_API_KEY 的服务端机密,然后使用 OpenAI 官方 SDK,在你自己服务器上的路由中调用 API,切勿在浏览器代码中调用。截至2026年9月,OpenAI 的快速入门将 Responses API 作为新项目的起点。上线前请设置消费上限,限制回复长度,限制每位用户调用该功能的频率,并通过重试来处理速率限制错误。

本指南涵盖设置步骤、请求流程、给 AI 构建器的提示词,以及导致密钥泄露或金钱浪费的常见错误。OpenAI 的相关细节取自其截至2026年9月的官方文档。关于一般概念(Token、上下文窗口、定价),请先阅读如何使用 LLM API。

你能用它构建什么

  • 应用内的聊天助手(如何构建 AI 聊天机器人应用)
  • “总结这个”“改写这个”或“起草一条回复”按钮
  • 从自由文本中提取结构化数据:把一封邮件转换为订单,为客服工单打标签
  • 基于你自己内容的搜索和问答
  • 图像生成、语音及其他媒体功能,具体取决于可用的模型

更多想法请参阅如何为你的应用添加 AI 功能。

设置你的 OpenAI 账户

  1. 在 OpenAI 平台创建账户和项目。 OpenAI 的生产环境最佳实践建议为测试环境和生产环境分别使用独立的项目,这样各自可以拥有自己的密钥和限额。
  2. 创建项目 API 密钥。 OpenAI 建议为密钥设置过期日期,并定期轮换。
  3. 在限额页面设置用量提醒和硬性消费上限。 OpenAI 的指南说明,提醒会在用量超过某个金额时通知你,而硬性上限会强制执行每月的最高限额。
  4. 添加计费信息。 OpenAI 的速率限制文档描述了用量等级:随着你的消费随时间增加,你的限额也会自动提高。

请求流程

浏览器  ->  你的服务端路由  ->  OpenAI API
        <-  (流式)回复    <-
  1. 用户点击按钮或发送消息。
  2. 浏览器调用的是你自己的路由,例如 POST /api/summarise。
  3. 你的服务器检查用户是否已登录,并且有权使用该功能。
  4. 服务器构建请求:指令、用户的输入,以及任务所需的任何数据库数据。
  5. 服务器使用环境变量中的密钥调用 OpenAI。OpenAI 的 SDK 会自动读取 OPENAI_API_KEY。
  6. 服务器以流式或一次性方式返回回复,并记录 Token 用量。

OpenAI 的官方 SDK 包名为 openai,JavaScript/TypeScript 版本通过 npm 安装,Python 版本通过 pip 安装。

选择模型

OpenAI 提供多款价格和速度各不相同的模型,而且产品线变化频繁。请从较小、较便宜的模型开始,用真实示例评估质量,只有在确实需要时才升级。将模型名称保存在配置值或机密中,这样无需重写代码即可更换。当前费率请查看 OpenAI 的定价页面。

选项与取舍

决策简单的选择何时需要进一步考虑
流式输出返回完整答案聊天和较长回复适合流式输出;用户能立即看到文字
对话记忆每次发送最近的消息对话变长时,总结较早的消息
输出格式纯文本当你的代码需要读取字段时,请求结构化的 JSON
你自己的数据在请求中包含相关记录当内容太多、无法全部包含时,对你的内容进行搜索(参见什么是 RAG)
非紧急的批量工作循环处理每一项当结果可以稍后获得时,使用 OpenAI 的批处理选项以降低成本

给 AI 构建器的提示词

第一个功能:

在工单页面添加一个“总结”按钮。它调用服务端路由 POST /api/summarise,该路由检查用户已登录、加载工单,然后使用官方 openai SDK 和机密 OPENAI_API_KEY 调用 OpenAI Responses API。从机密 OPENAI_MODEL 读取模型名称。指令:“用 3 个要点总结,然后建议一条简短的回复。不要编造订单号。”限制输出长度,把回复流式输出到页面,并且绝不向浏览器发送密钥。

防护措施:

限制每位用户每小时最多 30 次 AI 请求,记录在数据库中。记录每次请求的输入和输出 Token,并附上用户 ID 和功能名称。如果 OpenAI 返回 429,请遵守 Retry-After 请求头,使用带抖动的指数退避最多重试 3 次;之后显示“AI 正忙,请一分钟后再试”。对于其他任何失败,显示友好的错误提示,并保持页面其余部分正常工作。

处理错误与限制

OpenAI 从多个维度衡量速率限制,包括每分钟请求数和每分钟 Token 数,你会先触及其中耗尽的那一项。一旦超出,API 会返回 429 以及 Retry-After 请求头。OpenAI 的文档建议将该值视为最小等待时间,并加上一个小的随机延迟,以免所有客户端同时重试。

还需要预先考虑:

  • 超时:长时间生成时可能超时。流式输出有帮助,设置合理的输出上限也有帮助。
  • 服务商故障:AI 功能应优雅地失败,而不应破坏页面。
  • 不良输出:在保存结构化输出之前进行验证,并且不要让模型输出在没有代码检查的情况下触发敏感操作。

常见错误

  • 密钥出现在前端或代码仓库中。 浏览器代码是公开的,泄露的密钥可能在几分钟内被滥用。参见如何安全保管 API 密钥。
  • 没有消费上限。 一个循环或一个滥用的用户就可能迅速产生巨额账单。
  • 没有针对每位用户的限制。 服务商的限额保护的是你的钱包,而不是你的其他用户。
  • 依赖提示词来保障安全。 用户可以输入“忽略之前的指令”。权限控制应放在服务端代码中。
  • 发送超出需要的内容。 整个文档和很长的历史记录会成倍增加成本。只发送任务所需的内容。
  • 硬编码模型名称。 模型会更新和退役;请将其设为可配置的设置。
  • 不假思索地发送个人数据。 请阅读 OpenAI 的数据使用条款,只发送功能所需的数据。

检查清单

  • 测试和生产环境使用独立的 OpenAI 项目(或密钥)
  • 密钥保存为服务端机密,绝不出现在浏览器代码或代码仓库中
  • 已设置用量提醒和硬性消费上限
  • 所有调用都经过你的服务器,并检查用户权限
  • 输出长度有上限;模型名称可配置
  • 应用内有针对每位用户的速率限制
  • 已按照 Retry-After、退避和抖动处理 429
  • 有友好的错误状态;没有 AI 时页面仍可正常工作
  • 按功能记录 Token 用量
  • 已用超长、空白和恶意的输入进行测试

在 Mythex 中使用 OpenAI API

你在 Mythex 上构建的应用中的 AI 功能,使用的是你自己的 OpenAI 密钥,费用计入你的 OpenAI 账户,而不是 Mythex 的构建积分。请通过 /secrets、项目设置,或智能体需要密钥时显示的机密卡片,将 OPENAI_API_KEY 添加为项目机密,然后用类似上述的提示词描述该功能。在已发布的应用中更改机密后,请重新发布,以便应用获取新值。文档中的使用你自己的 API 密钥添加 AI 功能配方提供了入门提示词,聊天中的机密则说明了机密卡片的用法。如果你在比较服务商,请参阅如何集成 Claude API。

常见问题

新应用应该使用哪个 OpenAI API?

截至2026年9月,OpenAI 的快速入门将 Responses API 作为新项目的起点,其官方 SDK 中的示例使用 client.responses.create()。开始之前,请查阅 OpenAI 文档以了解当前的推荐做法。

我可以从浏览器调用 OpenAI API 吗?

不能使用你的密钥。任何人都可以读取浏览器代码,并盗用密钥来让你的账单飙升。浏览器应该调用你自己的服务端路由,由你的服务器使用保存为环境变量的密钥调用 OpenAI。

如何避免 OpenAI API 花费过高?

OpenAI 的生产环境指南建议设置用量提醒,并在限额页面设置每月的硬性消费上限。在你的应用中,限制回复长度,限制每位用户的请求次数,并记录 Token 用量,以便了解哪些功能成本最高。

OpenAI 返回的 429 错误是什么意思?

这表示你触发了速率限制。OpenAI 的速率限制文档说明,响应中会包含 Retry-After 请求头;请至少等待该时长,再加上一个小的随机延迟,然后使用指数退避进行重试。

Mythex · Pricing · 用 AI 构建任何东西 · 网站和应用模板 · Mythex 对比 · AI 应用构建术语表 · 免费的 AI 应用构建工具 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 繁體中文(香港) 繁體中文(台灣)