-
Notifications
You must be signed in to change notification settings - Fork 86
Expand file tree
/
Copy pathtelemetry.py
More file actions
87 lines (63 loc) · 2.35 KB
/
telemetry.py
File metadata and controls
87 lines (63 loc) · 2.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
from opentelemetry import trace
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from xai_sdk import Client
from xai_sdk.chat import user
from xai_sdk.telemetry import Telemetry
def no_telemetry_example(client: Client):
"""
Example without telemetry - no traces will be collected.
"""
chat = client.chat.create(model="grok-3")
chat.append(user("Hello, how are you?"))
response = chat.sample()
print(f"Response: {response.content}")
def console_export_example(client: Client):
"""
Export traces to console for debugging and development.
"""
telemetry = Telemetry()
telemetry.setup_console_exporter()
chat = client.chat.create(model="grok-3")
chat.append(user("Hello, how are you?"))
response = chat.sample()
print(f"Response: {response.content}")
def otlp_export_example(client: Client):
"""
Export traces to an OTLP-compatible backend.
This example respects OpenTelemetry environment variables:
- OTEL_EXPORTER_OTLP_PROTOCOL (default: "http/protobuf")
- OTEL_EXPORTER_OTLP_ENDPOINT
- OTEL_EXPORTER_OTLP_HEADERS
"""
telemetry = Telemetry()
telemetry.setup_otlp_exporter()
chat = client.chat.create(model="grok-3")
chat.append(user("Hello, how are you?"))
response = chat.sample()
print(f"Response: {response.content}")
def custom_tracer_provider_example(client: Client):
"""
Example using a custom TracerProvider, useful for applications that already have a TracerProvider.
"""
tracer_provider = TracerProvider(resource=Resource.create({"service.name": "xai-sdk-example"}))
trace.set_tracer_provider(tracer_provider)
telemetry = Telemetry(tracer_provider)
telemetry.setup_otlp_exporter()
chat = client.chat.create(model="grok-3")
chat.append(user("Hello, how are you?"))
response = chat.sample()
print(f"Response: {response.content}")
def main():
client = Client()
# Uncomment the example you want to run:
# No telemetry (baseline)
# no_telemetry_example(client)
# Console export (for debugging)
console_export_example(client)
# OTLP export (make sure you have the relevant environment variables set)
# otlp_export_example(client)
# Custom tracer provider
# custom_tracer_provider_example(client)
if __name__ == "__main__":
main()