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

llmRequest

Бета

Этот тип ответа позволяет использовать LLM в телефонном канале с минимальными паузами. С помощью llmRequest бот в потоковом режиме получает текст от LLM и синтезирует речь.

Ответ поддерживается только в телефонном канале.

подсказка

Чтобы узнать подробнее об использовании этого ответа в сценарии, смотрите раздел LLM в телефонии.

Свойства

СвойствоТипОбязательноеОписание
providerСтрокаДа

Провайдер LLM.

Сейчас вы можете использовать только платформу Caila. Укажите значение CAILA_OPEN_AI.
modelСтрокаДа

Модель для генерации текста.

Чтобы обращаться к LLM, бот использует сервис openai-proxy на платформе Caila. Вы можете посмотреть доступные модели и их стоимость на странице сервиса.
tokenSecretСтрокаДаНазвание токена для обращения к LLM.
fillersPhraseConfigОбъектНетНастройки для заполнения паузы.
messagesМассивДаИстория диалога.

Настройки для заполнения паузы

Когда LLM начинает генерировать текст, возникает пауза в речи бота. Бот ждет первое предложение текста, чтобы его воспроизвести.

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

Передайте в поле fillersPhraseConfig следующий объект:

СвойствоТипОбязательноеОписание
fillerPhraseСтрокаДаТекст фразы.
activationDelayMsЧислоНетДлительность паузы в миллисекундах:
  • Если пауза длится больше указанного времени, то бот произнесет фразу fillerPhrase.
  • Если бот начнет воспроизводить текст от LLM раньше, то он не произнесет фразу fillerPhrase.
По умолчанию: 2000.

История диалога

Поле messages содержит историю диалога, которую LLM должна учитывать.

Укажите массив из объектов. Каждый объект должен иметь свойства:

СвойствоТипОбязательноеОписание
roleСтрокаДаРоль участника:
  • user — сообщение пользователя.
  • assistant — сообщение бота.
  • system — промт, инструкция для LLM.
contentСтрокаДаТекст сообщения.
подсказка

Вы можете получить историю диалога пользователя с ботом в этом формате с помощью метода $jsapi.chatHistoryInLlmFormat.

Примеры истории:

  • История только с последним запросом пользователя:

    [
    {"role": "user","content": $request.query}
    ]
  • История с промтом и предыдущими сообщениями:

    [
    {"role": "system", "content": "Отвечай коротко. Максимум несколько предложений."},
    {"role": "user","content": "Порекомендуй фильм"},
    {"role": "assistant", "content": "Какого жанра?"},
    {"role": "user", "content": "Комедия"}
    ]
предупреждение

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

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

state: NoMatch
event!: noMatch
script:
$response.replies = $response.replies || []
$response.replies.push({
type: "llmRequest",
provider: "CAILA_OPEN_AI",
// Модель для генерации текста
model: "gpt-4o",
// Название токена
tokenSecret: "MY_LLM_TOKEN",
// Фраза для заполнения паузы
fillersPhraseConfig: {"fillerPhrase": "Хороший вопрос!", "activationDelayMs": 1000},
// История диалога
messages: [{"role": "user","content": $request.query}]
});