Перейти к основному содержимому

Chat Completions API (OpenAI-compatible)

ScriptRun предоставляет эндпоинт chat completions, совместимый с OpenAI. Он принимает стандартное тело запроса chat-completion в формате OpenAI, проксирует его к запрошенной модели и возвращает ответ провайдера без изменений. Это позволяет использовать существующие клиентские библиотеки OpenAI, просто указав их base_url на ScriptRun.

Эндпоинт

POST https://scriptrun.ai/v1/chat/completions
примечание

В отличие от остальной части API, этот эндпоинт находится по пути /v1/... (а не /api/v1/...), чтобы совпадать с путём, который SDK OpenAI автоматически добавляют к base_url.

Аутентификация

Этот эндпоинт использует аутентификацию через Bearer-токен (соглашение OpenAI), а не заголовок X-Api-Key, применяемый в остальной части API. Передайте ваш API-ключ ScriptRun в качестве bearer-токена:

Authorization: Bearer <Your API Key>

Тело запроса

Тело запроса — стандартный payload chat-completion в формате OpenAI. Как минимум необходимо указать model и messages:

НазваниеТипОбязательныйОписание
modelstringДаИдентификатор модели, к которой направляется запрос (например, gpt-4o).
messagesarrayДаСписок сообщений чата, каждое с полями role и content.
...НетЛюбой другой параметр chat-completion OpenAI передаётся как есть.

Ответ

При успехе эндпоинт возвращает тело ответа chat-completion от провайдера дословно, в формате OpenAI. Ошибки возвращаются в формате ошибок OpenAI:

{
"error": {
"message": "Invalid model_name",
"type": "invalid_request_error",
"param": null,
"code": null
}
}

Примеры

Использование OpenAI SDK

Python (openai)
from openai import OpenAI

client = OpenAI(
api_key="<Your API Key>",
base_url="https://scriptrun.ai/v1",
)

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

Использование requests

Python (requests)
import requests

url = "https://scriptrun.ai/v1/chat/completions"
headers = {
"Authorization": "Bearer <Your API Key>",
"Content-Type": "application/json",
}
data = {
"model": "gpt-4o",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"},
],
}

response = requests.post(url, headers=headers, json=data)
print(response.json())

Использование curl

Shell
curl -X POST "https://scriptrun.ai/v1/chat/completions" \
-H "Authorization: Bearer <Your API Key>" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
]
}'

Пример успешного ответа:

{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1700000000,
"model": "gpt-4o",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I help you today?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 20,
"completion_tokens": 9,
"total_tokens": 29
}
}

Ответы

  • 200: Результат chat completion в формате OpenAI (проксирован от провайдера).
  • 400: Некорректный запрос — например, отсутствует поле model.
  • 500: Ошибка выполнения или ошибка вышестоящего провайдера.

Код HTTP-статуса повторяет ответ вышестоящего провайдера, поэтому коды, не перечисленные выше (такие как 401 или 429), могут передаваться напрямую от провайдера.

примечание

Запрос выполняется синхронно и ожидает ответа от провайдера (до 60-секундного таймаута на стороне сервера). Для длительных, многоузловых автоматизаций используйте вместо этого эндпоинты Workflow API run / workflow_result.