Вы можете взаимодействовать с API через HTTP-запросы на любом языке, через наши официальные Python-библиотеки, нашу официальную библиотеку Node.js, или библиотеку, поддерживаемую сообществом.
Чтобы установить официальные Python-библиотеки, выполните следующую команду:
pip install openai
Чтобы установить официальную библиотеку Node.js, выполните следующую команду в директории вашего проекта на Node.js:
npm install openai@^4.0.0
API OpenAI использует ключи API для аутентификации. В России доступ к API OpenAI ограничен. Получить ключ API можно с помощью сервиса ProxyAPI - доступ к OpenAI API в России.
Помните, что ваш ключ API - это секрет! Не делитесь им с другими или не показывайте его в каком-либо коде на стороне клиента (браузеры, приложения). Запросы в рабочем окружении должны быть направлены через ваш собственный серверный бэкенд, где ваш ключ API может быть безопасно загружен из переменной среды окружения или службы управления ключами.
Все запросы к API должны включать ваш ключ API в HTTP заголовке Authorization
в следующем виде:
Authorization: Bearer OPENAI_API_KEY
Для пользователей, которые принадлежат к нескольким организациям, вы можете передать заголовок, чтобы указать, какая организация используется для запроса к API. Использование из этих запросов к API будет считаться использованием для указанной организации.
Пример команды curl:
1curl https://api.openai.com/v1/models \
2 -H "Authorization: Bearer $OPENAI_API_KEY" \
3 -H "OpenAI-Organization: YOUR_ORG_ID"
Пример с пакетом openai
для Python:
1from openai import OpenAI
2
3client = OpenAI(
4 organization='YOUR_ORG_ID',
5)
Пример с пакетом openai
для Node.js:
1import OpenAI from "openai";
2
3const openai = new OpenAI({
4 organization: 'YOUR_ORG_ID',
5});
Идентификаторы организаций можно найти на странице настроек вашей организации.
Вы можете вставить команду ниже в ваш терминал, чтобы выполнить ваш первый запрос к API. Убедитесь, что вы заменили $OPENAI_API_KEY
на ваш секретный ключ API.
1curl https://api.openai.com/v1/chat/completions \
2 -H "Content-Type: application/json" \
3 -H "Authorization: Bearer $OPENAI_API_KEY" \
4 -d '{
5 "model": "gpt-3.5-turbo",
6 "messages": [{"role": "user", "content": "Say this is a test!"}],
7 "temperature": 0.7
8 }'
Этот запрос обращается к модели gpt-3.5-turbo
(которая под капотом указывает на последнюю вариацию модели gpt-3.5-turbo
), чтобы дополнить текст начиная с prompt "Say this is a test". Вы должны получить ответ, похожий на следующий:
1{
2 "id": "chatcmpl-abc123",
3 "object": "chat.completion",
4 "created": 1677858242,
5 "model": "gpt-3.5-turbo-1106",
6 "usage": {
7 "prompt_tokens": 13,
8 "completion_tokens": 7,
9 "total_tokens": 20
10 },
11 "choices": [
12 {
13 "message": {
14 "role": "assistant",
15 "content": "\n\nThis is a test!"
16 },
17 "logprobs": null,
18 "finish_reason": "stop",
19 "index": 0
20 }
21 ]
22}
Теперь, когда вы сгенерировали ваш первый ответ чата, давайте разберем объект ответа. Мы видим, что finish_reason
равен stop
, что означает, что API вернул полное завершение чата, сгенерированное моделью, без каких-либо ограничений. В списке выборов мы сгенерировали только одно сообщение, но вы можете установить параметр n
, чтобы генерировать несколько вариантов сообщений.
API OpenAI предоставляет возможность передавать ответы клиенту в потоковом режиме, чтобы позволить получать частичные результаты для определенных запросов. Для этого мы следуем стандарту События, отправляемые сервером.
Наши официальные библиотеки Node и Python обрабатывают События, отправляемые сервером, за вас. В Python потоковый запрос выглядит так:
1from openai import OpenAI
2
3client = OpenAI()
4
5stream = client.chat.completions.create(
6 model="gpt-4",
7 messages=[{"role": "user", "content": "Say this is a test"}],
8 stream=True,
9)
10for chunk in stream:
11 if chunk.choices[0].delta.content is not None:
12 print(chunk.choices[0].delta.content, end="")
В Node / Typescript потоковый запрос выглядит так:
1import OpenAI from "openai";
2
3const openai = new OpenAI();
4
5async function main() {
6 const stream = await openai.chat.completions.create({
7 model: "gpt-4",
8 messages: [{ role: "user", content: "Say this is a test" }],
9 stream: true,
10 });
11 for await (const chunk of stream) {
12 process.stdout.write(chunk.choices[0]?.delta?.content || "");
13 }
14}
15
16main();
Разбор событий, отправляемых сервером, не тривиален и должен выполняться с осторожностью. Простые стратегии, такие как разделение по новой строке, могут привести к ошибкам разбора. Мы рекомендуем использовать существующие клиентские библиотеки, когда это возможно.
Генерирует аудио из входного текста.
Тело запроса
alloy
, echo
, fable
, onyx
, nova
, и shimmer
.mp3
, opus
, aac
, и flac
.0.25
до 4.0
. По умолчанию 1.0
.Возвращает
Содержимое аудиофайла.
1curl https://api.openai.com/v1/audio/speech
2 -H "Authorization: Bearer $OPENAI_API_KEY"
3 -H "Content-Type: application/json"
4 -d '{
5 "model": "tts-1",
6 "input": "The quick brown fox jumped over the lazy dog.",
7 "voice": "alloy"
8 }'
9 --output speech.mp3
Транскрибирует аудио в язык ввода.
Тело запроса
whisper-1
.json
, text
, srt
, verbose_json
, или vtt
.Возвращает
Транскрибированный текст.
1curl https://api.openai.com/v1/audio/transcriptions
2 -H "Authorization: Bearer $OPENAI_API_KEY"
3 -H "Content-Type: multipart/form-data"
4 -F file="@/path/to/file/audio.mp3"
5 -F model="whisper-1"
1{
2 "text": "Представьте самую дикую идею, которая у вас когда-либо была, и вас интересует, как она может масштабироваться до чего-то в 100, в 1000 раз большего. Это место, где вы можете это сделать."
3}
Переводит аудио на английский.
Тело запроса
whisper-1
.json
, text
, srt
, verbose_json
, или vtt
.Возвращает
Переведенный текст.
1curl https://api.openai.com/v1/audio/transcriptions
2 -H "Authorization: Bearer $OPENAI_API_KEY"
3 -H "Content-Type: multipart/form-data"
4 -F file="@/path/to/file/german.m4a"
5 -F model="whisper-1"
1{
2"text": "Hello, my name is Wolfgang and I come from Germany. Where are you heading today?"
3}
Учитывая список сообщений, составляющих беседу, модель вернет ответ.
Связанное руководство: Chat Completions
Создает ответ модели для данного чата.
Тело запроса
Принимает объект JSON, который отображает токены (указанные по их идентификатору токена в токенизаторе) на связанное с ним значение смещения от -100 до 100. Математически, смещение добавляется к логитам, генерируемым моделью перед выборкой. Точное влияние будет варьироваться в зависимости от модели, но значения между -1 и 1 должны уменьшать или увеличивать вероятность выбора; значения вроде -100 или 100 должны привести к запрету или исключительному выбору соответствующего токена.
content
сообщения. Этот параметр в настоящее время недоступен для модели gpt-4-vision-preview
.logprobs
должен быть установлен в true
, если используется этот параметр.n
равным 1
, чтобы минимизировать затраты.gpt-4-1106-preview
и gpt-3.5-turbo-1106
.Установка в \{ "type": "json_object" }
включает режим JSON, который гарантирует, что сообщение, генерируемое моделью, является допустимым JSON.
Важно: при использовании режима JSON вы должны также инструктировать модель производить JSON самостоятельно с помощью системного или пользовательского сообщения. Без этого модель может генерировать бесконечный поток пробелов, пока генерация не достигнет лимита токенов, что приведет к длительному и кажущемуся "застрявшим" запросу. Также обратите внимание, что содержимое сообщения может быть частично обрезано, если finish_reason="length"
, что указывает на превышение генерацией max_tokens
или превышение максимальной длины контекста разговора.
seed
и параметрами должны возвращать один и тот же результат. Детерминизм не гарантируется, и вы должны обращаться к параметру ответа system_fingerprint
для мониторинга изменений в бэкенде.data: [DONE]
.Мы обычно рекомендуем изменять это или top_p
, но не оба сразу.
Мы обычно рекомендуем изменять это или temperature
, но не оба сразу.
none
означает, что модель не будет вызывать функцию и вместо этого сгенерирует сообщение. auto
означает, что модель может выбирать между генерацией сообщения или вызовом функции. Указание конкретной функции через \{"type": "function", "function": {"name": "my_function"}}
заставляет модель вызвать эту функцию.none
является значением по умолчанию, когда функции отсутствуют. auto
является значением по умолчанию, если функции присутствуют.
tool_choice
.
Определяет, какая (если таковая имеется) функция вызывается моделью. none
означает, что модель не будет вызывать функцию, а вместо этого генерирует сообщение. auto
означает, что модель может выбирать между генерацией сообщения или вызовом функции. Указание конкретной функции через \{"name": "my_function"}
заставляет модель вызвать эту функцию.none
является значением по умолчанию, когда функции отсутствуют. auto
является значением по умолчанию, если функции присутствуют.
tools
.Список функций, для которых модель может генерировать входные данные JSON.
Возвращает
Возвращает объект chat completion или потоковую последовательность объектов chat completion chunk, если запрос потоковый.
- Default
- Image input
- Streaming
- Functions
- Logprobs
1curl https://api.openai.com/v1/chat/completions
2 -H "Content-Type: application/json"
3 -H "Authorization: Bearer $OPENAI_API_KEY"
4 -d '{
5 "model": "gpt-3.5-turbo",
6 "messages": [
7 {
8 "role": "system",
9 "content": "You are a helpful assistant."
10 },
11 {
12 "role": "user",
13 "content": "Hello!"
14 }
15 ]
16 }'
1{
2 "id": "chatcmpl-123",
3 "object": "chat.completion",
4 "created": 1677652288,
5 "model": "gpt-3.5-turbo-0613",
6 "system_fingerprint": "fp_44709d6fcb",
7 "choices": [{
8 "index": 0,
9 "message": {
10 "role": "assistant",
11 "content": "
12
13Здравствуйте, как я могу помочь вам сегодня?",
14 },
15 "logprobs": null,
16 "finish_reason": "stop"
17 }],
18 "usage": {
19 "prompt_tokens": 9,
20 "completion_tokens": 12,
21 "total_tokens": 21
22 }
23}
Представляет собой ответ завершения чата, возвращаемый моделью на основе предоставленного ввода.
n
больше 1.Может использоваться в сочетании с параметром запроса seed
для понимания, когда были сделаны изменения в backend, которые могут повлиять на детерминизм.
chat.completion
.1{
2 "id": "chatcmpl-123",
3 "object": "chat.completion",
4 "created": 1677652288,
5 "model": "gpt-3.5-turbo-0613",
6 "system_fingerprint": "fp_44709d6fcb",
7 "choices": [{
8 "index": 0,
9 "message": {
10 "role": "assistant",
11 "content": "
12
13Здравствуйте, чем я могу вам помочь сегодня?",
14 },
15 "logprobs": null,
16 "finish_reason": "stop"
17 }],
18 "usage": {
19 "prompt_tokens": 9,
20 "completion_tokens": 12,
21 "total_tokens": 21
22 }
23}
Представляет потоковую часть ответа на завершение чата, возвращаемую моделью, на основе предоставленного ввода.
n
больше 1.seed
, чтобы понять, когда были сделаны изменения в бэкэнде, которые могут повлиять на детерминизм.chat.completion.chunk
.1{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-3.5-turbo-0613", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{"role":"assistant","content":""},"logprobs":null,"finish_reason":null}]}
2
3{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-3.5-turbo-0613", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{"content":"Hello"},"logprobs":null,"finish_reason":null}]}
4
5{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-3.5-turbo-0613", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{"content":"!"},"logprobs":null,"finish_reason":null}]}
6
7....
8
9{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-3.5-turbo-0613", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{"content":" today"},"logprobs":null,"finish_reason":null}]}
10
11{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-3.5-turbo-0613", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{"content":"?"},"logprobs":null,"finish_reason":null}]}
12
13{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-3.5-turbo-0613", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}]}
Получите векторное представление заданного входа, которое легко может быть использовано машинными учебными моделями и алгоритмами.
Связанное руководство: Embeddings
Создает embedding вводимого текста.
Тело запроса
text-embedding-ada-002
), не может быть пустой строкой, и любой массив должен быть размером 2048 измерений или меньше.float
, либо base64
.Возвращает
Список объектов embedding.
1curl https://api.openai.com/v1/embeddings
2 -H "Authorization: Bearer $OPENAI_API_KEY"
3 -H "Content-Type: application/json"
4 -d '{
5 "input": "The food was delicious and the waiter...",
6 "model": "text-embedding-ada-002",
7 "encoding_format": "float"
8 }'
1{
2 "object": "list",
3 "data": [
4 {
5 "object": "embedding",
6 "embedding": [
7 0.0023064255,
8 -0.009327292,
9 .... (1536 floats total for ada-002)
10 -0.0028842222,
11 ],
12 "index": 0
13 }
14 ],
15 "model": "text-embedding-ada-002",
16 "usage": {
17 "prompt_tokens": 8,
18 "total_tokens": 8
19 }
20}
Представляет собой вектор embedding, возвращаемый эндпоинтом embedding.
1{
2 "object": "embedding",
3 "embedding": [
4 0.0023064255,
5 -0.009327292,
6 .... (1536 floats total for ada-002)
7 -0.0028842222,
8 ],
9 "index": 0
10}
Данная модель создает новое изображение на основе подсказки и/или входного изображения.
Смежное руководство: Генерация изображений
Создает изображение по подсказке.
Тело запроса
dall-e-2
и 4000 символов для dall-e-3
.dall-e-3
поддерживается только n=1
.hd
создает изображения с более тонкими деталями и большей согласованностью по всему изображению. Этот параметр поддерживается только для dall-e-3
.url
или b64_json
.256x256
, 512x512
, или 1024x1024
для dall-e-2
. Должен быть одним из 1024x1024
, 1792x1024
, или 1024x1792
для моделей dall-e-3
.vivid
или natural
. Vivid заставляет модель генерировать гиперреалистичные и драматичные изображения. Natural заставляет модель создавать более естественные, менее гиперреалистичные изображения. Этот параметр поддерживается только для dall-e-3
.Возвращает
Возвращает список объектов image.
1curl https://api.openai.com/v1/images/generations -H "Content-Type: application/json" -H "Authorization: Bearer $OPENAI_API_KEY" -d '{
2 "model": "dall-e-3",
3 "prompt": "A cute baby sea otter",
4 "n": 1,
5 "size": "1024x1024"
6 }'
1{
2 "created": 1589478378,
3 "data": [
4 {
5 "url": "https://..."
6 },
7 {
8 "url": "https://..."
9 }
10 ]
11}
Создает отредактированное или расширенное изображение на основе оригинального изображения и приглашения.
Тело запроса
image
должно быть отредактировано. Должно быть валидным PNG файлом, меньше 4МБ, и иметь те же размеры, что и image
.dall-e-2
.256x256
, 512x512
, или 1024x1024
.url
или b64_json
.Возвращает
Возвращает список объектов изображение.
1curl https://api.openai.com/v1/images/edits
2 -H "Authorization: Bearer $OPENAI_API_KEY"
3 -F image="@otter.png"
4 -F mask="@mask.png"
5 -F prompt="A cute baby sea otter wearing a beret"
6 -F n=2
7 -F size="1024x1024"
1{
2 "created": 1589478378,
3 "data": [
4 {
5 "url": "https://..."
6 },
7 {
8 "url": "https://..."
9 }
10 ]
11}
Создает вариацию данного изображения.
Тело запроса
dall-e-2
.dall-e-3
поддерживается только n=1
.url
или b64_json
.256x256
, 512x512
или 1024x1024
.Возвращает
Возвращает список объектов image.
1curl https://api.openai.com/v1/images/variations
2 -H "Authorization: Bearer $OPENAI_API_KEY"
3 -F image="@otter.png"
4 -F n=2
5 -F size="1024x1024"
1{
2 "created": 1589478378,
3 "data": [
4 {
5 "url": "https://..."
6 },
7 {
8 "url": "https://..."
9 }
10 ]
11}
Представляет URL или содержимое изображения, сгенерированного с помощью Справочник API OpenAI.
response_format
является b64_json
.response_format
является url
(по умолчанию).1{
2 "url": "...",
3 "revised_prompt": "..."
4}
Описывает различные модели, доступные в API. Вы можете обратиться к документации Модели, чтобы понять, какие модели доступны и чем они отличаются друг от друга.
Выводит список текущих доступных моделей и предоставляет основную информацию по каждой, такую как владелец и доступность.
Возвращает
Список объектов модель.
1curl https://api.openai.com/v1/models
2 -H "Authorization: Bearer $OPENAI_API_KEY"
1{
2 "object": "list",
3 "data": [
4 {
5 "id": "model-id-0",
6 "object": "model",
7 "created": 1686935002,
8 "owned_by": "organization-owner"
9 },
10 {
11 "id": "model-id-1",
12 "object": "model",
13 "created": 1686935002,
14 "owned_by": "organization-owner",
15 },
16 {
17 "id": "model-id-2",
18 "object": "model",
19 "created": 1686935002,
20 "owned_by": "openai"
21 },
22 ],
23 "object": "list"
24}
Описывает предложение модели OpenAI, которое может быть использовано с API.
1{
2 "id": "davinci",
3 "object": "model",
4 "created": 1686935002,
5 "owned_by": "openai"
6}