LangChain 개요
LangChain 개요 (LangChain overview)
LangChain을 처음 쓸 때 가장 먼저 떠오르는 질문 하나를 잡고 시작할게요. "에이전트 진짜 뭘로 만들지?" LangChain은 에이전트 = 모델 + 하네스(harnes) 라고 정의해요. 여기서 하네스란 모델 루프를 둘러싼 모든 것, 즉 프롬프트, 도구, 그리고 행동을 형성하는 각종 미들웨어를 말하죠. OpenAI, Anthropic, Google 등을 지원하는 create_agent는 최소한이면서도 매우 구성 가능한(configurable) 하네스예요. 기본 요소(primitives)에서 시작해서 우리 사용 사례에 정확히 맞는 조합을 만들어 나가면 됩니다.
LangChain vs. LangGraph vs. Deep Agents
에이전트를 만드는 프레임워크가 여럿이라 헷갈릴 수 있어요. 선택 기준을 정리해 볼게요.
- Deep Agents: 자동 컨텍스트 압축, 가상 파일시스템, 서브에이전트 생성 같은 기능이 내장된 "배터리 포함(batteries-included)" 에이전트가 필요하다면 Deep Agents부터 시작하세요. Deep Agents는 LangChain 에이전트 위에 구축되며, 그 에이전트를 직접 쓸 수도 있어요.
- LangChain (
create_agent): 사용 사례와 데이터에 쉽게 맞출 수 있는 고도로 커스터마이즈 가능한 하네스가 필요할 때 써요. - LangGraph: 결정적(deterministic) 워크플로와 에이전틱 워크플로를 결합하는 고급 니즈를 위해 사용하는 저수준 오케스트레이션 프레임워크예요. 개요를 참고하세요.
- LangSmith: 이 중 어떤 프레임워크로 만든 에이전트든 트레이스하고 디버깅하고 평가하려면 써요. tracing quickstart로 설정을 시작하고, 트레이스를 모니터링하고 문제를 감지하며 수정안을 제안하는 LangSmith Engine도 함께 설정하는 걸 권장해요.
에이전트 만들기 (Create an agent)
커스텀 도구를 가진 단순한 LangChain 에이전트를 만드는 예시예요. OpenAI 기준 코드부터 볼게요.
# pip install -qU langchain "langchain[openai]"
from langchain.agents import create_agent
def get_weather(city: str) -> str:
"""Get weather for a given city."""
return f"It's always sunny in {city}!"
agent = create_agent(
model="openai:gpt-5.5",
tools=[get_weather],
system_prompt="You are a helpful assistant",
)
result = agent.invoke(
{"messages": [{"role": "user", "content": "What's the weather in San Francisco?"}]}
)
print(result["messages"][-1].content_blocks)
다른 제공자들도 거의 같은 형태예요. 예를 들어 Google Gemini는 모델 문자열만 바뀝니다.
# pip install -qU langchain "langchain[google-genai]"
from langchain.agents import create_agent
def get_weather(city: str) -> str:
"""Get weather for a given city."""
return f"It's always sunny in {city}!"
agent = create_agent(
model="google_genai:gemini-2.5-flash-lite",
tools=[get_weather],
system_prompt="You are a helpful assistant",
)
result = agent.invoke(
{"messages": [{"role": "user", "content": "What's the weather in San Francisco?"}]}
)
print(result["messages"][-1].content_blocks)
Anthropic(Claude), OpenRouter, Fireworks, Baseten, Ollama, Azure, AWS Bedrock, HuggingFace 등 각 제공자별 모델 문자열과 설치 패키지는 원문 문서의 코드 탭에서 확인할 수 있어요. 모델 문자열만 다르고 create_agent 사용법은 동일합니다.
자신만의 에이전트와 애플리케이션을 만들기 시작하려면 설치 지침과 퀵스타트 가이드를 참고하세요.
요청을 트레이스하고 에이전트 동작을 디버깅하며 출력을 평가하려면 LangSmith를 쓰세요. LANGSMITH_TRACING=true와 API 키를 설정하면 시작할 수 있어요.
핵심 장점 (Core benefits)
표준 모델 인터페이스 (Standard model interface)
채팅 모델, 임베딩 등 여러 제공자에 걸쳐 하나의 인터페이스를 사용해요. 최소한의 코드 변경으로 모델을 바꿀 수 있고, 요구사항이 진화해도 애플리케이션을 이식 가능하게 유지할 수 있죠. 더 알아보기
고도로 구성 가능한 하네스 (Highly configurable harness)
create_agent를 최소 하네스로 시작해 미들웨어를 통해 기능을 점진적으로 추가할 수 있어요. 가드레일(guardrails), 재시도(retries)부터 라우팅과 커스텀 도구 정책까지, 사용 사례에 필요한 것만 조합하세요. 더 알아보기
LangGraph 위에 구축 (Built on top of LangGraph)
LangChain 에이전트는 LangGraph 위에 구축돼요. 덕분에 LangGraph의 내구성 있는 실행(durable execution), 휴먼-인-더-루프 지원, 영속성(persistence) 등을 활용할 수 있습니다. 더 알아보기
LangSmith로 디버깅 (Debug with LangSmith)
트레이스, 도구 호출, 상태 전이, 지연 시간을 한곳에서 검사하세요. 실행 데이터로 실패 모드를 찾고 품질을 평가하며 에이전트 동작을 개선할 수 있어요. 더 알아보기