Skip to content

Commit 2e0e4dc

Browse files
committed
refactor(media): streamline content formatting methods across providers
1 parent f400051 commit 2e0e4dc

File tree

8 files changed

+242
-17
lines changed

8 files changed

+242
-17
lines changed

lib/ruby_llm/providers/anthropic/chat.rb

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,6 @@ def convert_role(role)
9999
else 'assistant'
100100
end
101101
end
102-
103-
def format_text_block(content)
104-
{
105-
type: 'text',
106-
text: content
107-
}
108-
end
109102
end
110103
end
111104
end

lib/ruby_llm/providers/anthropic/media.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ module Media
88
module_function
99

1010
def format_content(content) # rubocop:disable Metrics/MethodLength
11-
return content unless content.is_a?(Content)
11+
return [format_text(content)] unless content.is_a?(Content)
1212

1313
parts = []
14-
parts << format_text_block(content.text) if content.text
14+
parts << format_text(content.text) if content.text
1515

1616
content.attachments.each do |attachment|
1717
case attachment
@@ -25,7 +25,7 @@ def format_content(content) # rubocop:disable Metrics/MethodLength
2525
parts
2626
end
2727

28-
def format_text_block(text)
28+
def format_text(text)
2929
{
3030
type: 'text',
3131
text: text

lib/ruby_llm/providers/anthropic/tools.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def format_tool_call(msg)
1717
{
1818
role: 'assistant',
1919
content: [
20-
Media.format_text_block(msg.content),
20+
Media.format_text(msg.content),
2121
format_tool_use_block(tool_call)
2222
]
2323
}

lib/ruby_llm/providers/bedrock/media.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ module Media
1010
module_function
1111

1212
def format_content(content) # rubocop:disable Metrics/MethodLength
13-
return content unless content.is_a?(Content)
13+
return [Anthropic::Media.format_text(content)] unless content.is_a?(Content)
1414

1515
parts = []
16-
parts << Anthropic::Media.format_text_block(content.text) if content.text
16+
parts << Anthropic::Media.format_text(content.text) if content.text
1717

1818
content.attachments.each do |attachment|
1919
case attachment

lib/ruby_llm/providers/gemini/media.rb

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ module Media
88
module_function
99

1010
def format_content(content) # rubocop:disable Metrics/MethodLength
11-
return { text: content } unless content.is_a?(Content)
11+
return [format_text(content)] unless content.is_a?(Content)
1212

1313
parts = []
14-
parts << { text: content.text } if content.text
14+
parts << format_text(content.text) if content.text
1515

1616
content.attachments.each do |attachment|
1717
case attachment
@@ -53,6 +53,12 @@ def format_audio(audio)
5353
}
5454
}
5555
end
56+
57+
def format_text(text)
58+
{
59+
text: text
60+
}
61+
end
5662
end
5763
end
5864
end

lib/ruby_llm/providers/ollama/media.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ module Media
1010
module_function
1111

1212
def format_content(content) # rubocop:disable Metrics/MethodLength
13-
return format_text(content) unless content.is_a?(Content)
13+
return [format_text(content)] unless content.is_a?(Content)
1414

1515
parts = []
1616
parts << format_text(content.text) if content.text

lib/ruby_llm/providers/openai/media.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ module Media
88
module_function
99

1010
def format_content(content) # rubocop:disable Metrics/MethodLength
11-
return format_text(content) unless content.is_a?(Content)
11+
return [format_text(content)] unless content.is_a?(Content)
1212

1313
parts = []
1414
parts << format_text(content.text) if content.text

spec/fixtures/vcr_cassettes/activerecord_actsas_to_llm_returns_the_correct_amount_of_messages.yml

Lines changed: 226 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)