OpenAI 秘钥注册与国内代替品

月之暗面的注册与使用

  1. 在国内使用 OpenAI 的接口,必须有境外的服务器或者通过中转服务器进行中转,而且响应的速度较慢,如果没法通过特殊手段实时访问 OpenAI 接口,可以考虑其代替品 —— MoonShot (月之暗面),也是目前国内唯一一个可以不修改代码,只修改 秘钥 + API 接口,就可以直接使用 OpenAI SDK 的大语言模型;
  2. MoonShot 大语言模型的参数和 OpenAI 几乎保持一致,可以完美适配课程;

OpenAI 请求参数详解

  1. 请求参数:
    参数名 类型 必填 默认值 详细说明
    model string 模型名称,如 gpt-3.5-turbo / gpt-4o / gpt-4o-mini
    messages array 对话消息数组,包含 rolecontent
    temperature number 1 随机性,0~2;值越低越精准,越高越创意
    max_tokens integer 生成回复的最大 Token 数量
    top_p number 1 核采样,0~1;控制词汇多样性,与温度二选一
    n integer 1 返回多少条独立回复
    stream boolean false 是否流式输出(打字机效果)
    stop string/array 停止符,遇到指定内容自动停止生成
    frequency_penalty number 0 -2~2,降低重复内容概率
    presence_penalty number 0 -2~2,鼓励生成新主题/新概念
    response_format object 指定返回格式,如 {"type":"json_object"}
    seed integer 随机种子,固定后可实现输出结果可复现
    tools array 函数调用 (Function Calling) 配置
    tool_choice string/object 控制函数调用策略
    user string 用户ID,用于OpenAI审计与安全监控
  2. 请求参数示例:
    const res = await fetch("https://api.openai.com/v1/chat/completions", {
      method: "POST",
      headers: {
        "Authorization": "Bearer YOUR_KEY",
        "Content-Type": "application/json"
      },
      body: JSON.stringify({
        model: "gpt-4o",
        messages: [
          { role: "system", content: "专业前端工程师,TS代码" },
          { role: "user", content: "手写Promise.all" }
        ],
        temperature: 0.2,
        max_tokens: 1024,
        top_p: 1,
        frequency_penalty: 0.3,
        presence_penalty: 0.1,
        stream: false,
        n: 1,
        stop: null,
        seed: 42,
        response_format: { type: "text" }
      })
    });
    

OpenAI 响应参数详解

  1. 核心字段详解:
    字段路径 类型 说明 示例/取值
    id string 请求唯一标识,用于排查问题 chatcmpl-8xYzABC123xyz
    object string 响应类型,固定值 chat.completion
    created integer 响应创建时间戳 (秒) 1704096000
    model string 本次调用的模型名称 gpt-4o-minigpt-3.5-turbo
    choices array 回复选项列表,长度由 n 参数控制 数组,通常 1 个元素
    choices[].index integer 选项在数组中的索引 0 (默认)
    choices[].message object 回复消息主体 -
    choices[].message.role string 角色,固定值 assistant
    choices[].message.content string 回复内容 (核心文本) 你好!我是AI助手...
    choices[].message.function_call object 函数调用 (需开启工具调用) 非工具调用时为 null
    choices[].finish_reason string 生成结束原因 见下方说明
    choices[].logprobs object Token 概率 (需开启 logprobs) 未开启时为 null
    usage object Token 统计 (计费依据) -
    usage.prompt_tokens integer 输入 (Prompt) Token 数 12
    usage.completion_tokens integer 输出 (Completion) Token 数 18
    usage.total_tokens integer 总 Token 数 (prompt+completion) 30
  2. finish_reason 取值说明:
    取值 含义 处理建议
    stop 正常结束 (触发停止序列或自然完成) ✅ 正常使用,解析内容
    length 达到 max_tokens 限制,内容可能不完整 ⚠️ 增大 max_tokens 或缩短提示
    content_filter 内容违反安全策略被过滤 ❌ 调整输入,规避敏感内容
    function_call 触发工具调用,返回函数参数 🔄 执行函数后回传结果
    null 流式响应中表示生成未结束 🔄 流式场景下持续接收直到 stop
  3. 流式响应差异 (stream: true)
    • 流式返回 Server-Sent Events (SSE) 格式,每个事件为 JSON 片段,仅含 choices[].delta 而非 message
    • 前端解析:拼接 choices[].delta.content,直到 finish_reason: “stop”[DONE]
    data: {"id":"...","object":"chat.completion.chunk","created":...,"choices":[{"index":0,"delta":{"content":"你好"},"finish_reason":null}]}
    
    data: {"id":"...","object":"chat.completion.chunk","created":...,"choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
    
    data: [DONE]
    
  4. 标准响应示例 (非流式)
    {
      "id": "chatcmpl-8xYzABC123xyz",
      "object": "chat.completion",
      "created": 1704096000,
      "model": "gpt-4o-mini",
      "choices": [
        {
          "index": 0,
          "message": {
            "role": "assistant",
            "content": "你好!我是AI助手,有什么可以帮你的?"
          },
          "finish_reason": "stop",
          "logprobs": null
        }
      ],
      "usage": {
        "prompt_tokens": 12,
        "completion_tokens": 18,
        "total_tokens": 30
      }
    }
    

Playground 介绍与最大化利用

打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

你好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. OpenAI 秘钥注册与国内代替品
    1. 1.1. 月之暗面的注册与使用
    2. 1.2. OpenAI 请求参数详解
    3. 1.3. OpenAI 响应参数详解
  2. 2. Playground 介绍与最大化利用