Module: Legion::Extensions::MicrosoftTeams::Helpers::PromptResolver

Included in:
SessionManager, Runners::Bot
Defined in:
lib/legion/extensions/microsoft_teams/helpers/prompt_resolver.rb

Instance Method Summary collapse

Instance Method Details

#resolve_llm_config(conversation_id:, mode: nil, owner_id: nil) ⇒ Object

rubocop:disable Lint/UnusedMethodArgument



26
27
28
29
30
31
32
33
34
# File 'lib/legion/extensions/microsoft_teams/helpers/prompt_resolver.rb', line 26

def resolve_llm_config(conversation_id:, mode: nil, owner_id: nil) # rubocop:disable Lint/UnusedMethodArgument
  settings = teams_settings
  base_llm = settings.dig(:bot, :llm) || {}

  overrides = conversation_overrides(conversation_id: conversation_id)
  override_llm = overrides&.dig(:llm) || {}

  base_llm.merge(override_llm)
end

#resolve_prompt(mode:, conversation_id:, owner_id: nil, trace_context: nil) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/legion/extensions/microsoft_teams/helpers/prompt_resolver.rb', line 8

def resolve_prompt(mode:, conversation_id:, owner_id: nil, trace_context: nil)
  settings = teams_settings
  base = settings.dig(:bot, :system_prompt) || ''

  mode_prompt = settings.dig(:bot, mode, :system_prompt)
  prompt = mode_prompt || base

  overrides = conversation_overrides(conversation_id: conversation_id)
  prompt = "#{prompt}\n\n#{overrides[:system_prompt_append]}" if overrides && overrides[:system_prompt_append]

  pref_instructions = preference_instructions_for(owner_id: owner_id)
  prompt = "#{prompt}\n\n#{pref_instructions}" if pref_instructions

  prompt = "#{prompt}\n\n#{trace_context}" if trace_context && !trace_context.empty?

  prompt
end