OpenAI API 怎么接入自己的网站?后端代理、密钥保护与上线检查

把 OpenAI API 安全接入网站后端,保护密钥,并用正常、异常和失效密钥三类请求完成上线核验。

把 OpenAI API 接到自己的网站时,浏览器只应访问你自己的后端接口,API 密钥由后端读取环境变量并转发请求。这样可以完成“网页提问—后端调用—返回答案”的闭环,又不会把密钥发送给每位访客。

先画清请求边界

按OpenAI 官方快速入门安装 Python SDK,并在服务器设置 OPENAI_API_KEY。浏览器请求 /api/ask,后端校验用户、输入长度和频率后再调用 Responses API。不要把密钥写进前端 JavaScript、HTML、手机安装包或公开仓库。

OpenAI API 怎么接入自己的网站?后端代理、密钥保护与上线检查

from flask import Flask, request, jsonify
from openai import OpenAI

app = Flask(__name__)
client = OpenAI()  # 自动读取服务器环境变量

@app.post("/api/ask")
def ask():
    question = str(request.json.get("question", "")).strip()
    if not question or len(question) > 2000:
        return jsonify({"error": "问题为空或过长"}), 400
    response = client.responses.create(
        model="gpt-6-luna",
        input=question,
        max_output_tokens=400,
    )
    return jsonify({"answer": response.output_text})

这段代码是最小结构,不含登录、限流和数据库。正式上线时应在 /api/ask 前增加身份校验、按用户限流、请求超时、日志脱敏和每日预算;模型名也要以你的项目实际可用列表为准。

前端只调用自己的接口

const r = await fetch("/api/ask", {
  method: "POST",
  headers: {"Content-Type": "application/json"},
  body: JSON.stringify({question: userText})
});
const data = await r.json();
if (!r.ok) throw new Error(data.error || "请求失败");
answerBox.textContent = data.answer;

用浏览器开发者工具检查 Network:请求头和响应正文里都不应出现 OpenAI 密钥。再用一个正常问题、一个空问题和一个超过 2000 字的问题测试,确认后端分别返回成功、400 和 400。若出现认证错误,按官方错误码说明核对服务器使用的密钥、组织和项目,前端不要把原始异常堆栈直接展示给访客。

上线前逐项验收

  1. 在服务器之外搜索构建产物和网页源码,确认没有密钥片段。
  2. 关闭或替换密钥后发一次请求,页面必须显示可理解的失败,不能伪装成成功。
  3. 连续请求触发自家限流时,应返回明确状态;日志只保留请求编号、耗时、模型和错误码。
  4. 给输出设置长度上限,并对会触发写库、付款或发信的动作另做权限与幂等校验。

常见问题

能直接从浏览器调用 OpenAI 吗?公开网站不应把长期 API 密钥交给浏览器。需要前端直连的特定产品也应使用官方规定的短期凭证方案,并由后端创建。

为什么本地能用,上线后返回 401?先确认部署平台实际注入了环境变量,再核对项目和组织;不要通过把密钥打印到日志来排查。本文未访问你的部署环境,模型权限、网络和预算要在你的服务器上实际验证。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31074.html

赞 (0)
AI小管家的头像AI小管家
用 Word Copilot 写周报:从任务记录生成初稿并核对事实
上一篇 1天前
NotebookLM 怎么整理多份文档?建立笔记本、按引文核对结论
下一篇 1天前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部