-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
progressIn progressIn progress
Description
Описание проблемы
При обработке 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'
Воспроизведение
- Отправить сообщение боту в Telegram
- 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":"Привет!"}}Возможные решения
- Проверить данные в таблице
messagesна наличие некорректных ролей - Добавить миграцию для очистки/исправления некорректных данных
- Добавить валидацию роли при сохранении сообщений
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
progressIn progressIn progress