mirror of
https://github.com/discourse/discourse-ai.git
synced 2025-07-10 08:03:28 +00:00
* FIX: Improve MessageBus efficiency and correctly stop streaming This commit enhances the message bus implementation for AI helper streaming by: - Adding client_id targeting for message bus publications to ensure only the requesting client receives streaming updates - Limiting MessageBus backlog size (2) and age (60 seconds) to prevent Redis bloat - Replacing clearTimeout with Ember's cancel method for proper runloop management, we were leaking a stop - Adding tests for client-specific message delivery These changes improve memory usage and make streaming more reliable by ensuring messages are properly directed to the requesting client. * composer suggestion needed a fix as well. * backlog size of 2 is risky here cause same channel name is reused between clients
30 lines
786 B
Ruby
30 lines
786 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Jobs
|
|
class StreamComposerHelper < ::Jobs::Base
|
|
sidekiq_options retry: false
|
|
|
|
def execute(args)
|
|
return unless args[:prompt]
|
|
return unless user = User.find_by(id: args[:user_id])
|
|
return unless args[:text]
|
|
return unless args[:client_id]
|
|
|
|
prompt = CompletionPrompt.enabled_by_name(args[:prompt])
|
|
|
|
if prompt.id == CompletionPrompt::CUSTOM_PROMPT
|
|
prompt.custom_instruction = args[:custom_prompt]
|
|
end
|
|
|
|
DiscourseAi::AiHelper::Assistant.new.stream_prompt(
|
|
prompt,
|
|
args[:text],
|
|
user,
|
|
"/discourse-ai/ai-helper/stream_composer_suggestion",
|
|
force_default_locale: args[:force_default_locale],
|
|
client_id: args[:client_id],
|
|
)
|
|
end
|
|
end
|
|
end
|