| 1 | # trace_example.py |
| 2 | from opentelemetry import trace |
| 3 | from opentelemetry.sdk.trace import TracerProvider |
| 4 | from opentelemetry.sdk.trace.export import BatchSpanProcessor, ConsoleSpanExporter |
| 5 | from opentelemetry.sdk.resources import Resource |
| 6 | from nemoguardrails import LLMRails, RailsConfig |
| 7 | |
| 8 | # Configure OpenTelemetry |
| 9 | resource = Resource.create({"service.name": "guardrails-quickstart"}) |
| 10 | tracer_provider = TracerProvider(resource=resource) |
| 11 | trace.set_tracer_provider(tracer_provider) |
| 12 | tracer_provider.add_span_processor(BatchSpanProcessor(ConsoleSpanExporter())) |
| 13 | |
| 14 | # Configure guardrails with tracing |
| 15 | config_yaml = """ |
| 16 | models: |
| 17 | - type: main |
| 18 | engine: openai |
| 19 | model: gpt-4o-mini |
| 20 | |
| 21 | rails: |
| 22 | config: |
| 23 | streaming: true |
| 24 | |
| 25 | tracing: |
| 26 | enabled: true |
| 27 | adapters: |
| 28 | - name: OpenTelemetry |
| 29 | """ |
| 30 | |
| 31 | config = RailsConfig.from_content(yaml_content=config_yaml) |
| 32 | rails = LLMRails(config) |
| 33 | response = rails.generate(messages=[{"role": "user", "content": "Hello!"}]) |
| 34 | print(f"Response: {response}") |