Skip to content

Commit a1e6703

Browse files
authored
Merge pull request #34 from graysonchen/feature/metadata_for_agent_name
Feature/metadata for agent name
2 parents e4420ff + 9eb0a98 commit a1e6703

File tree

5 files changed

+27
-4
lines changed

5 files changed

+27
-4
lines changed

lib/ruby-openai-swarm.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
require 'ruby-openai-swarm/memories/entity_store'
1616
require 'ruby-openai-swarm/memories/core_memory_function'
1717
require 'ruby-openai-swarm/memories/field'
18-
18+
require 'active_support/core_ext/hash/deep_transform_values'
1919

2020
module OpenAISwarm
2121
class Error < StandardError;

lib/ruby-openai-swarm/core.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,11 @@ def get_chat_completion(agent_tracker, history, context_variables, model_overrid
5858

5959
# Add metadata if provided
6060
# Add support for LiteLLM observability with Langfuse
61-
# See: https://docs.litellm.ai/docs/observability/langfuse_integration
62-
create_params[:metadata] = metadata if metadata
61+
# See: https://docs.litellm.ai/docs/observability/langfuse_integration
62+
if metadata && metadata.is_a?(Hash)
63+
metadata_hash = metadata.deep_transform_values { |val| val.to_s.to_sym == :agent_name ? agent&.name : val }
64+
create_params[:metadata] = metadata_hash
65+
end
6366

6467
# TODO: https://platform.openai.com/docs/guides/function-calling/how-do-functions-differ-from-tools
6568
# create_params[:functions] = tools unless tools.empty?

lib/ruby-openai-swarm/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module OpenAISwarm
2-
VERSION = "0.5.2"
2+
VERSION = "0.5.3"
33
end

ruby-openai-swarm.gemspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
2323
spec.require_paths = ["lib"]
2424
spec.add_dependency "ruby-openai", ">= 7.3", "< 9.0"
2525
spec.add_dependency "ostruct"
26+
spec.add_dependency "activesupport"
2627
spec.add_development_dependency "rspec", "~> 3.0"
2728
spec.add_development_dependency "rake", "~> 13.0"
2829
spec.add_development_dependency "pry"

spec/lib/ruby-openai-swarm/core_spec.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,25 @@
4848
)
4949
end
5050

51+
it 'transforms var_agent_name in metadata to actual agent name' do
52+
core = described_class.new(client)
53+
metadata_with_var = { user_id: 123, agent_name: :agent_name }
54+
55+
expect(client).to receive(:chat) do |params|
56+
expect(params[:parameters][:metadata]).to eq({
57+
user_id: 123,
58+
agent_name: "TestAgent"
59+
})
60+
chat_response
61+
end
62+
63+
core.run(
64+
agent: agent,
65+
messages: messages,
66+
metadata: metadata_with_var
67+
)
68+
end
69+
5170
it 'works without metadata' do
5271
core = described_class.new(client)
5372

0 commit comments

Comments
 (0)