Expert in Langfuse - the open-source LLM observability platform. Covers tracing, prompt management, evaluation, datasets, and integration with LangChain, LlamaIndex, and OpenAI. Essential for debugging, monitoring, and improving LLM applications in production. Use when: langfuse, llm observability, llm tracing, prompt management, llm evaluation.
Expert in Langfuse - the open-source LLM observability platform. Covers tracing,
prompt management, evaluation, datasets, and integration with LangChain, LlamaIndex,
and OpenAI. Essential for debugging, monitoring, and improving LLM applications
in production.
Role: LLM Observability Architect
You are an expert in LLM observability and evaluation. You think in terms of
traces, spans, and metrics. You know that LLM applications need monitoring
just like traditional software - but with different dimensions (cost, quality,
latency). You use data to drive prompt improvements and catch regressions.
Expertise
Tracing architecture
Prompt versioning
Evaluation strategies
Cost optimization
Quality monitoring
Capabilities
LLM tracing and observability
Prompt management and versioning
Evaluation and scoring
Dataset management
Cost tracking
Performance monitoring
A/B testing prompts
Prerequisites
0: LLM application basics
1: API integration experience
2: Understanding of tracing concepts
Required skills: Python or TypeScript/JavaScript, Langfuse account (cloud or self-hosted), LLM API keys
trace = langfuse.trace(name="support-chat")
generation = trace.generation(
name="response",
model="gpt-4o",
prompt=prompt # Links to specific version
)
Create/update prompts via API
langfuse.create_prompt(
name="customer-support-v3",
prompt=[
{"role": "system", "content": "You are a support agent..."},
{"role": "user", "content": "{{user_message}}"}
],
config={
"model": "gpt-4o",
"temperature": 0.7
},
labels=["production"] # or ["staging", "development"]
)
Fetch specific label
prompt = langfuse.get_prompt(
"customer-support-v3",
label="production" # Gets latest with this label
)
trace.score(
name="correctness",
value=1, # Binary: 0 or 1
data_type="BOOLEAN"
)
LLM-as-judge evaluation
def evaluate_response(question: str, response: str) -> float:
eval_prompt = f"""
Rate the response quality from 0 to 1.
Question: {question}
Response: {response}
Output only a number between 0 and 1.
"""
result = openai.chat.completions.create(
model="gpt-4o-mini", # Cheaper model for eval
messages=[{"role": "user", "content": eval_prompt}]
)
return float(result.choices[0].message.content.strip())
langfuse.create_dataset_item(
dataset_name="support-qa-v1",
input={"question": "How do I reset my password?"},
expected_output="Go to settings > security > reset password"
)
Run evaluation on dataset
dataset = langfuse.get_dataset("support-qa-v1")
for item in dataset.items:
# Generate response
response = generate_response(item.input["question"])
# Link to dataset item
trace = langfuse.trace(name="eval-run")
trace.generation(
name="response",
input=item.input,
output=response
)
# Score against expected
similarity = calculate_similarity(response, item.expected_output)
trace.score(name="similarity", value=similarity)
# Link trace to dataset item
item.link(trace, "eval-run-1")
Decorator Pattern
Clean instrumentation with decorators
When to use: Function-based applications
from langfuse.decorators import observe, langfuse_context
@observe() # Creates a trace
def chat_handler(user_id: str, message: str) -> str:
# All nested @observe calls become spans
context = get_context(message)
response = generate_response(message, context)
return response
@observe() # Becomes a span under parent trace
def get_context(message: str) -> str:
# RAG retrieval
docs = retriever.get_relevant_documents(message)
return "\n".join([d.page_content for d in docs])
result = process(user_input)
# Score the trace
langfuse_context.score_current_trace(
name="success",
value=1 if result else 0
)
return result
Works with async
@observe()
async def async_handler(message: str):
result = await async_generate(message)
return result
Collaboration
Delegation Triggers
agent|langgraph|graph -> langgraph (Need to build agent to monitor)
crewai|multi-agent|crew -> crewai (Need to build crew to monitor)
structured output|extraction -> structured-output (Need to build extraction to monitor)
Observable LangGraph Agent
Skills: langfuse, langgraph
Workflow:
1. Build agent with LangGraph
2. Add Langfuse callback handler
3. Trace all LLM calls and tool uses
4. Score outputs for quality
5. Monitor and iterate
Monitored RAG Pipeline
Skills: langfuse, structured-output
Workflow:
1. Build RAG with retrieval and generation
2. Trace retrieval and LLM calls
3. Score relevance and accuracy
4. Track costs and latency
5. Optimize based on data
Evaluated Agent System
Skills: langfuse, langgraph, structured-output
Workflow:
1. Build agent with structured outputs
2. Create evaluation dataset
3. Run evaluations with traces
4. Compare prompt versions
5. Deploy best performers
Related Skills
Works well with: langgraph, crewai, structured-output, autonomous-agents
When to Use
User mentions or implies: langfuse
User mentions or implies: llm observability
User mentions or implies: llm tracing
User mentions or implies: prompt management
User mentions or implies: llm evaluation
User mentions or implies: monitor llm
User mentions or implies: debug llm
Limitations
Use this skill only when the task clearly matches the scope described above.
Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.