AI VIDEO BRIEFING

LangChain AI 에이전트 만들기: 프롬프트 템플릿·커스텀 도구·Ollama 실습 가이드

LangChain으로 첫 AI 에이전트를 직접 코딩하는 실습. 프롬프트 템플릿의 역할, 커스텀 도구 4개 정의, create agent와 Ollama 로컬 LLM 연결, 그리고 응답 메시지에서 도구 호출을 읽어내는 과정을 단계별로 정리했다.

LangChain으로 첫 AI 에이전트 만들기: 프롬프트 템플릿부터 도구 호출까지 영상 대표 이미지

핵심 메시지

  • 에이전트는 LLM 응답에 도구 호출(tool call) 정보가 있으면 해당 도구를 실행하고, 없으면 LLM의 답을 그대로 내보낸다.
  • 프롬프트 템플릿은 시스템 프롬프트와 동적 자리표시자를 담은 재사용 가능한 청사진으로, 일관성·재사용성·유지보수성을 높인다.
  • 실습에서는 사실 조회·농담·환율 변환·덧셈·곱셈의 커스텀 도구 4~5개를 만들어 리스트로 에이전트에 연결한다.
  • 시스템 프롬프트에 '항상 제공된 도구를 쓰고 직접 계산하지 말라', '어떤 도구를 썼는지 밝혀라' 같은 규칙을 명시하는 것이 중요하다.
  • 에이전트 응답은 사람 메시지·AI 메시지·도구 메시지·최종 AI 메시지로 구성되며, 실제 값은 도구 메시지에서 나온다.

쉽게 이해하기

이 영상은 LangChain 시리즈의 4편으로, 앞서 배운 도구(tool) 생성·호출을 바탕으로 실제 AI 에이전트를 코딩해 만드는 실습이다. 핵심 목표는 프롬프트 템플릿을 이해하고, create agent 방식으로 에이전트를 만든 뒤 커스텀 도구와 연결해 다양한 질문에 대응시키는 것이다.

먼저 프롬프트 템플릿을 설명한다. 프롬프트 템플릿은 지시문과 동적 콘텐츠용 자리표시자, 일관된 메시지 구조를 담은 재사용 가능한 청사진이다. LLM과의 상호작용에서 지시와 동작을 일관되게 유지하고 여러 번 재사용할 수 있으며, 프롬프트를 바꿔야 할 때 한 곳만 고치면 되어 유지보수가 쉽다. 사용자 입력이 들어오면 시스템 프롬프트와 자리표시자를 합쳐 최종 프롬프트를 만들고, 이를 AI 모델에 보내 응답을 받는 흐름이다.

코딩 단계에서는 requests와 LangChain 라이브러리를 임포트한다. langchain_core의 도구, ChatPromptTemplate, 그리고 로컬에서 도는 Ollama와 상호작용할 채팅 모델, 에이전트를 만드는 LangChain 모듈이 필요하다. 이어서 무료 API를 활용하는 도구 4개를 만든다. 랜덤 사실 조회(get_fact), 랜덤 농담(get_joke), 금액·출발통화·도착통화를 받아 JSON을 돌려주는 환율 변환(convert currency), 그리고 덧셈과 곱셈 도구다. 완성된 도구들은 하나의 리스트에 담아 에이전트에 넘긴다.

다음으로 시스템 프롬프트를 작성한다. 'AI 에이전트를 위한 유용한 도우미'라는 역할과 함께, 항상 제공된 도구를 사용하고 직접 추측·계산하지 말 것, 여러 단계가 필요한 질문은 도구를 한 번에 하나씩 나눠 쓸 것, 답은 간결하게 하고 어떤 도구를 썼는지 밝힐 것, 오류가 나면 명확히 알릴 것 같은 규칙을 넣는다. 이 시스템 프롬프트를 ChatPromptTemplate.from_messages로 템플릿에 담고, Ollama용 채팅 모델 객체를 만들 때는 로컬에 설치된 모델 이름을 지정하고 temperature를 설정한다. temperature가 0이면 창의성 없이, 값이 클수록 모델이 스스로 창의성을 더한다.

이제 llm·도구·시스템 프롬프트를 create agent 메서드에 넘겨 에이전트를 만들고, 사용자 질문을 받는 run_agent 함수를 정의한다. 이 함수는 사용자 역할과 질문 내용을 입력으로 agent를 호출하며, 답을 찾지 못할 때 몇 번까지 반복할지를 재귀 제한(recursion limit, 예: 5~10)으로 지정한다. 디버그로 응답을 열어 보면 messages 안에 네 개의 객체가 들어 있다. 사람 메시지(질문), 도구 정보를 담은 AI 메시지, 실제 답이 담긴 도구 메시지, 그리고 LLM이 덧붙이는 최종 AI 메시지다. 응답의 tool_calls 속성에는 호출할 도구 이름과 세부 정보가 들어 있어, 이를 읽어 어떤 도구가 왜 불렸는지 출력할 수 있다.

마지막으로 여러 질문으로 동작을 확인한다. '랜덤 사실을 알려줘'는 get_fact 도구를 부르고, '100 USD를 유로로 바꾼 뒤 50을 더해줘'는 환율 변환 도구로 87.77을 얻은 다음 덧셈 도구를 부르려 한다(영상에서는 문자열·실수 타입 문제로 덧셈 단계에서 오류가 났고, 이는 시스템 프롬프트의 규칙대로 명확히 표출됐다). '랜덤 농담을 알려줘'는 get_joke 도구를 부른다. 이렇게 LLM이 상황에 맞는 도구를 자동으로 선택해 부르는 것이 에이전트의 실제 동작이며, 발표자는 완성한 코드를 GitHub에 올려 두었다고 밝힌다.

주요 인사이트

  • 에이전트의 본질은 'LLM 응답에 도구 호출이 있으면 그 도구를 실행하고 결과를 되먹이며, 없으면 LLM 답을 그대로 반환한다'는 흐름 제어에 있다.
  • '절대 직접 계산하지 말고 반드시 도구를 써라', '어떤 도구를 썼는지 밝혀라' 같은 시스템 프롬프트 규칙이 에이전트가 도구를 신뢰성 있게 쓰도록 만드는 핵심 장치다.
  • 응답 메시지가 사람·AI·도구·최종 AI 네 종류로 나뉜다는 점을 이해하면, 실제 값은 도구 메시지에서 오고 최종 문장은 LLM이 다듬는다는 역할 분담이 분명해진다.
  • 환율 변환 후 덧셈에서 발생한 타입 오류처럼, 도구 간 값 전달에서 문자열과 실수 타입이 어긋날 수 있어 실무에서는 도구 입출력 타입을 신중히 다뤄야 한다.
  • Ollama로 모델을 로컬에서 돌리므로, 채팅 모델을 만들기 전에 설치된 모델 이름을 확인하고 temperature로 창의성 정도를 조절하는 습관이 필요하다.

자주 묻는 질문

AI 에이전트는 언제 도구를 호출하나요?

LLM 응답에 도구 호출(tool call) 정보가 있으면 해당 도구를 실행한다. 그런 정보가 없으면 도구를 부르지 않고 LLM이 만든 응답을 그대로 출력한다.

프롬프트 템플릿을 쓰는 이유는 무엇인가요?

지시와 동작을 일관되게 유지하고 재사용할 수 있으며, 프롬프트를 바꿀 때 한 곳만 고치면 되어 유지보수가 쉽고, 더 나은 프롬프트로 더 나은 결과와 오류 감소를 얻기 위해서다.

실습에서 만든 도구는 무엇인가요?

무료 API를 이용한 랜덤 사실 조회, 랜덤 농담, 금액·출발통화·도착통화를 받는 환율 변환, 그리고 덧셈과 곱셈 도구를 만들어 하나의 리스트로 에이전트에 연결했다.

재귀 제한(recursion limit)은 무엇을 하나요?

에이전트가 올바른 답을 얻지 못할 때 몇 번까지 반복 시도할지를 정하는 설정이다. 예를 들어 5나 10으로 두면 그 횟수를 넘으면 반복을 멈추고 빠져나온다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식

#LangChain#AI에이전트#Ollama#프롬프트템플릿#LLM개발