실무 Multi-Agent 오케스트레이션 11장 · 프레임워크 기반 에이전트 구성 6 / 7 ← 이전목차다음 → TechLead Cro

11장. 프레임워크 기반 에이전트 구성

정리와 체크리스트

11장에서 배운 것

  • 프레임워크 — 여러 프로그램에 공통인 뼈대를 미리 만들어 둔 것. 우리는 그 위에 우리 것만 얹습니다.
  • LangChain — LLM 에이전트용 프레임워크. create_agent가 에이전트 루프를 만들어 줍니다.
  • 모델 어댑터 — 서로 다른 회사의 모델을 같은 모양으로 감싸는 부품. Gemini용은 ChatGoogleGenerativeAI입니다.
  • tool() — 함수의 이름·타입 힌트·독스트링으로 도구 선언을 만듭니다.
  • 메시지 — HumanMessage, AIMessage, ToolMessage. 9장의 contents에 쌓이던 것의 새 이름입니다.
  • 실행 추적 — 어떤 도구를 불렀고 무엇을 받았는지 남긴 기록. 답을 믿을 근거입니다.
  • 회귀 세트 — 고칠 때마다 다시 돌리는 고정된 질문 묶음.
  • 미들웨어 — 에이전트의 각 단계 앞뒤에 끼워 넣는 부품. 호출 횟수 제한 같은 장치를 답니다.

한눈에 보는 핵심

llm = ChatGoogleGenerativeAI(model=MODEL, google_api_key=...)   # 모델 어댑터
TOOLS = [tool(raw["get_my_orders"]), ...]                        # 8장의 함수를 감싼다
agent = create_agent(model=llm, tools=TOOLS, system_prompt=SYSTEM)

for chunk in agent.stream({"messages": [...]}, stream_mode="values"):
    ...                                                          # 새 메시지만 골라 기록
프레임워크가 하는 일 모델이 하는 일 우리가 하는 일
모델 호출과 도구 실행을 반복한다 어떤 도구를 부를지 고른다 도구가 할 수 있는 일의 범위를 정한다
메시지를 차례로 쌓는다 도구 결과를 읽고 다음 행동을 정한다 시스템 프롬프트를 쓴다
모델마다 다른 형식을 맞춘다 최종 답변을 쓴다 비용 상한과 한도에 닿았을 때의 대응을 정한다

체크리스트

  • [ ] 직접 만든 루프를 프레임워크로 옮기는 이유를 설명할 수 있다.
  • [ ] 모델 어댑터가 무엇을 해 주는지 설명할 수 있다.
  • [ ] 9장의 contents, function_calls, react_loop가 LangChain에서 각각 무엇이 되는지 말할 수 있다.
  • [ ] tool()로 감싼 뒤에도 본인 주문만 조회되는 이유를 설명할 수 있다.
  • [ ] invoke와 stream의 차이를 설명할 수 있다.
  • [ ] 추적에서 도구 결정, 도구 결과, 최종 답변을 가려낼 수 있다.
  • [ ] 답변에 숫자가 있는데 도구 호출 기록이 없으면 무엇을 의심해야 하는지 안다.
  • [ ] AIMessage.content가 문자열이 아닐 수 있음을 알고, 글자만 꺼내는 방법을 안다.
  • [ ] 프레임워크로 옮긴 뒤에도 우리에게 남는 일 세 가지를 말할 수 있다.

한 줄 핵심

프레임워크는 루프를 대신 돌려 줍니다. 무엇을 허용하고, 얼마까지 쓰고, 어디서 멈출지는 여전히 우리가 정합니다.

← 이전 절따라하기 — LangChain으로 에이전트 다시 만들기다음 절 →실습문제와 해답
오명운 · macro@prag-ai.com