# Decorate an LLM call
@tracer.llm
def call_llm(prompt: str) -> str:
return client.completions.create(prompt=prompt)
# With custom processors
@tracer.llm(
process_input=lambda prompt: {"llm.input_messages": [{"role": "user", "content": prompt}]},
process_output=lambda response: {"llm.output_messages": [{"role": "assistant", "content": response}]}
)
def call_llm(prompt: str) -> str:
return client.completions.create(prompt=prompt)
# Streaming support
@tracer.llm
def stream_llm(prompt: str):
for chunk in client.completions.create(prompt=prompt, stream=True):
yield chunk