Class: Raif::Conversation
Instance Method Summary
collapse
#clean_html_fragment, #parsed_response
#available_model_tools_map
#requested_language_name, #system_prompt_language_preference
#default_llm_model_key, #llm
table_name_prefix
Instance Method Details
71
72
73
|
# File 'app/models/raif/conversation.rb', line 71
def available_user_tool_classes
available_user_tools.map(&:constantize)
end
|
#build_system_prompt ⇒ Object
21
22
23
24
25
26
|
# File 'app/models/raif/conversation.rb', line 21
def build_system_prompt
<<~PROMPT
#{system_prompt_intro}
#{system_prompt_language_preference}
PROMPT
end
|
#initial_chat_message ⇒ Object
i18n-tasks-use t(‘raif.conversation.initial_chat_message’)
34
35
36
|
# File 'app/models/raif/conversation.rb', line 34
def initial_chat_message
I18n.t("#{self.class.name.underscore.gsub("/", ".")}.initial_chat_message")
end
|
#llm_messages ⇒ Object
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
# File 'app/models/raif/conversation.rb', line 54
def llm_messages
messages = []
entries.oldest_first.includes(:raif_model_tool_invocations).each do |entry|
messages << { "role" => "user", "content" => entry.user_message } unless entry.user_message.blank?
next unless entry.completed?
messages << { "role" => "assistant", "content" => entry.model_response_message } unless entry.model_response_message.blank?
entry.raif_model_tool_invocations.each do |tool_invocation|
messages << { "role" => "assistant", "content" => tool_invocation.as_llm_message }
messages << { "role" => "assistant", "content" => tool_invocation.result_llm_message } if tool_invocation.result_llm_message.present?
end
end
messages
end
|
#process_model_response_message(message:, entry:) ⇒ Object
48
49
50
51
52
|
# File 'app/models/raif/conversation.rb', line 48
def process_model_response_message(message:, entry:)
message
end
|
#prompt_model_for_entry_response(entry:) ⇒ Object
38
39
40
41
42
43
44
45
46
|
# File 'app/models/raif/conversation.rb', line 38
def prompt_model_for_entry_response(entry:)
llm.chat(
messages: llm_messages,
source: entry,
response_format: response_format.to_sym,
system_prompt: system_prompt,
available_model_tools: available_model_tools
)
end
|
#system_prompt_intro ⇒ Object
28
29
30
31
|
# File 'app/models/raif/conversation.rb', line 28
def system_prompt_intro
sp = Raif.config.conversation_system_prompt_intro
sp.respond_to?(:call) ? sp.call(self) : sp
end
|