from respan_tracing.decorators import workflow, task
from respan_tracing.contexts.span import respan_span_attributes
from respan_tracing.main import RespanTelemetry
from openai import OpenAI
k_tl = RespanTelemetry()
client = OpenAI()
@task(name="joke_creation")
def create_joke():
completion = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Tell me a joke about opentelemetry"}],
)
return completion.choices[0].message.content
@workflow(name="joke_workflow")
def joke_workflow():
with respan_span_attributes(
respan_params={
"customer_params": {
"customer_identifier": "user_123",
"name": "John Doe",
"email": "john@example.com"
},
"metadata": {
"env": "production",
"language": "en",
"feature": "chat_support"
},
"custom_identifier": "ticket_789",
"thread_identifier": "thread_abc",
"group_identifier": "group_001",
"trace_group_identifier": "workflow_group_456"
}
):
joke = create_joke()
return joke
result = joke_workflow()
print(result)