LangChain 에이전트
LangChain 에이전트 (Agents)
LangChain에서 '에이전트(agent)'는 모델이 주어진 작업을 끝낼 때까지 도구(tool)를 부르는 루프를 도는 구조를 말해요. 그리고 그 루프 주변의 모든 것, 즉 프롬프트와 도구, 그리고 모델의 행동을 조각하는 미들웨어까지 합쳐서 '하네스(harness)'라고 불러요. 결국 Agent = Model + Harness라는 공식으로 정리할 수 있죠.
에이전트가 왜 필요한지 한 번 생각해 볼게요. LLM 하나만으로는 실시간 데이터를 가져오거나 파일을 수정하는 일을 할 수 없어요. 하지만 도구를 연결해 주면 모델이 "지금은 이 도구를 불러야겠다"라고 스스로 판단해서 실행할 수 있고, 그 결과를 다시 바탕으로 다음 행동을 이어 갈 수 있어요. LangChain의 create_agent는 이런 루프를 최소한의 설정으로 만들 수 있게 해 주는, 확장성이 높은 하네스예요.
에이전트 만들기
가장 단순한 에이전트는 이렇게 세 가지를 지정해 주면 돼요. create_agent에 모델(model=), 도구(tools=), 시스템 프롬프트(system_prompt=)를 넘기면 끝이에요.
from langchain.agents import create_agent
agent = create_agent(
model="openai:gpt-5.5",
tools=[get_weather],
system_prompt="You are a helpful assistant",
)
물론 OpenAI를 쓰지 않아도 돼요. 프로바이더 접두사만 바꾸면 다른 모델로 쉽게 전환할 수 있어요. Google에서는 google_genai:gemini-3.6-flash, Anthropic에서는 anthropic:claude-sonnet-4-6, Ollama에서는 ollama:north-mini-code-1.0처럼 지정하면 돼요. 이건 init_chat_model과 같은 표준 모델 인터페이스를 쓰기 때문이에요.
핵심 구성 요소
모델 (Model)
에이전트의 판단을 담당하는 부분이에요. "provider:model" 형태의 문자열이나 이미 초기화된 모델 인스턴스를 넘길 수 있어요. 어떤 도구를 부를지, 결과를 어떻게 해석할지, 언제 최종 답변을 할지를 전부 여기서 결정해요.
도구 (Tools)
에이전트가 세상과 상호작용하는 수단이에요. 일반 파이썬 콜러블, LangChain 도구, 도구 딕셔너리 모두 넘길 수 있어요. @tool 데코레이터로 간단하게 만들 수 있어요.
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for information."""
return f"Results for: {query}"
agent = create_agent(model="google_genai:gemini-3.6-flash", tools=[search])
시스템 프롬프트 (System prompt)
에이전트가 작업에 어떻게 접근할지를 정해 주는 부분이에요. 문자열이나 SystemMessage를 받아요. 런타임에 동적으로 바꾸고 싶다면 미들웨어(middleware)를 사용해요.
응답 포맷 지정하기
response_format=을 주면 모델이 검증된 스키마를 따르는 응답을 돌려줘요. Pydantic 모델을 넘기면 구조화된 결과를 받을 수 있어요.
from pydantic import BaseModel
class Answer(BaseModel):
summary: str
confidence: float
agent = create_agent(model="google_genai:gemini-3.6-flash", tools=tools, response_format=Answer)
result = agent.invoke({"messages": [{"role": "user", "content": "Summarize AI trends"}]})
result["structured_response"] # Answer(summary=..., confidence=...)
하네스 확장하기
Deep Agents는 create_agent 위에 계획(planning), 파일 시스템 도구, 서브에이전트, 메모리 같은 자주 쓰는 기능을 미리 조립해 둔 버전이에요. 직접 하네스를 구성하고 싶다면 create_agent를 쓰는 게 더 유리해요. 더 고급 기능이 필요하다면 미들웨어로 루프를 확장할 수 있고, FilesystemMiddleware, TodoListMiddleware, SubAgentMiddleware 같은 준비된 미들웨어를 조합할 수 있어요.
더 알아보기
- LangChain 모델 문서: 모델 파라미터와 프로바이더 설정, 동적 모델 선택 방법
- LangChain 도구 문서: 도구 정의와 런타임 컨텍스트 접근
- LangChain 구조화 출력 문서:
response_format=전략과 예제 - Deep Agents 개요: 배터리 포함 에이전트 프레임워크