Skip to content

RubyLLM::InvalidRoleError при обработке webhook сообщений #195

@dapi

Description

@dapi

Описание проблемы

При обработке Telegram webhook запросов возникает ошибка:

RubyLLM::InvalidRoleError (Expected role to be one of: system, user, assistant, tool)

Стек вызовов

app/controllers/telegram/webhook_controller.rb:108:in 'Telegram::WebhookController#setup_chat_tools'
app/controllers/telegram/webhook_controller.rb:70:in 'block in Telegram::WebhookController#message'
app/services/analytics/response_time_tracker.rb:21:in 'Analytics::ResponseTimeTracker.measure'
app/controllers/telegram/webhook_controller.rb:64:in 'Telegram::WebhookController#message'
app/middleware/telegram/multi_tenant_middleware.rb:50:in 'Telegram::MultiTenantMiddleware#call'

Воспроизведение

  1. Отправить сообщение боту в Telegram
  2. Webhook возвращает 500 ошибку

Предполагаемая причина

Ошибка возникает в методе setup_chat_tools при вызове .with_instructions():

def setup_chat_tools
  llm_chat
    .with_tool(BookingTool.new(chat: llm_chat))
    .with_temperature(ApplicationConfig.llm_temperature)
    .with_instructions(SystemPromptService.new(current_tenant).system_prompt, replace: true)  # <-- здесь
    .on_tool_call { |tool_call| handle_tool_call(tool_call) }
    .on_tool_result { |result| handle_tool_result(result) }
end

Возможно в базе данных есть сообщения с некорректной ролью (не system/user/assistant/tool), которые загружаются при инициализации чата.

Окружение

  • Версия: 0.19.0
  • Кластер: fury (production)
  • Namespace: valera-production

Логи

Webhook получает сообщения от Telegram, но падает при обработке:

{"update_id":573864753,"message":{"message_id":32,"from":{"id":943084337,"first_name":"Danil"},"chat":{"id":943084337},"text":"Привет!"}}

Возможные решения

  1. Проверить данные в таблице messages на наличие некорректных ролей
  2. Добавить миграцию для очистки/исправления некорректных данных
  3. Добавить валидацию роли при сохранении сообщений

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions