Module: Raif::Concerns::Llms::OpenAiCompletions::MessageFormatting
- Extended by:
- ActiveSupport::Concern
- Included in:
- Llms::OpenAiCompletions, Llms::OpenRouter
- Defined in:
- app/models/raif/concerns/llms/open_ai_completions/message_formatting.rb
Instance Method Summary collapse
- #format_model_file_input_message(file_input) ⇒ Object
- #format_model_image_input_message(image_input) ⇒ Object
- #format_tool_call_message(tool_call) ⇒ Object
- #format_tool_call_result_message(tool_call_result) ⇒ Object
Instance Method Details
#format_model_file_input_message(file_input) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'app/models/raif/concerns/llms/open_ai_completions/message_formatting.rb', line 24 def (file_input) if file_input.source_type == :url raise Raif::Errors::UnsupportedFeatureError, "#{self.class.name} does not support providing a file by URL" elsif file_input.source_type == :file_content file_params = { "filename" => file_input.filename, "file_data" => "data:#{file_input.content_type};base64,#{file_input.base64_data}" }.compact { "type" => "file", "file" => file_params } else raise Raif::Errors::InvalidModelFileInputError, "Invalid model image input source type: #{file_input.source_type}" end end |
#format_model_image_input_message(image_input) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'app/models/raif/concerns/llms/open_ai_completions/message_formatting.rb', line 6 def (image_input) if image_input.source_type == :url { "type" => "image_url", "image_url" => { "url" => image_input.url } } elsif image_input.source_type == :file_content { "type" => "image_url", "image_url" => { "url" => "data:#{image_input.content_type};base64,#{image_input.base64_data}" } } else raise Raif::Errors::InvalidModelImageInputError, "Invalid model image input source type: #{image_input.source_type}" end end |
#format_tool_call_message(tool_call) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'app/models/raif/concerns/llms/open_ai_completions/message_formatting.rb', line 42 def (tool_call) { "role" => "assistant", "tool_calls" => [{ "id" => tool_call["provider_tool_call_id"], "type" => "function", "function" => { "name" => tool_call["name"], "arguments" => JSON.generate(tool_call["arguments"]) } }] } end |
#format_tool_call_result_message(tool_call_result) ⇒ Object
56 57 58 59 60 61 62 |
# File 'app/models/raif/concerns/llms/open_ai_completions/message_formatting.rb', line 56 def (tool_call_result) { "role" => "tool", "tool_call_id" => tool_call_result["provider_tool_call_id"], "content" => tool_call_result["result"].is_a?(String) ? tool_call_result["result"] : JSON.generate(tool_call_result["result"]) } end |