Class: LLM::Tracer::Logger

Inherits:
LLM::Tracer show all
Defined in:
lib/llm/tracer/logger.rb

Overview

The LLM::Tracer::Logger class provides a tracer that provides logging facilities through Ruby's standard library.

Examples:

llm = LLM.openai(key: ENV["KEY"])
# Log to a file
llm.tracer = LLM::Tracer::Logger.new(llm, path: "/tmp/log.txt")
# Log to $stdout (default)
llm.tracer = LLM::Tracer::Logger.new(llm, io: $stdout)

Instance Method Summary collapse

Methods inherited from LLM::Tracer

#flush!, #inspect, #spans

Constructor Details

#initialize(provider, options = {}) ⇒ Logger

Returns a new instance of Logger.

Parameters:

  • provider (LLM::Provider)

    A provider

  • options (Hash) (defaults to: {})

    A hash of options



18
19
20
21
# File 'lib/llm/tracer/logger.rb', line 18

def initialize(provider, options = {})
  super
  setup!(**options)
end

Instance Method Details

#on_request_error(ex:) ⇒ void

This method returns an undefined value.

Parameters:



48
49
50
51
52
53
54
55
56
# File 'lib/llm/tracer/logger.rb', line 48

def on_request_error(ex:, **)
  @logger.error(
    tracer: "llm.rb (logger)",
    event: "request.error",
    provider: provider_name,
    error_class: ex.class.to_s,
    error_message: ex.message
  )
end

#on_request_start(operation:, model: nil) ⇒ void

This method returns an undefined value.

Parameters:

  • operation (String)
  • model (String) (defaults to: nil)


26
27
28
29
30
31
32
# File 'lib/llm/tracer/logger.rb', line 26

def on_request_start(operation:, model: nil)
  case operation
  when "chat" then start_chat(operation:, model:)
  when "retrieval" then start_retrieval(operation:)
  else nil
  end
end

#on_request_finish(operation:, res:, model: nil) ⇒ void

This method returns an undefined value.

Parameters:



37
38
39
40
41
42
43
# File 'lib/llm/tracer/logger.rb', line 37

def on_request_finish(operation:, res:, model: nil, **)
  case operation
  when "chat" then finish_chat(operation:, res:, model:)
  when "retrieval" then finish_retrieval(operation:, res:)
  else nil
  end
end

#on_tool_start(id:, name:, arguments:, model:) ⇒ void

This method returns an undefined value.

Parameters:

  • id (String)

    The tool call ID assigned by the model/provider

  • name (String)

    The tool (function) name.

  • arguments (Hash)

    The parsed tool arguments.

  • model (String)

    The model name



61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/llm/tracer/logger.rb', line 61

def on_tool_start(id:, name:, arguments:, model:, **)
  @logger.info(
    tracer: "llm.rb (logger)",
    event: "tool.start",
    provider: provider_name,
    operation: "execute_tool",
    tool_id: id,
    tool_name: name,
    tool_arguments: arguments,
    model:
  )
end

#on_tool_finish(result:) ⇒ void

This method returns an undefined value.

Parameters:



77
78
79
80
81
82
83
84
85
86
87
# File 'lib/llm/tracer/logger.rb', line 77

def on_tool_finish(result:, **)
  @logger.info(
    tracer: "llm.rb (logger)",
    event: "tool.finish",
    provider: provider_name,
    operation: "execute_tool",
    tool_id: result.id,
    tool_name: result.name,
    tool_result: result.value
  )
end

#on_tool_error(ex:) ⇒ void

This method returns an undefined value.

Parameters:

  • ex (Exception)

    The raised error.

  • span (Object, nil)

    The span/context object returned by #on_tool_start.



92
93
94
95
96
97
98
99
100
101
# File 'lib/llm/tracer/logger.rb', line 92

def on_tool_error(ex:, **)
  @logger.error(
    tracer: "llm.rb (logger)",
    event: "tool.error",
    provider: provider_name,
    operation: "execute_tool",
    error_class: ex.class.to_s,
    error_message: ex.message
  )
end