LangChain 에이전트

LangChain 에이전트 (Agents)

LangChain에서 '에이전트(agent)'는 모델이 주어진 작업을 끝낼 때까지 도구(tool)를 부르는 루프를 도는 구조를 말해요. 그리고 그 루프 주변의 모든 것, 즉 프롬프트와 도구, 그리고 모델의 행동을 조각하는 미들웨어까지 합쳐서 '하네스(harness)'라고 불러요. 결국 Agent = Model + Harness라는 공식으로 정리할 수 있죠.

에이전트가 왜 필요한지 한 번 생각해 볼게요. LLM 하나만으로는 실시간 데이터를 가져오거나 파일을 수정하는 일을 할 수 없어요. 하지만 도구를 연결해 주면 모델이 "지금은 이 도구를 불러야겠다"라고 스스로 판단해서 실행할 수 있고, 그 결과를 다시 바탕으로 다음 행동을 이어 갈 수 있어요. LangChain의 create_agent는 이런 루프를 최소한의 설정으로 만들 수 있게 해 주는, 확장성이 높은 하네스예요.

출처: LangChain Agents 공식 문서

에이전트 만들기

가장 단순한 에이전트는 이렇게 세 가지를 지정해 주면 돼요. 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 Agentscreate_agent 위에 계획(planning), 파일 시스템 도구, 서브에이전트, 메모리 같은 자주 쓰는 기능을 미리 조립해 둔 버전이에요. 직접 하네스를 구성하고 싶다면 create_agent를 쓰는 게 더 유리해요. 더 고급 기능이 필요하다면 미들웨어로 루프를 확장할 수 있고, FilesystemMiddleware, TodoListMiddleware, SubAgentMiddleware 같은 준비된 미들웨어를 조합할 수 있어요.

더 알아보기