$gpt.createChatCompletion
Встроенный сервис $gpt
позволяет обращаться к моделям ChatGPT от OpenAI из сценария бота.
Вы можете использовать сервис $gpt
в JAICP, несмотря на то что сайт OpenAI недоступен для российских IP-адресов.
Метод $gpt.createChatCompletion
реализован на основе метода OpenAI,
который возвращает ответ LLM на запрос пользователя.
Вы можете использовать его, например, чтобы генерировать ответы на нераспознанные фразы пользователей.
Мы рекомендуем использовать $gpt.createChatCompletion
только в текстовых ботах.
Чтобы обращаться к LLM с минимальными паузами в телефонном канале, используйте тип ответа llmRequest
.
Модели
Чтобы обращаться к LLM, метод использует сервис openai-proxy
на платформе Caila.
Вы можете посмотреть доступные модели на странице сервиса.
Укажите модель в аргументе model
.
По умолчанию метод $gpt.createChatCompletion
использует GPT-4o mini.
Синтаксис
- ECMAScript 5
- ECMAScript 6
$gpt.createChatCompletion(messages, temperature, n, max_completion_tokens, model);
В среде ECMAScript 6 метод является асинхронным:
await $gpt.createChatCompletion(messages, temperature, n, max_completion_tokens, model);
Метод принимает следующие аргументы:
Аргумент | Тип | Обязательный | Описание |
---|---|---|---|
messages | Массив объектов | Да | Сообщения, которые передаются модели. Вы можете получить историю диалога с ботом с помощью $jsapi.chatHistoryInLlmFormat . |
messages[].role | Строка | Да | Роль автора сообщения: system , user , assistant или function . |
messages[].content | Строка | Да | Текст сообщения. |
temperature | Число | Нет | Случайность и креативность ответа модели. Принимает значения от0.0 до 2.0 . Значение по умолчанию — 1 . При низких значениях ответы модели будут более четкими и предсказуемыми, при высоких — непредсказуемыми и креативными. |
n | Число | Нет | Количество вариантов ответа от модели. Значение по умолчанию — 1 , вы можете вывести все ответы или выбрать нужный вариант. |
max_completion_tokens | Число | Нет | Максимальное количество токенов, которое может сгенерировать модель. Включает в себя также токены в рассуждениях модели. |
model | Строка | Нет | Модель, которая генерирует ответ. По умолчанию: |
В документации OpenAI вы можете ознакомиться с примерами запросов.
Сайт OpenAI недоступен для российских IP-адресов.
Примеры вызова
$gpt.createChatCompletion([{ "role": "user", "content": "Привет!" }]);
$gpt.createChatCompletion(
[{ "role": "user", "content": "Привет!" }], 1, 3, 100, "gpt-4o"
);
$gpt.createChatCompletion(
[{ "role": "user", "content": "Привет!" }], undefined, undefined, undefined, "gpt-4o"
);
Другие параметры метода
Если вы хотите использовать другие параметры для метода, вы можете передать в качестве аргумента один объект сразу со всеми настройками. Объект может содержать любые параметры, которые поддерживает метод OpenAI.
Например, вы можете указать top_p
и presence_penalty
:
$gpt.createChatCompletion(
{
"model": "gpt-4o",
"messages": [
{
"role": "user",
"content": "Расскажи о себе"
}
],
"top_p": 0.1,
"presence_penalty": -1
}
);
- Параметр
"stream": true
не поддерживается. Если он указан, метод не возвращает текст ответа LLM. - Вы можете использовать параметр
tools
, только если вызываете метод в среде ECMAScript 6.
Возвращаемое значение
Метод возвращает ответ в формате, аналогичном ответу OpenAI API:
{
"model": "gpt-4o-mini-2024-07-18",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Я — искусственный интеллект, созданный компанией OpenAI…"
},
"finish_reason": "stop"
},
{
"index": 1,
"message": {
"role": "assistant",
"content": "Я — искусственный интеллект, разработанный компанией OpenAI…"
},
"finish_reason": "stop"
},
{
"index": 2,
"message": {
"role": "assistant",
"content": "Я — искусственный интеллект, разработанный OpenAI…"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 11,
"completion_tokens": 60,
"total_tokens": 71
}
}
Тарификация
При вызове метода происходит списание Caila-токенов. Они не равны токенам OpenAI. Количество потраченных Caila-токенов зависит от запроса.
Not enough MLP tokens
, которое вы сможете обработать в сценарии.
Чтобы пополнить лимиты, приобретите дополнительный пакет Caila-токенов.Использование в сценарии
Чтобы бот отвечал на нераспознанные фразы пользователя с помощью ChatGPT,
вызовите $gpt.createChatCompletion
в стейте для обработки этих фраз:
- ECMAScript 5
- ECMAScript 6
state: NoMatch
event!: noMatch
script:
var userMessage = $request.query;
var assistantResponse = $gpt.createChatCompletion(
[{ "role": "user", "content": userMessage }]
);
var response = assistantResponse.choices[0].message.content;
$reactions.answer(response);
state: NoMatch
event!: noMatch
scriptEs6:
const userMessage = $request.query;
const assistantResponse = await $gpt.createChatCompletion(
[{ "role": "user", "content": userMessage }]
);
const response = assistantResponse.choices[0].message.content;
$reactions.answer(response);