跳到主要内容

聊天补全

本文档提供了聊天补全 API 端点的详细规范。通过本指南,您将学会如何生成对话式 AI 响应、管理流式传输以及利用特定于模型的参数来构建稳健的应用程序。该端点是创建交互式、基于文本的体验的核心。

聊天补全 API 使您能够构建利用大型语言模型来完成各种对话任务的应用程序。您提供一系列消息作为输入,模型将返回一个基于文本的响应。

下图说明了标准和流式 API 调用的请求和响应流程:

Chat Completions

有关相关功能,请参阅图像生成嵌入 API 文档。

创建聊天补全

为给定的聊天对话创建模型响应。

POST /api/chat/completions

请求体

  • model string (required) (default: gpt-3.5-turbo) — 要使用的模型 ID。有关哪些模型适用于聊天 API 的详细信息,请参阅模型端点兼容性表。
  • messages array (required) — 构成迄今为止对话的消息列表。有关消息对象的结构,请参见下文。
    • message object — 每个消息对象必须包含 role 和 content。
      • role string (required) — 消息作者的角色。可以是 system、user、assistant 或 tool。
      • content string or array (required) — 消息的内容。对于多模态模型,这可以是一个字符串或一个内容部分数组(例如,文本和图片 URL)。
      • name string — 参与者的可选名称。为模型提供有关消息作者的上下文信息。
      • tool_calls array — 由模型生成的工具调用,例如函数调用。
      • tool_call_id string — 如果角色是 tool 则为必需项。此消息所响应的工具调用的 ID。
  • temperature number (default: 1) — 控制随机性。降低该值会导致补全结果的随机性降低。当温度接近零时,模型将变得确定性和重复性。范围:0 到 2。
  • top_p number (default: 1) — 通过核心采样控制多样性。0.5 表示只考虑所有按可能性加权的选项的一半。范围:0.1 到 1。
  • stream boolean (default: false) — 如果设置为 true,部分消息增量将作为服务器发送事件发送。流以 data: [DONE] 消息终止。
  • max_tokens integer — 要生成的最大令牌数。输入令牌和生成令牌的总长度受模型上下文长度的限制。
  • presence_penalty number (default: 0) — 介于 -2.0 和 2.0 之间的数字。正值会根据新令牌是否已在文本中出现来对其进行惩罚,从而增加模型谈论新主题的可能性。
  • frequency_penalty number (default: 0) — 介于 -2.0 和 2.0 之间的数字。正值会根据新令牌在文本中已有的频率来对其进行惩罚,从而降低模型逐字重复同一行的可能性。
  • tools array — 模型可能调用的工具列表。目前,仅支持函数作为工具。
  • tool_choice string or object — 控制模型调用哪个工具(如果有)。可以是 'none'、'auto'、'required' 或指定要调用的函数的对象。
  • response_format object — 一个指定模型必须输出格式的对象。设置为 { "type": "json_object" } 可启用 JSON 模式。

示例

基本请求

此示例演示了与模型的简单对话。

cURL 请求

bash
curl --location 'https://your-aigne-hub-instance.com/api/chat/completions' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
    "model": "gpt-3.5-turbo",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "Hello! Can you explain what AIGNE Hub is in simple terms?"
        }
    ]
}'

流式请求

要以事件流的形式接收响应,请将 stream 参数设置为 true

cURL 流式请求

bash
curl --location 'https://your-aigne-hub-instance.com/api/chat/completions' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--header 'Accept: text/event-stream' \
--data '{
    "model": "gpt-3.5-turbo",
    "messages": [
        {
            "role": "user",
            "content": "Write a short story about a robot who discovers music."
        }
    ],
    "stream": true
}'

响应体

标准响应

streamfalse 或未设置时,将返回一个标准的 JSON 对象。

  • role string — 此消息作者的角色,始终为 'assistant'。
  • content string — 由模型生成的消息内容。
  • tool_calls array — 由模型生成的工具调用(如果有)。

标准响应示例

响应体

json
{
  "role": "assistant",
  "content": "AIGNE Hub 是一个集中式网关,用于管理与来自不同提供商的各种 AI 模型的交互。它简化了 API 访问,处理计费和信用点数,并提供有关使用情况和成本的分析,充当组织 AI 服务的单一控制点。"
}

流式响应

streamtrue 时,API 返回一个 text/event-stream 数据块流。每个数据块都是一个 JSON 对象。

  • delta object — 消息增量的一个数据块。
    • role string — 作者的角色,通常是 'assistant'。
    • content string — 消息的部分内容。
    • tool_calls array — 部分工具调用信息。
  • usage object — 出现在最终数据块中,包含令牌使用情况统计。
    • prompt_tokens integer — 提示中的令牌数。
    • completion_tokens integer — 生成的补全中的令牌数。
    • total_tokens integer — 请求中使用的总令牌数。

流式数据块示例

事件流

text
data: {"delta":{"role":"assistant","content":"Unit "}}

data: {"delta":{"content":"734,"}}

data: {"delta":{"content":" a sanitation "}}

data: {"delta":{"content":"and maintenance "}}

data: {"delta":{"content":"robot, hummed..."}}

data: {"usage":{"promptTokens":15,"completionTokens":100,"totalTokens":115}}

data: [DONE]

总结

聊天补全端点是将对话式 AI 集成到您应用程序中的强大工具。它通过各种参数(包括流式传输和工具使用)提供了灵活性,以支持广泛的用例。

有关其他可用 API 端点的更多信息,请参阅以下文档: