traceloop-sdk 0.0.1 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/traceloop/sdk.rb +32 -7
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0f9a52a33ec9fa98e0585bd79a9ba94226f3b905b2d99531554dcbcb20636b53
4
- data.tar.gz: 4266d880d4f62c937bcb3d2c3d36c294f25a27c6a111aa22d965aa556ed76a23
3
+ metadata.gz: 50c7d784c78f716b3416a3143d25a8dfaa0c406a16bbcd10342082a63d93f074
4
+ data.tar.gz: 26543e0a8ad9b85e4746b338fb086aad27963e23d8279e4548beb12d13629c1c
5
5
  SHA512:
6
- metadata.gz: 9358cc8b3eb112a37330df529d8b8ab3bcffc7d3c6a437f61c8d90c2f4f23c3dc494fb440d79abdaa6162f59f5e5a97ddd3099823187aa26284f3cb5bfb2712b
7
- data.tar.gz: b2f6cb79c744ae964c4c3c614be1493234080e7e5ce40266eb5730222d8c22576b49e6b341f95c27a7b8e5498170556bc248865b154f67fa8bab1e18b4fb2917
6
+ metadata.gz: 3b4bf642d9f3f412637bafd75cb5a56d6f499a0eb8853113a2c3b37ae3ddb61ab0c92275cc170253df689c305a6e56984008a35be0782bfc122df713a7e7ea66
7
+ data.tar.gz: cda39a259b39a44d895373b820bc269da1711f2f7cd6618176f3508d6b4047b0bfc2998492225111651fdca35b799306747a047259a85468ec3288dab0407771
data/lib/traceloop/sdk.rb CHANGED
@@ -23,21 +23,43 @@ module Traceloop
23
23
  end
24
24
 
25
25
  class Tracer
26
- def initialize(span)
26
+ def initialize(span, provider, model)
27
27
  @span = span
28
+ @provider = provider
29
+ @model = model
28
30
  end
29
31
 
30
32
  def log_prompt(model, system_prompt="", user_prompt)
31
33
  @span.add_attributes({
32
- OpenTelemetry::SemanticConventionsAi::SpanAttributes::LLM_REQUEST_MODEL => model,
33
34
  "#{OpenTelemetry::SemanticConventionsAi::SpanAttributes::LLM_PROMPTS}.0.role" => "system",
34
35
  "#{OpenTelemetry::SemanticConventionsAi::SpanAttributes::LLM_PROMPTS}.0.content" => system_prompt,
35
- "#{OpenTelemetry::SemanticConventionsAi::SpanAttributes::LLM_PROMPTS}.0.role" => "user",
36
- "#{OpenTelemetry::SemanticConventionsAi::SpanAttributes::LLM_PROMPTS}.0.content" => user_prompt
36
+ "#{OpenTelemetry::SemanticConventionsAi::SpanAttributes::LLM_PROMPTS}.1.role" => "user",
37
+ "#{OpenTelemetry::SemanticConventionsAi::SpanAttributes::LLM_PROMPTS}.1.content" => user_prompt
37
38
  })
38
39
  end
39
40
 
40
41
  def log_response(response)
42
+ # This is Gemini specific, see -
43
+ # https://github.com/gbaptista/gemini-ai?tab=readme-ov-file#generate_content
44
+ if response.has_key?("candidates")
45
+ log_gemini_response(response)
46
+ else
47
+ log_openai_response(response)
48
+ end
49
+ end
50
+
51
+ def log_gemini_response(response)
52
+ @span.add_attributes({
53
+ OpenTelemetry::SemanticConventionsAi::SpanAttributes::LLM_RESPONSE_MODEL => @model,
54
+ })
55
+
56
+ @span.add_attributes({
57
+ "#{OpenTelemetry::SemanticConventionsAi::SpanAttributes::LLM_COMPLETIONS}.0.role" => "assistant",
58
+ "#{OpenTelemetry::SemanticConventionsAi::SpanAttributes::LLM_COMPLETIONS}.0.content" => response.dig("candidates", 0, "content", "parts", 0, "text")
59
+ })
60
+ end
61
+
62
+ def log_openai_response(response)
41
63
  @span.add_attributes({
42
64
  OpenTelemetry::SemanticConventionsAi::SpanAttributes::LLM_RESPONSE_MODEL => response.dig("model"),
43
65
  })
@@ -57,9 +79,12 @@ module Traceloop
57
79
  end
58
80
  end
59
81
 
60
- def llm_call
61
- @tracer.in_span("openai.chat") do |span|
62
- yield Tracer.new(span)
82
+ def llm_call(provider, model)
83
+ @tracer.in_span("#{provider}.chat") do |span|
84
+ span.add_attributes({
85
+ OpenTelemetry::SemanticConventionsAi::SpanAttributes::LLM_REQUEST_MODEL => model,
86
+ })
87
+ yield Tracer.new(span, provider, model)
63
88
  end
64
89
  end
65
90
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: traceloop-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Traceloop
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-03 00:00:00.000000000 Z
11
+ date: 2024-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opentelemetry-semantic_conventions_ai