Class: LLM::Tracer::Langsmith
Overview
LangSmith-specific tracer built on top of Telemetry. Supports
extra inputs/outputs and metadata on traces and spans via
#merge_extra
and #start_trace(metadata:).
Constant Summary collapse
-
:llm_langsmith_extra
- UUID =
-
/\A
[0-9a-f]{8}-
[0-9a-f]{4}-
[1-5][0-9a-f]{3}-
[89ab][0-9a-f]{3}-
[0-9a-f]{12}
\z/ix
Constants inherited from LLM::Tracer
FINISH_METADATA_PROC_KEY
Instance Method Summary collapse
Methods inherited from Telemetry
#flush!, #on_request_error,
#on_request_finish,
#on_request_start,
#on_tool_error,
#on_tool_finish,
#on_tool_start,
#spans
Methods inherited from LLM::Tracer
#consume_request_metadata,
#flush!, #inspect, #on_request_error,
#on_request_finish,
#on_request_start,
#on_tool_error,
#on_tool_finish,
#on_tool_start,
#set_finish_metadata_proc,
#set_request_metadata,
#spans
Constructor Details
#initialize(provider, options = {}) ⇒
Langsmith
Returns a new instance of Langsmith.
37
38
39
40
|
# File 'lib/llm/tracer/langsmith.rb', line 37
def initialize(provider, options = {})
super
setup_langsmith!(options)
end
|
Instance Method Details
52
53
54
55
56
57
58
|
# File 'lib/llm/tracer/langsmith.rb', line 52
def (metadata: nil, inputs: nil, outputs: nil)
store =
store[:metadata].merge!(metadata) if metadata && !metadata.empty?
store[:inputs].merge!(inputs) if inputs && !inputs.empty?
store[:outputs].merge!(outputs) if outputs && !outputs.empty?
self
end
|
#start_trace(trace_group_id: nil, name: "llm",
attributes: {}, metadata: nil) ⇒ Object
42
43
44
45
|
# File 'lib/llm/tracer/langsmith.rb', line 42
def start_trace(trace_group_id: nil, name: "llm", attributes: {}, metadata: nil)
(metadata: metadata) if metadata && !metadata.empty?
super
end
|
#stop_trace ⇒ Object
47
48
49
50
|
# File 'lib/llm/tracer/langsmith.rb', line 47
def stop_trace
super
end
|
60
61
62
63
64
65
66
67
|
# File 'lib/llm/tracer/langsmith.rb', line 60
def
store =
{
metadata: store[:metadata].dup,
inputs: store[:inputs].dup,
outputs: store[:outputs].dup
}
end
|
69
70
71
|
# File 'lib/llm/tracer/langsmith.rb', line 69
def
[:inputs].tap { [:inputs] = {} }
end
|
73
74
75
|
# File 'lib/llm/tracer/langsmith.rb', line 73
def
[:outputs].tap { [:outputs] = {} }
end
|