From 15e96303ef20d5886afa150566434fc1ea02efc8 Mon Sep 17 00:00:00 2001 From: Jiayi Zheng Date: Tue, 8 Jul 2025 19:56:53 +0200 Subject: [PATCH 1/2] Add method in langfuce tracer for updating a trace with output --- lib/llm_eval_ruby/api_clients/langfuse.rb | 9 +++++++++ lib/llm_eval_ruby/trace_adapters/langfuse.rb | 9 +++++++++ lib/llm_eval_ruby/tracer.rb | 8 ++++++++ 3 files changed, 26 insertions(+) diff --git a/lib/llm_eval_ruby/api_clients/langfuse.rb b/lib/llm_eval_ruby/api_clients/langfuse.rb index d0a2b8a..0316aa4 100644 --- a/lib/llm_eval_ruby/api_clients/langfuse.rb +++ b/lib/llm_eval_ruby/api_clients/langfuse.rb @@ -35,6 +35,15 @@ def create_trace(params = {}) create_event(type: "trace-create", body:) end + def update_trace(params = {}) + body = { + id: params[:id], + output: params[:output] + } + # WARNING! trace-create is used for update as well they do upsert if id is provided + create_event(type: "trace-create", body:) + end + def create_span(params = {}) body = { id: params[:id], diff --git a/lib/llm_eval_ruby/trace_adapters/langfuse.rb b/lib/llm_eval_ruby/trace_adapters/langfuse.rb index ec45070..e7b93d6 100644 --- a/lib/llm_eval_ruby/trace_adapters/langfuse.rb +++ b/lib/llm_eval_ruby/trace_adapters/langfuse.rb @@ -17,6 +17,15 @@ def trace(**kwargs) trace end + def update_trace(**kwargs) + trace = TraceTypes::Trace.new(**kwargs) + response = client.update_trace(trace.to_h) + + logger.warn "Failed to update trace" if response["successes"].blank? + + trace + end + def span(**kwargs) span = TraceTypes::Span.new(id: SecureRandom.uuid, **kwargs) response = client.create_span(span.to_h) diff --git a/lib/llm_eval_ruby/tracer.rb b/lib/llm_eval_ruby/tracer.rb index 18b2d1d..06c97f2 100644 --- a/lib/llm_eval_ruby/tracer.rb +++ b/lib/llm_eval_ruby/tracer.rb @@ -11,6 +11,10 @@ def self.trace(...) new(adapter: LlmEvalRuby.config.adapter).trace(...) end + def self.update_trace(...) + new(adapter: LlmEvalRuby.config.adapter).update_trace(...) + end + def self.span(...) new(adapter: LlmEvalRuby.config.adapter).span(...) end @@ -38,6 +42,10 @@ def trace(...) adapter.trace(...) end + def update_trace(...) + adapter.update_trace(...) + end + def span(...) adapter.span(...) end From 844016c00922a404160660c7baa25a7e30c8a1e5 Mon Sep 17 00:00:00 2001 From: Jiayi Zheng Date: Tue, 8 Jul 2025 20:02:54 +0200 Subject: [PATCH 2/2] Add update_trace to local adapter to not break it --- lib/llm_eval_ruby/trace_adapters/local.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/llm_eval_ruby/trace_adapters/local.rb b/lib/llm_eval_ruby/trace_adapters/local.rb index 567f68a..db84e5e 100644 --- a/lib/llm_eval_ruby/trace_adapters/local.rb +++ b/lib/llm_eval_ruby/trace_adapters/local.rb @@ -14,6 +14,14 @@ def trace(**kwargs) trace end + def update_trace(**kwargs) + trace = TraceTypes::Trace.new(id: SecureRandom.uuid, **kwargs) + + logger.info("Trace updated: #{JSON.pretty_generate(trace.to_h)}") + + trace + end + def span(**kwargs) span = TraceTypes::Span.new(id: SecureRandom.uuid, **kwargs)