Skip to content

Commit 1bfebaf

Browse files
committed
Supporting image_urls
1 parent 322636c commit 1bfebaf

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

lib/active_agent/action_prompt/message.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module ActionPrompt
33
class Message
44
VALID_ROLES = %w[system assistant user tool].freeze
55

6-
attr_accessor :action_id, :action_name, :generation_id, :content, :role, :action_requested, :requested_actions, :content_type, :charset
6+
attr_accessor :action_id, :action_name, :raw_actions, :generation_id, :content, :role, :action_requested, :requested_actions, :content_type, :charset
77

88
def initialize(attributes = {})
99
@action_id = attributes[:action_id]
@@ -13,6 +13,7 @@ def initialize(attributes = {})
1313
@content = attributes[:content] || ""
1414
@content_type = attributes[:content_type] || "text/plain"
1515
@role = attributes[:role] || :user
16+
@raw_actions = attributes[:raw_actions]
1617
@requested_actions = attributes[:requested_actions] || []
1718
@action_requested = @requested_actions.any?
1819
validate_role

lib/active_agent/generation_provider/open_ai_provider.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,15 @@ def provider_messages(messages)
7373
role: message.role,
7474
tool_call_id: message.action_id.presence,
7575
name: message.action_name.presence,
76-
tool_calls: (message.requested_actions.map { |action| {name: action.name, arguments: action.params.to_json} } if message.action_requested),
76+
tool_calls: message.raw_actions.present? ? message.raw_actions[:tool_calls] : (message.requested_actions.map { |action| {type: "function", name: action.name, arguments: action.params.to_json} } if message.action_requested),
77+
generation_id: message.generation_id,
7778
content: message.content,
7879
type: message.content_type,
7980
charset: message.charset
8081
}.compact
8182

82-
if message.content_type == "image_url"
83+
if message.content_type == "image_url" || message.content[0..4] == "data:"
84+
provider_message[:type] = "image_url"
8385
provider_message[:image_url] = {url: message.content}
8486
end
8587
provider_message
@@ -103,6 +105,7 @@ def handle_message(message_json)
103105
content: message_json["content"],
104106
role: message_json["role"].intern,
105107
action_requested: message_json["finish_reason"] == "tool_calls",
108+
raw_actions: message_json["tool_calls"] || [],
106109
requested_actions: handle_actions(message_json["tool_calls"])
107110
)
108111
end

0 commit comments

Comments
 (0)