Skip to content

Чат

При наличии списка сообщений, составляющих диалог, модель вернет ответ. Связанные темы: Завершение работы с чатом

Создание завершения чата

POST

https://api.openai.com/v1/audio/speech

POST запрос https://api.openai.com/v1/chat/completions создаёт ответ модели для данного чата.

Тело запроса

ПараметрТипОписание
messagesarrayТребуется. Список сообщений, составляющих беседу до этого момента.
modelstringОбязательный. ID используемой модели. См. таблицу совместимости модели с эндпоинтом, чтобы узнать, какие модели совместимы с Chat API.
frequency_penaltynumber or nullНеобязательный. По умолчанию 0. Значение от -2.0 до 2.0. Положительные значения штрафуют появление новых токенов в зависимости от их текущей частоты в тексте, снижая вероятность того, что модель дословно повторит одни и те же строки.
logit_biasmapНеобязательный. По умолчанию null. Меняет вероятность появления конкретных токенов в завершении. Принимает JSON, отображая токены (по их ID) на связанное значение смещения от -100 до 100. Смещение добавляется к логитам, существующим в модели перед выборкой. Эффект будет варьироваться в зависимости от модели, но значения между -1 и 1 должны уменьшать или увеличивать вероятность выбора; значения -100 или 100 запрещают или делают исключительным выбор соответствующего токена.
logprobsboolean or nullНеобязательный. По умолчанию false. Возвращает ли логарифмические вероятности токенов контента каждого выходящего сообщения. Параметр недоступен для модели gpt-4-vision-preview.
top_logprobsinteger or nullНеобязательный. Целое от 0 до 5, обозначает количество наиболее вероятных токенов для возврата на каждой позиции токена, каждый с лог. вероятностями. logprobs должен быть true для этого параметра.
max_tokensinteger or nullНеобязательный. Максимальное колич. токенов, которое может быть сгенерировано в завершении чата.
ninteger or nullНеобязательный. По умолчанию 1. Сколько вариантов завершения генерировать для каждого сообщения. Вы будете оплачивать все сгенерированные токены всех вариантов. Оставьте n=1 для минимизации затрат.
presence_penaltynumber или nullНеобязательный. По умолчанию 0. Число от -2.0 до 2.0. Положительные значения штрафуют новые токены, если они уже были сказаны до этого, увеличивая вероятность того, что модель перейдет на новую тему.
response_formatobjectНеобязательный. Объект, указывающий формат, который должна выводить модель. Совместим с gpt-4-1106-preview и gpt-3.5-turbo-1106. Установка {"type": "json_object"} включает режим JSON, что гарантирует допустимый формат JSON.
seedinteger или nullНеобязательный. (Бета) Если указан, система пытается обеспечить детерминированность, чтобы повторные запросы с теми же параметрами давали аналогичный результат.
stopstring/array/nullНеобязательный. До 4 последовательностей, после которых API перестанет генерировать новые токены.
streamboolean или nullНеобязательный. По умолчанию false. Если установлено true, возможна отправка частичных изменений как в ChatGPT. Токены отправляются как данные через server-sent events по мере появления, последний из которых отмечен завершением data: [DONE].
temperaturenumber или nullНеобязательный. По умолчанию 1. Указывает выбор температуры, между 0 и 2. Более высокие значения, такие как 0.8, делают вывод более случайным, а низкие, такие как 0.2, более сфокусированным и детерминированным. Советуем изменить этот параметр или top_p, но не оба.
top_pnumber или nullНеобязательный. По умолчанию 1. Альтернатива температуре выборка - семплирование ядра, где учитываются токены в пределах вероятностной массы top_p. Например, 0.1 означает, что только токены с верхними 10% вероятностями включаются. Также, рекомендуем изменять или этот параметр, или temperature.
toolsarrayНеобязательный. Список инструментов для вызова моделью. Поддерживаются только функции. Используйте, чтобы дать список функций для генерации моделью JSON ввода.
tool_choicestring или objectНеобязательный. Контролирует, какую функцию вызывает модель. none - не вызывает функцию, auto - может выбирать между вызовом или продолжением. Указание конкретной функции заставляет модель вызвать её. none по умолчанию в отсутствии функций, auto по умолчанию, если функции присутствуют.
userstringНеобязательный. Уникальный идентификатор, представляющий конечного пользователя, который поможет OpenAI отслеживать и предотвращать злоупотребления.
function_callDeprecatedУстарело в пользу tool_choice. Контролирует использование функции. none - не вызывает функцию, auto - выбор между вызовом функции и генерацией сообщения. Указание конкретной функции приводит к её вызову.
functionsУстаревшееУстаревшее в пользу tools. Список функций, для которых модель может генерировать JSON.

Возвращаемое значение может быть объектом chat completion или потоком объектов chat completion chunk, если запрос потоковый.

Примеры запросов и ответов

Обычный запрос (Default)

bash
curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4o",
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "Hello!"
      }
    ]
  }'
python
from openai import OpenAI
client = OpenAI()

completion = client.chat.completions.create(
  model="gpt-4o",
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hello!"}
  ]
)

print(completion.choices[0].message)
javascript
import OpenAI from "openai";

const openai = new OpenAI();

async function main() {
  const completion = await openai.chat.completions.create({
    messages: [{ role: "system", content: "You are a helpful assistant." }],
    model: "gpt-4o",
  });

  console.log(completion.choices[0]);
}

main();

Пример ответа:

json
{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "gpt-4o-mini",
  "system_fingerprint": "fp_44709d6fcb",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "\n\nHello there, how may I assist you today?",
    },
    "logprobs": null,
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 12,
    "total_tokens": 21,
    "completion_tokens_details": {
      "reasoning_tokens": 0,
      "accepted_prediction_tokens": 0,
      "rejected_prediction_tokens": 0
    }
  }
}

Примеры использования в случаях с изображениями (Image Input)

Bash
curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4o",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "What'\''s in this image?"
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
            }
          }
        ]
      }
    ],
    "max_tokens": 300
  }'
javascript
import OpenAI from "openai";

const openai = new OpenAI();

async function main() {
  const response = await openai.chat.completions.create({
    model: "gpt-4o",
    messages: [
      {
        role: "user",
        content: [
          { type: "text", text: "What's in this image?" },
          {
            type: "image_url",
            image_url: {
              "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
            },
          }
        ],
      },
    ],
  });
  console.log(response.choices[0]);
}
main();
Python
from openai import OpenAI

client = OpenAI()

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "What's in this image?"},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
                    }
                },
            ],
        }
    ],
    max_tokens=300,
)

print(response.choices[0])

Потоковые операции (Streaming)

shell
curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4o",
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "Hello!"
      }
    ],
    "stream": true
  }'
Python
from openai import OpenAI
client = OpenAI()

completion = client.chat.completions.create(
  model="gpt-4o",
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hello!"}
  ],
  stream=True
)

for chunk in completion:
  print(chunk.choices[0].delta)
JS
import OpenAI from "openai";

const openai = new OpenAI();

async function main() {
  const completion = await openai.chat.completions.create({
    model: "gpt-4o",
    messages: [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "Hello!"}
    ],
    stream: true,
  });

  for await (const chunk of completion) {
    console.log(chunk.choices[0].delta.content);
  }
}

main();

Пример ответа:

json
{
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{"role":"assistant","content":""},"logprobs":null,"finish_reason":null}]}

{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{"content":"Hello"},"logprobs":null,"finish_reason":null}]}

....

{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}]}

Functions в использовании

bash
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
  "model": "gpt-4o",
  "messages": [
    {
      "role": "user",
      "content": "What'\''s the weather like in Boston today?"
    }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_current_weather",
        "description": "Get the current weather in a given location",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {
              "type": "string",
              "description": "The city and state, e.g. San Francisco, CA"
            },
            "unit": {
              "type": "string",
              "enum": ["celsius", "fahrenheit"]
            }
          },
          "required": ["location"]
        }
      }
    }
  ],
  "tool_choice": "auto"
}'
Python
from openai import OpenAI
client = OpenAI()

tools = [
  {
    "type": "function",
    "function": {
      "name": "get_current_weather",
      "description": "Get the current weather in a given location",
      "parameters": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string",
            "description": "The city and state, e.g. San Francisco, CA",
          },
          "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
        },
        "required": ["location"],
      },
    }
  }
]
messages = [{"role": "user", "content": "What's the weather like in Boston today?"}]
completion = client.chat.completions.create(
  model="gpt-4o",
  messages=messages,
  tools=tools,
  tool_choice="auto"
)

print(completion)
javascript
import OpenAI from "openai";

const openai = new OpenAI();

async function main() {
  const messages = [{"role": "user", "content": "What's the weather like in Boston today?"}];
  const tools = [
      {
        "type": "function",
        "function": {
          "name": "get_current_weather",
          "description": "Get the current weather in a given location",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA",
              },
              "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
            },
            "required": ["location"],
          },
        }
      }
  ];

  const response = await openai.chat.completions.create({
    model: "gpt-4o",
    messages: messages,
    tools: tools,
    tool_choice: "auto",
  });

  console.log(response);
}

main();

Пример ответа:

json
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1699896916,
  "model": "gpt-4o-mini",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "id": "call_abc123",
            "type": "function",
            "function": {
              "name": "get_current_weather",
              "arguments": "{\n\"location\": \"Boston, MA\"\n}"
            }
          }
        ]
      },
      "logprobs": null,
      "finish_reason": "tool_calls"
    }
  ],
  "usage": {
    "prompt_tokens": 82,
    "completion_tokens": 17,
    "total_tokens": 99,
    "completion_tokens_details": {
      "reasoning_tokens": 0,
      "accepted_prediction_tokens": 0,
      "rejected_prediction_tokens": 0
    }
  }
}

В этом тексте показаны различные способы использования API для создания чат-комплетов с функцией потоковой передачи, что позволяет динамично обрабатывать запросы, использовать параметры и функции для работы с изображениями и общения в консольном и веб-средах.

Объект завершения чата

Представляет собой ответ завершения чата, возвращенный моделью на основе предоставленного ввода.

ПараметрОписание
idСтрока - Уникальный идентификатор для завершения чата.
choicesМассив - Список вариантов завершения чата. Может включать более одного варианта, если n больше 1.
finish_reasonСтрока - Причина, по которой модель прекратила генерировать токены. Возможные причины: stop, length, content_filter, tool_calls, function_call (устарело).
indexЦелое число - Индекс выбора в списке вариантов.
messageОбъект - Сообщение, сгенерированное моделью для завершения чата.
logprobsОбъект или null - Информация о логарифмических вероятностях для выбора.
createdЦелое число - Временная метка Unix (в секундах) времени создания завершения чата.
modelСтрока - Модель, использованная для завершения чата.
service_tierСтрока или null - Уровень обслуживания, использованный для обработки запроса. Включается только если параметр service_tier указан в запросе.
system_fingerprintСтрока - Отпечаток конфигурации бэкенда, на котором работает модель. Может использоваться совместно с параметром seed для понимания изменений, влияющих на детерминизм.
objectСтрока - Тип объекта, всегда равен chat.completion.
usageОбъект - Статистика использования для запроса на завершение.

Пример объекта завершения чата

json
{
  "id": "chatcmpl-123456",
  "object": "chat.completion",
  "created": 1728933352,
  "model": "gpt-4o-2024-08-06",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Привет! Чем могу помочь сегодня?",
        "refusal": null
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 19,
    "completion_tokens": 10,
    "total_tokens": 29,
    "prompt_tokens_details": {
      "cached_tokens": 0
    },
    "completion_tokens_details": {
      "reasoning_tokens": 0,
      "accepted_prediction_tokens": 0,
      "rejected_prediction_tokens": 0
    }
  },
  "system_fingerprint": "fp_6b68a8204b"
}

Объект фрагмента завершения чата

Представляет собой потоковый фрагмент ответа на завершение чата, генерируемый моделью на основе предоставленного ввода.

СвойствоОписаниеЗначение
idУникальный идентификатор для завершения чата. Каждый фрагмент имеет одинаковый ID.string
choicesСписок вариантов завершения чата. Может содержать более одного элемента, если n больше 1. Может быть пустым для последнего фрагмента, если вы установили stream_options: {"include_usage": true}.array
deltaОбъект дельты завершения чата, сгенерированный потоковыми ответами модели.object
logprobsИнформация о вероятности логарифма для выбора.object or null
finish_reasonПричина, по которой модель прекратила генерировать токены. Возможные значения: stop, length, content_filter, tool_calls, function_call (устарело).string or null
indexИндекс выбора в списке вариантов.integer
createdUnix-временная метка (в секундах), когда завершение чата было создано. Каждый фрагмент имеет одинаковую метку времени.integer
modelМодель для генерации завершения.string
service_tierУровень обслуживания, используемый для обработки запроса. Будет представлен, если указан параметр service_tier в запросе.string or null
system_fingerprintОтпечаток, представляющий конфигурацию серверной части, с которой работает модель. Может использоваться вместе с параметром seed запроса для понимания изменений в серверной части, которые могут повлиять на детерминизм.string
objectТип объекта, который всегда равен chat.completion.chunk.string
usageДополнительное поле, которое присутствует только при указании stream_options: {"include_usage": true} в вашем запросе. Если присутствует, имеет значение null, кроме последнего фрагмента, который содержит статистику использования токенов для всего запроса.object or null
completion_tokensКоличество токенов в сгенерированном завершении.integer
prompt_tokensКоличество токенов в подсказке.integer
total_tokensОбщее количество токенов, используемых в запросе (подсказка + завершение).integer

Пример данных:

json
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{"role":"assistant","content":""},"logprobs":null,"finish_reason":null}]}

{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{"content":"Hello"},"logprobs":null,"finish_reason":null}]}

....

{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}]}

Создано при поддержке AITUNNEL