AI Wisdom
accepted2026-02-10

ADR-004: Orchestration Framework — LangChain vs Semantic Kernel

In this article

Context

We need an orchestration framework for building RAG pipelines, agent workflows, and tool-calling chains. The two leading options are LangChain (Python/JS) and Semantic Kernel (C#/.NET/Python).

Options Evaluated

LangChain / LangGraph

Pros
  • +Largest community and ecosystem
  • +LangGraph provides stateful agent graphs
  • +Extensive integrations (100+ tools, vector stores)
  • +LangSmith for observability
Cons
  • Heavy abstraction layers — "framework lock-in"
  • Breaking API changes between versions
  • Over-abstracted for simple use cases

Semantic Kernel

Pros
  • +First-class .NET support (our backend stack)
  • +Clean plugin architecture
  • +Native Azure AI integration
  • +Enterprise-focused with Microsoft backing
Cons
  • Smaller community than LangChain
  • Fewer third-party integrations
  • Python SDK less mature than .NET

Direct SDK calls (no framework)

Pros
  • +Zero abstraction overhead
  • +Full control over every API call
  • +No dependency on framework versioning
Cons
  • Must build retry, streaming, tool calling from scratch
  • No built-in agent patterns
  • More code to maintain

Decision

We chose direct SDK calls with lightweight wrappers for our TypeScript/Next.js frontend, and Semantic Kernel for any .NET backend services. This avoids LangChain's heavy abstractions while leveraging Semantic Kernel where .NET integration is natural. For agent workflows, we'll evaluate LangGraph only if direct implementation becomes unwieldy.

Consequences

  • Must build our own retry/streaming utilities (minimal — Vercel AI SDK handles most)
  • Semantic Kernel plugins for any .NET microservices
  • Team needs to stay current on both OpenAI and Anthropic SDK changes
  • Lower barrier to switching models since no framework lock-in

Discussion

Sign in to share your feedback and join the discussion.