Skip to main content

OpenTelemetry instrumentation for Cerebras Cloud SDK

Project description

TraceAI Cerebras Instrumentation

OpenTelemetry instrumentation for Cerebras Cloud SDK, enabling comprehensive observability for Cerebras LLM API calls.

Installation

pip install traceai-cerebras

For full functionality, also install the Cerebras SDK:

pip install cerebras-cloud-sdk

Quick Start

from fi_instrumentation import register
from fi_instrumentation.fi_types import ProjectType
from traceai_cerebras import CerebrasInstrumentor

# Setup TraceAI
trace_provider = register(
    project_type=ProjectType.OBSERVE,
    project_name="cerebras-app",
)

# Instrument Cerebras
CerebrasInstrumentor().instrument(tracer_provider=trace_provider)

# Now use Cerebras normally
from cerebras.cloud.sdk import Cerebras

client = Cerebras()
response = client.chat.completions.create(
    model="llama3.1-8b",
    messages=[{"role": "user", "content": "What is machine learning?"}]
)
print(response.choices[0].message.content)

Features

Chat Completions Tracing

Automatically captures:

  • Model name and parameters
  • Input messages
  • Output responses
  • Token usage (prompt, completion, total)
  • Cerebras-specific time_info metrics

Streaming Support

Full support for streaming responses with:

  • Content aggregation
  • Chunk-by-chunk tracing
  • Final usage metrics from last chunk

Cerebras-Specific Metrics

Captures Cerebras time_info for performance analysis:

  • cerebras.queue_time - Time spent in queue
  • cerebras.prompt_time - Time for prompt processing
  • cerebras.completion_time - Time for completion generation
  • cerebras.total_time - Total request time

Span Attributes

Request Attributes

Attribute Description
gen_ai.system Always "cerebras"
gen_ai.request.model Requested model (e.g., "llama3.1-8b")
gen_ai.request.max_tokens Maximum tokens requested
gen_ai.request.temperature Temperature setting
gen_ai.request.top_p Top-p sampling parameter
gen_ai.prompt.{i}.role Role of input message
gen_ai.prompt.{i}.content Content of input message

Response Attributes

Attribute Description
gen_ai.response.model Model that generated response
gen_ai.completion.{i}.role Role of output message
gen_ai.completion.{i}.content Content of output message
gen_ai.usage.input_tokens Prompt token count
gen_ai.usage.output_tokens Completion token count
gen_ai.usage.total_tokens Total token count

Cerebras-Specific Attributes

Attribute Description
cerebras.queue_time Time in queue (seconds)
cerebras.prompt_time Prompt processing time (seconds)
cerebras.completion_time Completion generation time (seconds)
cerebras.total_time Total request time (seconds)

Configuration

Basic Configuration

from traceai_cerebras import CerebrasInstrumentor

CerebrasInstrumentor().instrument()

With Custom Tracer Provider

from fi_instrumentation import register
from fi_instrumentation.fi_types import ProjectType
from traceai_cerebras import CerebrasInstrumentor

provider = register(
    project_type=ProjectType.OBSERVE,
    project_name="my-cerebras-app",
)

CerebrasInstrumentor().instrument(tracer_provider=provider)

With Trace Config

from fi_instrumentation import TraceConfig
from traceai_cerebras import CerebrasInstrumentor

config = TraceConfig(
    mask_input=True,  # Mask input content
    mask_output=True,  # Mask output content
)

CerebrasInstrumentor().instrument(config=config)

Examples

Basic Chat Completion

from cerebras.cloud.sdk import Cerebras

client = Cerebras()
response = client.chat.completions.create(
    model="llama3.1-8b",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Explain quantum computing."}
    ],
    max_tokens=500,
    temperature=0.7,
)

print(response.choices[0].message.content)

Streaming Response

from cerebras.cloud.sdk import Cerebras

client = Cerebras()
stream = client.chat.completions.create(
    model="llama3.1-8b",
    messages=[{"role": "user", "content": "Write a short story."}],
    stream=True,
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

Async Usage

import asyncio
from cerebras.cloud.sdk import AsyncCerebras

async def main():
    client = AsyncCerebras()
    response = await client.chat.completions.create(
        model="llama3.1-8b",
        messages=[{"role": "user", "content": "Hello!"}],
    )
    print(response.choices[0].message.content)

asyncio.run(main())

Supported Models

  • llama3.1-8b
  • llama3.1-70b
  • And other Cerebras-hosted models

Requirements

  • Python >= 3.9
  • cerebras-cloud-sdk >= 1.0.0
  • opentelemetry-api >= 1.0.0
  • opentelemetry-sdk >= 1.0.0
  • fi-instrumentation >= 0.1.0

License

Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

traceai_cerebras-0.1.0.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

traceai_cerebras-0.1.0-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file traceai_cerebras-0.1.0.tar.gz.

File metadata

  • Download URL: traceai_cerebras-0.1.0.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for traceai_cerebras-0.1.0.tar.gz
Algorithm Hash digest
SHA256 14ba18a7a629edfae22a5cfde9caffa3854d5b9b66052b60a409ba485ba0d649
MD5 3f217fbe496438a9e81dee60104e10e8
BLAKE2b-256 ab4519ba8f049eda1e8819fc1896b9c28b1aab780a596ae5548508a67b71ac06

See more details on using hashes here.

File details

Details for the file traceai_cerebras-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: traceai_cerebras-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for traceai_cerebras-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9bd90bbc7399e41489c73debfa911af84a71ca147b58f792de7f1356d161c8c6
MD5 caffeb1b93e1cff3c6d5fac5e42b72eb
BLAKE2b-256 35e920522021f43f14f65529e40a67c2a71030553d3ec6d58c8ab7a6d778d216

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page