邀请好友,获取免费 Tokens!了解更多

创建聊天识图 (流式) best64

接口描述: 给定一个提示,该模型将返回一个或多个预测的完成,并且还可以返回每个位置的替代标记的概率。此接口主要用于创建包含图像识别(基于Base64)和文本提示的对话完成。

官方参考OpenAI API 文档


接口详情

  • 请求方式POST
  • 请求地址https://api.codingplanx.ai/v1/chat/completions
  • 数据格式application/json

请求头 (Request Headers)

参数名称必填类型示例值描述
Content-Typestringapplication/json数据格式
Acceptstringapplication/json接收格式
AuthorizationstringBearer {{YOUR_API_KEY}}身份验证令牌

请求参数 (Request Body)

字段名称类型必填描述
modelstring要使用的模型的 ID(如:gpt-4o-mini)。
messagesarray至今为止对话所包含的消息列表。包含 rolecontent。对于识图,content 可以是包含文本和 image_url (Base64) 的数组。
toolsarray模型可以调用的一组工具列表。目前只支持作为工具的函数。用于提供模型可为其生成 JSON 输入的函数列表。
tool_choiceobject控制模型调用哪个函数。none 表示不调用;auto 表示自动选择;也可强制调用特定函数。
temperatureinteger采样温度,介于 0 和 2 之间。较高的值(如 0.8)使输出更随机,较低的值(如 0.2)使输出更确定。建议不要与 top_p 同时修改。
top_pinteger核采样参数。0.1 意味着只考虑构成前 10% 概率质量的标记。建议不要与 temperature 同时修改。
ninteger为每个输入消息生成多少个聊天补全选择。默认为 1。
streamboolean流式输出开关。默认为 false。如果设置为 true,将以服务器发送事件 (SSE) 的形式发送部分消息增量,并在 data: [DONE] 时终止。
stopstringAPI 将停止进一步生成标记的序列(最多 4 个)。默认为 null。
max_tokensinteger在聊天补全中生成的最大标记数。默认为 inf(无限)。
presence_penaltynumber存在惩罚(-2.0 到 2.0)。正值会根据文本中是否已出现新标记来对其进行惩罚,增加模型谈论新主题的可能性。
frequency_penaltynumber频率惩罚(-2.0 到 2.0)。正值会根据标记在文本中目前的出现频率对其进行惩罚,降低模型重复相同内容的可能性。默认为 0。
logit_biasobject修改指定标记出现在补全中的可能性。接受一个将标记 ID 映射到偏差值(-100 到 100)的 JSON 对象。
userstring代表您的最终用户的唯一标识符,帮助监控和检测滥用行为。
response_formatobject指定模型必须输出的格式。将 { "type": "json_object" } 传递可启用 JSON 模式。使用时需在提示词中要求模型输出 JSON。
seenintegerBeta 功能。确定性采样种子,使用相同的种子和参数重复请求应返回相同的结果(不保证绝对确定性)。

请求示例

{
  "model": "gpt-4o-mini",
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful assistant."
    },
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "这张图片里有什么?请详细描述。"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAiEAAAIhCAYAAACYF2qHAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4nOy9ebxtWVXf+x1zrrX2Pud2VRQUjUVf0glIYvOJLdJ8iCagIor... (此处省略过长的base64字符串)"
          }
        }
      ]
    }
  ]
}

响应参数 (Response Body)

字段名称类型描述
idstring聊天完成的唯一标识符。
objectstring对象类型,通常为 chat.completion(或流式情况下的 chat.completion.chunk)。
createdinteger创建时间的 Unix 时间戳。
choicesarray补全选择列表。
└─ indexinteger选项在列表中的索引。
└─ messageobject模型生成的消息对象,包含 rolecontent
└─ finish_reasonstring模型停止生成的原因(例如:stop 代表正常结束,length 代表达到 max_tokens 限制)。
usageobject此次请求的令牌 (Token) 消耗统计。
└─ prompt_tokensinteger提示词消耗的 Token 数量(包含图片计算出的 Token)。
└─ completion_tokensinteger生成的内容消耗的 Token 数量。
└─ total_tokensinteger此次请求消耗的总 Token 数量。

响应示例 (成功 200 OK)

{
    "id": "chatcmpl-123",
    "object": "chat.completion",
    "created": 1677652288,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "\r
\r
Hello there, how may I assist you today?"
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 12,
        "total_tokens": 21
    }
}

常见问题解答 (FAQs)

Q1: 如何开启流式输出(Streaming)? A: 在请求体中将 stream 参数设置为 true。开启后,接口将不再等待整个回答生成完毕再返回,而是通过服务器发送事件(Server-Sent Events, SSE)逐字/逐句返回 data: {...} 格式的数据块,直到收到 data: [DONE] 标志生成结束。

Q2: 对于识图的 Base64 编码有什么要求? A: 图像的 Base64 字符串必须包含正确的 MIME 类型前缀,例如 data:image/png;base64,data:image/jpeg;base64,。建议在将图片转换为 Base64 前适当压缩图片尺寸,以减少网络传输延迟并降低 prompt_tokens 的消耗(过大的图片会消耗大量 Token 甚至超出上下文限制)。

Q3: 为什么模型的回答被截断了? A: 请检查响应体中 choices[0].finish_reason 的值。如果是 length,说明生成的文本达到了您设置的 max_tokens 上限,或者整个对话超过了该模型的最大上下文窗口限制。您可以通过调大 max_tokens 来解决此问题。

Q4: 如何强制模型输出 JSON 格式的数据? A: 首先,需要在请求体中设置 "response_format": { "type": "json_object" }重要提示:除了设置该参数,您还必须在 messages 的系统提示 (system prompt) 或用户提示中,明确使用自然语言要求模型输出 JSON(例如:"请以JSON格式输出结果")。如果不这样做,模型可能会陷入无限的空白生成直到耗尽 Token。

Q5: 如果遇到 401 Unauthorized 错误怎么办? A: 请检查请求头中的 Authorization 参数是否正确携带了 API Key,格式必须严格为 Bearer 你的API_KEY(注意 Bearer 和 Key 之间有一个空格)。