<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged langsmith</title>
<link>https://coderlegion.com/tag/langsmith</link>
<description>Powered by Question2Answer</description>
<item>
<title>LangChain vs LangGraph vs LangSmith: Understanding the Ecosystem</title>
<link>https://coderlegion.com/9900/langchain-vs-langgraph-vs-langsmith-understanding-the-ecosystem</link>
<description>&lt;blockquote&gt;&lt;p&gt;Building LLM apps isn’t just about prompts anymore.&lt;br&gt;
It’s about &lt;strong&gt;composition&lt;/strong&gt;, &lt;strong&gt;orchestration&lt;/strong&gt;, and &lt;strong&gt;observability&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id=&quot;tl-dr&quot;&gt;TL;DR&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LangChain&lt;/strong&gt; provides the foundational building blocks for creating LLM applications through modular components and a unified interface for working with different AI providers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LangGraph&lt;/strong&gt; extends this foundation with &lt;strong&gt;stateful, graph-based orchestration&lt;/strong&gt; for complex multi-agent workflows requiring loops, branching, and persistent state.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LangSmith&lt;/strong&gt; completes the picture by offering &lt;strong&gt;observability, tracing, and evaluation&lt;/strong&gt; tools for debugging and monitoring LLM applications in production.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Use:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LangChain&lt;/strong&gt; for straightforward chains and RAG systems&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LangGraph&lt;/strong&gt; when you need sophisticated state management and agent coordination&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LangSmith&lt;/strong&gt; throughout development and production for visibility into behavior&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;hands-on-github-repositories&quot;&gt;Hands-on GitHub Repositories&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LangChain RAG Project&lt;/strong&gt; → &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/rajkundalia/langchain-rag-project&quot;&gt;https://github.com/rajkundalia/langchain-rag-project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LangGraph Analyzer&lt;/strong&gt; → &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/rajkundalia/langgraph-analyzer&quot;&gt;https://github.com/rajkundalia/langgraph-analyzer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LangSmith Learning&lt;/strong&gt; → &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/rajkundalia/langsmith-learning&quot;&gt;https://github.com/rajkundalia/langsmith-learning&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;introduction&quot;&gt;Introduction&lt;/h3&gt;
&lt;p&gt;The landscape of LLM application development has evolved rapidly since 2022.&lt;/p&gt;
&lt;p&gt;What began as simple prompt–response interactions has grown into &lt;strong&gt;multi-step workflows&lt;/strong&gt; involving retrieval systems, tool usage, autonomous agents, and long-running processes. This evolution introduced &lt;strong&gt;new problems at each stage&lt;/strong&gt; of the development lifecycle.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The composition problem&lt;/strong&gt; → How do you connect prompts, models, tools, and data?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The orchestration problem&lt;/strong&gt; → How do you manage branching, retries, loops, and shared state?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The observability problem&lt;/strong&gt; → How do you debug, evaluate, and monitor these systems?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The LangChain ecosystem emerged to address each layer:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Problem       &lt;/th&gt;&lt;th&gt;Tool      &lt;/th&gt;&lt;th&gt;Year&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Composition   &lt;/td&gt;&lt;td&gt;LangChain &lt;/td&gt;&lt;td&gt;2022&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Orchestration &lt;/td&gt;&lt;td&gt;LangGraph &lt;/td&gt;&lt;td&gt;2024&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Observability &lt;/td&gt;&lt;td&gt;LangSmith &lt;/td&gt;&lt;td&gt;2023–2024&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Each tool targets a &lt;strong&gt;specific layer&lt;/strong&gt; in the LLM application stack.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;langchain-the-foundation&quot;&gt;LangChain: The Foundation&lt;/h3&gt;
&lt;p&gt;LangChain is the &lt;strong&gt;core framework&lt;/strong&gt; for building LLM-powered applications.&lt;/p&gt;
&lt;p&gt;Its primary goal is abstraction: different LLM providers expose different APIs, capabilities, and quirks. LangChain hides these differences behind a &lt;strong&gt;unified interface&lt;/strong&gt;.&lt;/p&gt;
&lt;h4 id=&quot;core-building-blocks&quot;&gt;Core Building Blocks&lt;/h4&gt;
&lt;p&gt;LangChain is composed of modular, swappable components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prompts&lt;/strong&gt; – Templates and structured inputs for models&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Models&lt;/strong&gt; – OpenAI, Anthropic, Google, or local LLMs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Memory&lt;/strong&gt; – Conversation history and contextual state&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tools&lt;/strong&gt; – Function calls to external systems&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Retrievers&lt;/strong&gt; – Vector databases and RAG pipelines&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id=&quot;lcel-langchain-expression-language&quot;&gt;LCEL: LangChain Expression Language&lt;/h4&gt;
&lt;p&gt;What ties everything together is &lt;strong&gt;LCEL&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;LCEL introduces a &lt;strong&gt;declarative, pipe-based syntax&lt;/strong&gt; for composing chains:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;prompt | model | output_parser
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instead of writing imperative glue code, you describe &lt;strong&gt;data flow&lt;/strong&gt;.&lt;/p&gt;
&lt;h4 id=&quot;why-lcel-matters&quot;&gt;Why LCEL Matters&lt;/h4&gt;
&lt;p&gt;LCEL enables:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatic async, streaming, and batch execution&lt;/li&gt;
&lt;li&gt;Built-in LangSmith tracing&lt;/li&gt;
&lt;li&gt;Parallel execution of independent steps&lt;/li&gt;
&lt;li&gt;A unified &lt;code&gt;Runnable&lt;/code&gt; interface (&lt;code&gt;invoke&lt;/code&gt;, &lt;code&gt;batch&lt;/code&gt;, &lt;code&gt;stream&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This makes chains &lt;strong&gt;faster&lt;/strong&gt;, &lt;strong&gt;cleaner&lt;/strong&gt;, and easier to reason about.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&quot;multi-provider-support&quot;&gt;Multi-Provider Support&lt;/h4&gt;
&lt;p&gt;LangChain supports dozens of LLM providers and integrations.&lt;/p&gt;
&lt;p&gt;You can switch providers by changing &lt;strong&gt;one line of configuration&lt;/strong&gt;, enabling:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Vendor independence&lt;/li&gt;
&lt;li&gt;A/B testing across models&lt;/li&gt;
&lt;li&gt;Cost and latency optimization&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id=&quot;when-langchain-is-enough&quot;&gt;When LangChain Is Enough&lt;/h4&gt;
&lt;p&gt;Use LangChain when your workflow is primarily:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Input → Process → Output
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Typical use cases include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chatbots with memory&lt;/li&gt;
&lt;li&gt;RAG-based Q&amp;amp;A systems&lt;/li&gt;
&lt;li&gt;Natural language → SQL generation&lt;/li&gt;
&lt;li&gt;Linear tool pipelines&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your application doesn’t need complex branching or shared long-lived state, &lt;strong&gt;LangChain is the right tool&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;section&quot;&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7a2mw7h25kemz76pn20y.png&quot; alt=&quot;LangChain Component Flow&quot;&gt;&lt;/h3&gt;
&lt;h3 id=&quot;langgraph-stateful-agent-orchestration&quot;&gt;LangGraph: Stateful Agent Orchestration&lt;/h3&gt;
&lt;p&gt;LangGraph solves the &lt;strong&gt;orchestration problem&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;As soon as your application needs to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;make decisions,&lt;/li&gt;
&lt;li&gt;loop,&lt;/li&gt;
&lt;li&gt;retry,&lt;/li&gt;
&lt;li&gt;or coordinate multiple agents, linear chains start to break down.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id=&quot;graph-based-architecture&quot;&gt;Graph-Based Architecture&lt;/h4&gt;
&lt;p&gt;LangGraph models your application as a &lt;strong&gt;directed graph&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Nodes&lt;/strong&gt; → processing steps or agents&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edges&lt;/strong&gt; → execution flow between nodes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This enables patterns that are hard or impossible with chains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Loops and retries&lt;/li&gt;
&lt;li&gt;Conditional branching&lt;/li&gt;
&lt;li&gt;Parallel execution&lt;/li&gt;
&lt;li&gt;Shared, persistent state&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id=&quot;state-as-a-first-class-concept&quot;&gt;State as a First-Class Concept&lt;/h4&gt;
&lt;p&gt;Every LangGraph workflow operates on a &lt;strong&gt;shared state object&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nodes receive the current state&lt;/li&gt;
&lt;li&gt;They compute updates&lt;/li&gt;
&lt;li&gt;Updates are merged back into state&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This allows multiple agents to collaborate naturally.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Research agent gathers sources&lt;/li&gt;
&lt;li&gt;Fact-checking agent validates claims&lt;/li&gt;
&lt;li&gt;Synthesis agent produces the final answer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All without complex message passing.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&quot;conditional-routing&quot;&gt;Conditional Routing&lt;/h4&gt;
&lt;p&gt;LangGraph supports &lt;strong&gt;conditional edges&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;A function decides which node runs next based on runtime state:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Route customer queries to specialist agents&lt;/li&gt;
&lt;li&gt;Loop back when required information is missing&lt;/li&gt;
&lt;li&gt;Retry until success conditions are met&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id=&quot;persistence-amp-checkpointing&quot;&gt;Persistence &amp;amp; Checkpointing&lt;/h4&gt;
&lt;p&gt;LangGraph includes built-in &lt;strong&gt;checkpointing&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Persist state across restarts&lt;/li&gt;
&lt;li&gt;Resume long-running workflows&lt;/li&gt;
&lt;li&gt;Support human-in-the-loop pauses&lt;/li&gt;
&lt;li&gt;Enable time-travel debugging&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is critical for production-grade agent systems.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&quot;visualization-support&quot;&gt;Visualization Support&lt;/h4&gt;
&lt;p&gt;LangGraph workflows are inspectable and exportable:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mermaid diagrams for documentation&lt;/li&gt;
&lt;li&gt;PNG images for presentations&lt;/li&gt;
&lt;li&gt;ASCII graphs for terminal debugging&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This makes complex agent systems &lt;strong&gt;understandable and communicable&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&quot;when-you-need-langgraph&quot;&gt;When You Need LangGraph&lt;/h4&gt;
&lt;p&gt;Choose LangGraph when you need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Explicit shared state&lt;/li&gt;
&lt;li&gt;Runtime decision-making&lt;/li&gt;
&lt;li&gt;Retry and failure recovery&lt;/li&gt;
&lt;li&gt;Multi-agent coordination&lt;/li&gt;
&lt;li&gt;Long-running workflows&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A classic example is an &lt;strong&gt;autonomous research agent&lt;/strong&gt; that iteratively searches, reads, verifies, and synthesizes information.&lt;/p&gt;
&lt;h3 id=&quot;section-1&quot;&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e6w9w6egyyj8r4c3ricl.png&quot; alt=&quot;LangGraph State Machine Example&quot;&gt;&lt;/h3&gt;
&lt;h3 id=&quot;langsmith-the-observability-layer&quot;&gt;LangSmith: The Observability Layer&lt;/h3&gt;
&lt;p&gt;LangSmith answers the question:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;“What is my LLM application actually doing?”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It doesn’t build workflows — it &lt;strong&gt;illuminates them&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&quot;tracing-everything&quot;&gt;Tracing Everything&lt;/h4&gt;
&lt;p&gt;LangSmith captures full execution traces:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prompts and responses&lt;/li&gt;
&lt;li&gt;Token usage and latency&lt;/li&gt;
&lt;li&gt;Component call stacks&lt;/li&gt;
&lt;li&gt;Errors and retries&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can drill down from:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a full workflow run&lt;br&gt;
→ to a single LLM call.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This makes debugging &lt;em&gt;dramatically&lt;/em&gt; easier.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&quot;evaluation-amp-regression-testing&quot;&gt;Evaluation &amp;amp; Regression Testing&lt;/h4&gt;
&lt;p&gt;LangSmith allows you to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create evaluation datasets&lt;/li&gt;
&lt;li&gt;Run structured tests&lt;/li&gt;
&lt;li&gt;Track quality metrics&lt;/li&gt;
&lt;li&gt;Compare prompts and models&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This enables &lt;strong&gt;regression testing&lt;/strong&gt; for LLM apps — a must-have for production systems.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&quot;production-monitoring&quot;&gt;Production Monitoring&lt;/h4&gt;
&lt;p&gt;In production, LangSmith tracks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Response times&lt;/li&gt;
&lt;li&gt;Error rates&lt;/li&gt;
&lt;li&gt;Token and cost trends&lt;/li&gt;
&lt;li&gt;Usage by workflow or user&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Alerts help you catch issues early and optimize costs.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&quot;framework-agnostic&quot;&gt;Framework-Agnostic&lt;/h4&gt;
&lt;p&gt;While LangSmith integrates seamlessly with LangChain and LangGraph, it’s &lt;strong&gt;not limited to them&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;You can instrument &lt;em&gt;any&lt;/em&gt; LLM application with LangSmith.&lt;/p&gt;
&lt;h3 id=&quot;section-2&quot;&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dx2l37b7n29anhmsrrhh.png&quot; alt=&quot;LangSmith Diagram&quot;&gt;&lt;/h3&gt;
&lt;h3 id=&quot;quick-comparison&quot;&gt;Quick Comparison&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Tool      &lt;/th&gt;&lt;th&gt;Solves        &lt;/th&gt;&lt;th&gt;Use When&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;LangChain &lt;/td&gt;&lt;td&gt;Composition   &lt;/td&gt;&lt;td&gt;Linear workflows, RAG, simple agents&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;LangGraph &lt;/td&gt;&lt;td&gt;Orchestration &lt;/td&gt;&lt;td&gt;Branching, loops, shared state, multi-agent&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;LangSmith &lt;/td&gt;&lt;td&gt;Observability &lt;/td&gt;&lt;td&gt;Debugging, evaluation, production monitoring&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&quot;section-3&quot;&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yia3pj7oyxnurc75suxn.png&quot; alt=&quot;Decision Tree: Which Tool to Use?&quot;&gt;&lt;/h3&gt;
&lt;h3 id=&quot;the-broader-ecosystem&quot;&gt;The Broader Ecosystem&lt;/h3&gt;
&lt;h4 id=&quot;langflow&quot;&gt;LangFlow&lt;/h4&gt;
&lt;p&gt;LangFlow provides a &lt;strong&gt;visual, drag-and-drop&lt;/strong&gt; interface for building LangChain workflows.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Great for prototyping&lt;/li&gt;
&lt;li&gt;Helpful for non-technical collaboration&lt;/li&gt;
&lt;li&gt;Often exported to code for production&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id=&quot;model-context-protocol-mcp-&quot;&gt;Model Context Protocol (MCP)&lt;/h4&gt;
&lt;p&gt;MCP (by Anthropic) standardizes &lt;strong&gt;tool and resource access&lt;/strong&gt; for LLMs.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Works at the tool/retriever layer&lt;/li&gt;
&lt;li&gt;Complements LangChain and LangGraph&lt;/li&gt;
&lt;li&gt;Reduces custom integration effort&lt;/li&gt;
&lt;li&gt;Framework-agnostic&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;MCP does &lt;strong&gt;not&lt;/strong&gt; replace orchestration tools — it enhances connectivity.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;The LangChain ecosystem is &lt;strong&gt;layered, not competitive&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LangChain&lt;/strong&gt; builds the core logic&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LangGraph&lt;/strong&gt; manages complex workflows&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LangSmith&lt;/strong&gt; makes everything observable&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Most serious LLM applications will use &lt;strong&gt;more than one&lt;/strong&gt; of these tools.&lt;/p&gt;
&lt;p&gt;Start simple, add complexity only when needed, and &lt;strong&gt;never ship without observability&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;further-reading-amp-resources&quot;&gt;Further Reading &amp;amp; Resources&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.datacamp.com/tutorial/langchain-vs-langgraph-vs-langsmith-vs-langflow&quot;&gt;https://www.datacamp.com/tutorial/langchain-vs-langgraph-vs-langsmith-vs-langflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.datacamp.com/tutorial/langgraph-tutorial&quot;&gt;https://www.datacamp.com/tutorial/langgraph-tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.datacamp.com/tutorial/langgraph-agents&quot;&gt;https://www.datacamp.com/tutorial/langgraph-agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.techvoot.com/blog/langchain-vs-langgraph-vs-langflow-vs-langsmith-2025&quot;&gt;https://www.techvoot.com/blog/langchain-vs-langgraph-vs-langflow-vs-langsmith-2025&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Video&lt;/strong&gt;&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.youtube.com/watch?v=vJOGC8QJZJQ&quot;&gt;https://www.youtube.com/watch?v=vJOGC8QJZJQ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Academy Finxter Series (Excellent Deep Dive)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://academy.finxter.com/langchain-langsmith-and-langgraph/&quot;&gt;https://academy.finxter.com/langchain-langsmith-and-langgraph/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://academy.finxter.com/langsmith-and-writing-tools/&quot;&gt;https://academy.finxter.com/langsmith-and-writing-tools/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://academy.finxter.com/langgraph/&quot;&gt;https://academy.finxter.com/langgraph/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://academy.finxter.com/multi-agent-teams-preparation/&quot;&gt;https://academy.finxter.com/multi-agent-teams-preparation/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://academy.finxter.com/setting-up-our-multi-agent-team/&quot;&gt;https://academy.finxter.com/setting-up-our-multi-agent-team/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://academy.finxter.com/web-research-and-asynchronous-tools/&quot;&gt;https://academy.finxter.com/web-research-and-asynchronous-tools/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
<category>Tutorials</category>
<guid isPermaLink="true">https://coderlegion.com/9900/langchain-vs-langgraph-vs-langsmith-understanding-the-ecosystem</guid>
<pubDate>Sat, 17 Jan 2026 13:36:52 +0000</pubDate>
</item>
<item>
<title>LangSmith vs. Phoenix by Arize AI: Choosing the Right Tool for LLM Observability</title>
<link>https://coderlegion.com/5138/langsmith-vs-phoenix-by-arize-ai-choosing-the-right-tool-for-llm-observability</link>
<description>&lt;p&gt;As Large Language Models (LLMs) become widely used in real-world applications, developers need better ways to monitor, debug, and improve them. That’s where observability tools like LangSmith and Phoenix by Arize AI come in. Understanding and debugging LLM applications, from prompt engineering to model outputs, requires specialized platforms. Two prominent players in this space are LangSmith by LangChain and Phoenix by Arize AI. While both aim to provide observability for LLMs, they cater to slightly different needs and offer distinct features. This article will delve into the purpose, features, installation, and code examples of both tools, helping you determine which is best suited for your specific LLM project.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;strong&gt;1. Purpose:&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LangSmith:&lt;/strong&gt; Best suited for developers building with LangChain, as it helps trace, debug, and optimize chains and agents step by step.**. It acts as a centralized hub to visualize, understand, and improve the performance of complex LLM workflows built using the LangChain framework. LangSmith is deeply integrated with LangChain, making it a natural choice for developers already invested in this ecosystem. It emphasizes end-to-end tracing of LangChain components, from prompt templates to final outputs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Phoenix by Arize AI:&lt;/strong&gt; Covers a wider range of observability needs — from monitoring model accuracy and performance to detecting bias and data quality issues — for any LLM, not just LangChain.**. While it can be integrated with LangChain, it’s not limited to it. Phoenix provides a more holistic view of your LLM application, focusing on understanding model behavior in production and identifying potential issues related to data drift, prompt quality, and fairness. It aims to provide insights into model performance metrics and data distributions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Features:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;While both tools fall under the category of AI observability platforms, their strengths are different:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;LangSmith focuses on tracing and debugging LangChain workflows. It includes a prompt playground, run tracing, dataset management, and team collaboration tools. It is tightly integrated into the LangChain ecosystem, requiring little setup.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Phoenix provides a wider set of observability features. It offers performance monitoring (latency, accuracy, cost), data drift detection, embedding visualization, and bias analysis. This makes it especially useful for teams that care about fairness, data quality, and large-scale monitoring across different LLMs.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Installation:&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;LangSmith:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pip install langchain
pip install langsmith
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After installation, you’ll need to set your LangSmith API key as an environment variable:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export LANGCHAIN_TRACING_V2=&quot;true&quot;
export LANGCHAIN_API_KEY=&quot;YOUR_LANGSMITH_API_KEY&quot;
export LANGCHAIN_ENDPOINT=&quot;https://api.smith.langchain.com&quot;
export LANGCHAIN_PROJECT=&quot;your-project-name&quot; # Optional: If you want to use a specific project
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Phoenix by Arize AI:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pip install phoenix

pip install phoenix
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No API key is strictly required for local development, but you’ll need one for using Arize AI’s cloud platform.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Code Examples:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;LangSmith:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;       from langchain.llms import OpenAI
    from langchain.chains import LLMChain
    from langchain.prompts import PromptTemplate

template = &quot;&quot;&quot;Question: {question}

Answer: Let's think step by step.&quot;&quot;&quot;

prompt = PromptTemplate(template=template, input_variables=[&quot;question&quot;])

llm = OpenAI(temperature=0)

llm_chain = LLMChain(prompt=prompt, llm=llm)

question = &quot;What is capital of France?&quot;

print(llm_chain.run(question))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;By setting the environment variables as shown in the installation section, LangSmith will automatically trace the execution of this LangChain chain. You can then view the trace in the LangSmith UI.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Phoenix by Arize AI:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    import phoenix as px
import pandas as pd
import numpy as np

# Create some dummy data
data = {
    &quot;prompt&quot;: [&quot;Translate to French: Hello&quot;, &quot;What is the capital of Germany?&quot;],
    &quot;response&quot;: [&quot;Bonjour&quot;, &quot;Berlin&quot;],
    &quot;latency&quot;: [0.5, 0.7],
    &quot;sentiment&quot;: [0.8, 0.9],
    &quot;embedding&quot;: [np.random.rand(128), np.random.rand(128)]
}
df = pd.DataFrame(data)

# Start Phoenix
session = px.launch_app()

# Log the data to Phoenix
px.log(df, session=session, embeddings_column_names={'embedding': 'embedding_column_name'})
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This code logs a DataFrame containing prompts, responses, latencies, sentiment scores, and embeddings to Phoenix. You can then use the Phoenix UI to explore this data, visualize the embeddings, and analyze model performance. You can then view the data in the Phoenix UI running in your browser at the URL outputted by px.launch_app().&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Choosing the Right Tool:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Choose LangSmith if:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You are heavily invested in the LangChain ecosystem. &lt;/li&gt;
&lt;li&gt;Your primary need is to debug and trace complex LangChain chains and agents. &lt;/li&gt;
&lt;li&gt;You want detailed visibility into the inner workings of your LangChain&lt;br&gt;
workflows. &lt;/li&gt;
&lt;li&gt;Choose Phoenix by Arize AI if: You need broader LLM observability, including model performance monitoring, data quality assessment, and bias detection. &lt;/li&gt;
&lt;li&gt;You are working with various LLM frameworks or custom models. You need tools for identifying data drift and biases in your LLM applications. &lt;/li&gt;
&lt;li&gt;You need to visualize embeddings and understand the semantic space of your data.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Both LangSmith and Phoenix help you understand and improve LLMs but they serve different purposes. LangSmith is best for developers deep in LangChain workflows, while Phoenix is ideal for teams needing a full picture of LLM performance, fairness, and data quality in production. LangSmith excels at tracing and debugging LangChain chains, while Phoenix offers a broader view of LLM performance and data quality. Understanding their strengths and weaknesses will help you choose the right tool for your specific LLM project and ensure its success in production. Consider evaluating both tools with a small proof-of-concept to determine which best fits your team’s workflow and requirements.&lt;/p&gt;
</description>
<category>Machine Learning</category>
<guid isPermaLink="true">https://coderlegion.com/5138/langsmith-vs-phoenix-by-arize-ai-choosing-the-right-tool-for-llm-observability</guid>
<pubDate>Wed, 03 Sep 2025 11:28:17 +0000</pubDate>
</item>
</channel>
</rss>