Πρακτική σύγκριση των LangSmith, Langfuse, Helicone και Arize Phoenix για LLM observability το 2026, με Python παραδείγματα, evals και production checklist.
Το LLM observability είναι η πρακτική καταγραφής, ιχνηλάτησης (tracing) και αξιολόγησης κάθε κλήσης σε ένα μοντέλο γλώσσας στην παραγωγή, ώστε να βλέπεις latency, κόστος, ποιότητα απαντήσεων και αποτυχίες σε εργαλεία. Το 2026, τα τέσσερα κορυφαία frameworks είναι το LangSmith, το Langfuse, το Helicone και το Arize Phoenix. Σε αυτόν τον οδηγό συγκρίνω τα τέσσερα με κώδικα Python που τρέχει, εξηγώ πότε αξίζει self-hosting, και δείχνω πώς στήνεις evals που σου λένε όντως αν το pipeline σου σπάει.
Το LangSmith είναι η πιο ομαλή επιλογή αν ήδη χρησιμοποιείς LangChain/LangGraph, αλλά είναι κλειστό SaaS.
Το Langfuse v3 (Νοέμβριος 2025) είναι open-source, self-hostable και προσφέρει tracing, evals και prompt management σε ένα dashboard.
Το Helicone είναι το γρηγορότερο σε ενσωμάτωση: μια αλλαγή στο base_url και έχεις logs, caching και rate limits.
Το Arize Phoenix χτίζεται πάνω σε OpenTelemetry, ιδανικό για ομάδες που θέλουν να ενοποιήσουν LLM traces με υπάρχον APM (Datadog, Grafana).
Σε production, χρειάζεσαι sampling, PII redaction και offline datasets για regression testing. Όχι μόνο "ωραία γραφήματα".
Το κόστος ενός λάθος επιλεγμένου εργαλείου το πληρώνεις σε egress δεδομένων και vendor lock-in, όχι σε λίστα τιμών.
Τι είναι το LLM observability και γιατί το χρειάζεσαι;
Το LLM observability είναι η αντίστοιχη εξέλιξη του application monitoring για συστήματα που χρησιμοποιούν μοντέλα γλώσσας. Όταν τρέχεις ένα κλασικό REST API, τα logs σου περιγράφουν αιτήματα, status codes και latency. Όταν, όμως, τρέχεις ένα agent που κάνει function calling, RAG retrieval και πολλαπλά βήματα reasoning, χρειάζεσαι κάτι παραπάνω: ένα trace tree που δείχνει τι ζητήθηκε από το μοντέλο, ποια εργαλεία κλήθηκαν, τι επιστράφηκε από κάθε vector store, και πόσα tokens κατανάλωσε κάθε βήμα.
Σε δικό μου project agent customer support πέρυσι, ένα bug στο prompt template πέρασε σε production για 6 ώρες πριν το προσέξουμε από καταγγελίες χρηστών. Με σωστό observability θα το είχαμε δει στα 5 πρώτα λεπτά, αφού το eval score για "groundedness" είχε πέσει από 0.91 σε 0.34. Από τότε, κάθε agent που στήνω ξεκινά με observability πριν γραφτεί η πρώτη γραμμή production logic. Αν δουλεύεις με ενορχήστρωση πολλαπλών πρακτόρων AI, αυτό γίνεται μη διαπραγματεύσιμο. Δεν υπάρχει άλλος τρόπος να καταλάβεις γιατί ο agent 3 παίρνει λάθος απόφαση όταν τον ταΐσει ο agent 2.
Τα τέσσερα frameworks που συγκρίνω εδώ καλύπτουν τις βασικές περιοχές: tracing (ποια βήματα έκανε το pipeline), token & cost tracking, prompt versioning, evaluations (offline και online), και dataset management για regression testing.
Σύγκριση: LangSmith vs Langfuse vs Helicone vs Phoenix
Ο παρακάτω πίνακας συνοψίζει τις πραγματικές διαφορές που θα νιώσεις όταν στήνεις production, όχι τις λίστες χαρακτηριστικών στα marketing pages. Οι τιμές και τα όρια δωρεάν tier αφορούν Ιούνιο 2026.
Χαρακτηριστικό
LangSmith
Langfuse v3
Helicone
Phoenix
Άδεια χρήσης
Closed SaaS
MIT (open-source)
Apache 2.0
Elastic v2 (open-source)
Self-hosting
Enterprise μόνο
Ναι, Docker/Helm
Ναι, Docker
Ναι, native
Δωρεάν tier
5.000 traces/μήνα
50.000 events/μήνα (cloud)
10.000 requests/μήνα
Πλήρως δωρεάν (self-hosted)
Ενσωμάτωση
SDK (Python/JS)
SDK + OpenTelemetry
Proxy (base_url swap)
OpenTelemetry / OpenInference
Prompt management
Ναι, με versions
Ναι, με A/B testing
Βασικό
Όχι (μέσω datasets)
Built-in evals
LLM-as-judge + custom
LLM-as-judge, code, human
Custom μόνο
Πλούσιο (Ragas-style)
Caching
Όχι
Όχι
Ναι, semantic
Όχι
Καλύτερο για
LangChain ομάδες
Self-hosted + GDPR
Γρήγορο start, cost focus
Datadog/OTEL ομάδες
LangSmith: ενσωμάτωση με Python
Το LangSmith είναι το κανονικό μονοπάτι αν ήδη χρησιμοποιείς LangChain ή LangGraph. Η ενσωμάτωση είναι σχεδόν μηδενική: ορίζεις δύο environment variables και κάθε Runnable καταγράφεται αυτόματα. Για κώδικα εκτός LangChain, χρησιμοποιείς τον decorator @traceable.
Κάθε κλήση του answer_question εμφανίζεται στο LangSmith dashboard με input, output, latency και cost. Αν το answer_question καλέσει άλλη @traceable συνάρτηση (π.χ. retrieval), δημιουργείται nested span, ακριβώς το trace tree που χρειάζεσαι για debugging σε agents πολλαπλών βημάτων.
Πότε δεν θα διάλεγα LangSmith
Αν η εταιρεία σου έχει αυστηρές απαιτήσεις GDPR ή θέλει να κρατήσει τα data on-prem χωρίς enterprise συμβόλαιο, το LangSmith δυσκολεύει. Επίσης, το pricing κλιμακώνεται γρήγορα όταν τρέχεις δεκάδες εκατομμύρια traces τον μήνα. Γι' αυτό σε υψηλά volumes συχνά μεταναστεύουμε σε Langfuse.
Langfuse: self-hosted tracing με decorators
Το Langfuse είναι αυτό που πρότεινα στις τελευταίες τρεις ομάδες με τις οποίες δούλεψα. Open-source, τρέχει με ένα docker compose up, και έχει το πιο πλήρες feature set μεταξύ self-hosted επιλογών: traces, prompt management με A/B testing, evals (LLM-as-judge, custom code, human annotation), και datasets για regression testing.
Ο decorator @observe δημιουργεί nested spans αυτόματα. Αν χτίζεις ένα RAG pipeline με Python, αυτό το pattern σού δίνει visibility σε retrieval και generation σε ένα σημείο. Στο dashboard βλέπεις σε ποιες ερωτήσεις το retrieval επιστρέφει irrelevant chunks. Εκεί συνήθως κρύβεται το πρόβλημα ποιότητας.
Helicone: proxy-based observability σε 30 δευτερόλεπτα
Το Helicone είναι το αντίθετο φιλοσοφικό άκρο: αντί για SDK με decorators, λειτουργεί ως proxy. Αλλάζεις το base_url σου σε oai.helicone.ai/v1, προσθέτεις ένα header, και από εκεί και μετά καταγράφει κάθε αίτημα χωρίς να αγγίζεις application code.
Δύο πράγματα κάνουν το Helicone ξεχωριστό. Πρώτον, το semantic caching: αν δύο ερωτήσεις είναι σημασιολογικά παρόμοιες, επιστρέφει την ίδια απάντηση από cache. Σε ένα project customer support, αυτό μου έσωσε ~35% του κόστους tokens χωρίς αισθητή υποβάθμιση ποιότητας. Δεύτερον, τα rate limits ανά custom property: μπορείς να βάλεις όριο 5€/μέρα ανά χρήστη χωρίς να γράψεις δικό σου middleware.
Το trade-off; Επειδή είναι proxy, βλέπει μόνο τις HTTP κλήσεις στο LLM. Δεν ξέρει για το retrieval step ή για το function calling με Python στο business logic σου, εκτός κι αν στείλεις custom events μέσω του Helicone API.
Arize Phoenix και OpenTelemetry
Το Phoenix είναι η επιλογή για ομάδες που ήδη χρησιμοποιούν OpenTelemetry για observability στο υπόλοιπο stack τους. Χρησιμοποιεί το OpenInference standard (μια επέκταση του OTEL για AI workloads), οπότε τα traces του μπορούν να ταξιδέψουν σε Datadog, Grafana Tempo, ή Jaeger.
import phoenix as px
from phoenix.otel import register
from openinference.instrumentation.openai import OpenAIInstrumentor
from openai import OpenAI
px.launch_app()
tracer_provider = register(project_name="support-agent")
OpenAIInstrumentor().instrument(tracer_provider=tracer_provider)
client = OpenAI()
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)
Το OpenAIInstrumentor "μπολιάζει" αυτόματα τις κλήσεις OpenAI με spans OTEL. Υπάρχουν αντίστοιχοι instrumentors για LlamaIndex, LangChain, Anthropic, και άλλα. Σε production, στέλνεις τα spans στο OTEL collector σου και τα βλέπεις δίπλα στα backend metrics. Είναι αυτό που λείπει από τα άλλα τρία όταν θέλεις end-to-end correlation από load balancer μέχρι vector store. Για το επίσημο spec, δες την OpenTelemetry specification.
Πώς στήνεις evals που σου λένε κάτι χρήσιμο
Το observability χωρίς evals είναι απλώς logging με ωραίο UI. Honestly, η πραγματική αξία έρχεται όταν σου λέει το dashboard σου "η ακρίβεια έπεσε 12% τις τελευταίες 6 ώρες". Για να το πετύχεις αυτό, χρειάζεσαι τρία επίπεδα αξιολόγησης.
1. Offline regression dataset
50–200 ζευγάρια input/expected output που τρέχουν σε κάθε commit. Όταν αλλάζεις prompt, μοντέλο ή temperature, τρέχεις το dataset και βλέπεις τι έσπασε. Όλα τα 4 εργαλεία υποστηρίζουν datasets, αλλά το Langfuse και το LangSmith έχουν τη βέλτιστη integration με CI/CD μέσω GitHub Actions.
2. Online LLM-as-judge
Σε δείγμα ~5% των production traces, καλείς ένα φθηνότερο μοντέλο (π.χ. Haiku 4.5) να βαθμολογήσει "groundedness" ή "helpfulness". Αυτό δίνει trending metrics χωρίς να χρειάζεσαι ground truth για κάθε αίτημα.
from langfuse import get_client
langfuse = get_client()
def judge_groundedness(question: str, answer: str, context: str) -> float:
prompt = f"""Question: {question}
Context provided to model: {context}
Model answer: {answer}
Is the answer fully supported by the context? Reply ONLY with a number 0.0-1.0."""
# call to Haiku/4o-mini omitted for brevity
score = 0.87
langfuse.score_current_trace(name="groundedness", value=score)
return score
3. Human feedback loops
Thumbs up/down κουμπί στο UI που γράφει score στο trace. Στο Langfuse και LangSmith αυτό γίνεται με ένα API call και μετά μπορείς να φιλτράρεις low-rated traces για χειροκίνητη ανάλυση. Εκεί ζουν τα ευρήματα που θα γίνουν επόμενες βελτιώσεις στο prompt.
Production checklist: sampling, PII, alerts
Όταν περνάς σε production με πραγματικό traffic, τα default settings θα σε προδώσουν. Εδώ είναι το checklist που χρησιμοποιώ:
Sampling: Πάνω από 1M traces/μέρα, κάνε deterministic sampling στο 10–20%. Όλα τα errors καταγράφονται 100%, τα success traces 20%.
PII redaction: Πριν φύγει το trace από το app σου, τρέξε regex ή Microsoft Presidio για emails, phone numbers, credit cards. Το Langfuse έχει mask callback, το LangSmith έχει hide_inputs.
Cost alerts: Όριο ημερήσιου spend ανά project. Το Helicone το κάνει στο proxy επίπεδο, που είναι γρηγορότερο "kill switch" αν ξεφύγει runaway agent.
Latency P95 alerts: Σύνδεσε το dashboard με PagerDuty/Slack. P95 > 4s συνήθως σημαίνει αργό retrieval, όχι αργό LLM.
Eval score alerts: Αν η μέση groundedness πέσει >10% σε 1 ώρα, στείλε alert. Αυτό πιάνει prompt regressions πριν φτάσουν παράπονα χρηστών.
Πώς να επιλέξεις εργαλείο για την ομάδα σου
Μετά από αρκετά projects, η ευρετική μου είναι απλή:
Είσαι LangChain-heavy και έχεις budget; Πήγαινε LangSmith. Η ενσωμάτωση είναι μηδενικής τριβής και τα built-in evaluators δουλεύουν out of the box.
Self-hosted ή GDPR-αυστηρό; Πήγαινε Langfuse v3. Το καλύτερο πακέτο features ανά ευρώ και πλήρης έλεγχος δεδομένων.
Μόνο OpenAI-compatible APIs, θες γρήγορο start και caching; Πήγαινε Helicone. 5 λεπτά setup, άμεση εξοικονόμηση tokens.
Έχεις ήδη OTEL collector και θες ενιαία observability; Πήγαινε Arize Phoenix. Ζει αρμονικά με το υπάρχον APM σου.
Σε πραγματικό project όπου χτίζεις agent με tool use και RAG, η πρόταση μου είναι Langfuse self-hosted ως κύριο stack, συν Phoenix για OTEL bridge όταν χρειάζεσαι correlation με backend metrics. Είναι λίγο παραπάνω stack να συντηρήσεις, αλλά κρατάς τα data στο VPC σου και έχεις πλήρη evals. Δες και τον πηγαίο κώδικα του Langfuse στο GitHub για να καταλάβεις τι μπορείς να customizes. Και να θυμάσαι: το observability δεν είναι "nice to have", είναι ο μόνος τρόπος να ξέρεις αν το system σου δουλεύει όταν δεν το παρακολουθείς εσύ ο ίδιος.
Συχνές Ερωτήσεις
Είναι το Langfuse δωρεάν;
Ναι. Το Langfuse είναι open-source με άδεια MIT και μπορείς να το τρέξεις self-hosted χωρίς όριο χρήσης. Το cloud-hosted Langfuse έχει δωρεάν tier με 50.000 events/μήνα και πληρωμένα tiers από εκεί και πάνω.
Ποια είναι η διαφορά μεταξύ LangSmith και Langfuse;
Το LangSmith είναι closed-source SaaS από την LangChain με πιο γυαλισμένο UI και βαθιά LangChain integration. Το Langfuse είναι open-source, self-hostable και framework-agnostic. Αν δεν χρησιμοποιείς LangChain, το Langfuse έχει συνήθως καλύτερη σχέση κόστους-features.
Χρειάζομαι observability αν έχω μόνο ένα chatbot;
Ναι, ακόμα και για ένα chatbot. Χωρίς observability δεν έχεις τρόπο να ξέρεις αν μια αλλαγή στο prompt βελτίωσε ή χειροτέρεψε τις απαντήσεις, ούτε να εντοπίσεις regression όταν αναβαθμίσεις το μοντέλο. Ξεκίνα με Helicone για 30 δευτερόλεπτα setup.
Μπορώ να συνδυάσω πολλαπλά εργαλεία observability;
Ναι. Συνηθισμένο pattern είναι Helicone για caching και cost control στο proxy επίπεδο, συν Langfuse ή Phoenix για deep tracing και evals. Επειδή το Helicone παρεμβαίνει στις HTTP κλήσεις ενώ τα άλλα δουλεύουν με SDK, δεν υπάρχει σύγκρουση.
Πώς ενσωματώνω το Langfuse σε υπάρχον LangChain agent;
Εγκατέστησε το langfuse package, όρισε τα LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY, LANGFUSE_HOST ως environment variables, και πέρασε το CallbackHandler του Langfuse στο config={"callbacks": [handler]} κάθε φορά που καλείς .invoke(). Όλα τα steps του LangChain agent θα εμφανιστούν αυτόματα ως nested spans.
Μάθε πώς δουλεύει το function calling σε AI agents, με πρακτικά παραδείγματα σε Python χρησιμοποιώντας τα APIs του OpenAI και της Anthropic. Περιλαμβάνει MCP, Pydantic validation και production tips.
Πώς να χτίσετε πολυπρακτορικά συστήματα AI το 2026: μοτίβα ενορχήστρωσης, Model Context Protocol (MCP), αρχιτεκτονική τριών επιπέδων, πρωτόκολλα A2A, ασφάλεια και πρακτικά παραδείγματα κώδικα.