Build an AI Agent with LangGraph

TMT

https://spin.atomicobject.com/build-ai-agent-langgraph/

최근 Atomic은 AI Stay Conference를 개최했습니다. 이 행사는 그랜드래피즈에서 3일간 진행되며, Atoms가 모여 배우고, 만들고, 교류하는 자리입니다. 워크숍, 팀 잼, 그리고 지역 탐방이 결합된 행사로, 사무실을 벗어나 LLM 기반 애플리케이션을 구축하는 데 필요한 기술을 연마하는 데 집중할 수 있습니다. 이 컨퍼런스는 에이전트 기반 AI 시스템을 설계하고 구축하는 실제 경험을 제공하도록 설계되었으며, 기술적 심층 세션, 협업 빌딩 세션, 그리고 생산성과 재미를 모두 잡는 지역 활동이 어우러집니다. 컨퍼런스 후반부에는 Meghan과 팀을 이루어 LangGraph를 사용해 간단한 AI 기반 뉴스 집계 에이전트를 만들었습니다.

What’s an Agent Anyways?

뉴스 에이전트를 살펴보기 전에, 고전적 소프트웨어, AI 워크플로우, 그리고 AI 에이전트가 무엇인지 명확히 하겠습니다.

고전적 소프트웨어는 결정론적이며, 동적으로 적응할 수 없는 엄격하게 정의된 논리 흐름을 따릅니다. 고전적 소프트웨어의 결정은 명시적으로 프로그래밍되어 런타임에 고정되며, 사전 정의된 지침 없이 스스로 학습, 추론, 적응할 수 없습니다.

AI 워크플로우는 LLM이 특정, 고정된 지점에서 결정을 내리는 사전 정의된 단계로 구성된 프로세스입니다. 워크플로우는 사전에 완전히 매핑할 수 있는 구조적이고 예측 가능한 작업에 가장 적합하지만, 고전적 소프트웨어 범주에는 완전히 들어맞지 않습니다. 예를 들어, 자연어로 헬프데스크 티켓 생성을 간소화하는 시스템이 있습니다.

AI 에이전트Google의 정의에 따르면, AI를 사용해 목표를 추구하고 사용자를 대신해 작업을 완료하는 소프트웨어 시스템입니다. 이들은 추론, 계획, 메모리 기능을 보유하며, 스스로 결정을 내리고, 학습하고, 적응하는 자율성을 가집니다. AI 에이전트는 LLM을 사용해 도구와 행동을 동적으로 선택합니다. 이러한 자율성은 양날의 검입니다. 에이전트는 예측 불가능하고 변화하는 환경에서 매우 효과적일 수 있지만, 개방형 문제에 대해 항상 올바른 접근 방식을 선택하는 것은 어렵게 만듭니다.

Exploring the News Agent: LangGraph and Tavily Tools

LangGraph는 LangSmith의 관측 기능과 개발용 Studio UI 등 다양한 도구 생태계 덕분에 이번 컨퍼런스에서 우리의 주요 프레임워크가 되었습니다. 이 뉴스 에이전트에 사용한 또 다른 도구는 Tavily로, 간단한 API를 통해 웹페이지 검색, 추출, 크롤링 도구를 제공합니다. 무료 요금제가 에이전트 구축에 꽤 관대하게 제공되었습니다.

다음은 LangGraph 구조의 간단한 개요입니다:

Image

The Core Workflow

  • Agent Node: 사용자의 쿼리에 따라 운영 모드(일일 브리핑, 재미있는 사실, 단일 소스 요약)를 결정합니다. 사용자의 원하는 결과를 달성할 수 있는 도구 또는 도구 집합을 동적으로 선택해 실행합니다. 결과를 요약해 사용자에게 스트리밍합니다.
  • Tool Node: 웹 크롤링, 웹사이트 맵핑, 직접 검색, 콘텐츠 추출 등 여러 Tavily 도구를 집계합니다.
  • Feedback Node: Agent Inbox를 사용해 인간이 개입하는 상호작용을 가능하게 하며, 사용자의 선호 정보를 메모리에 반영해 선호하는 정보 출처와 주제를 추적합니다.

What Makes This an Agent

앞서 제시한 에이전트의 정의에 따라, 이 뉴스 에이전트가 에이전트인 이유를 살펴보겠습니다:

  • 목표 추구: 에이전트는 최근 뉴스 요약, 흥미로운 뉴스 사실 제공, 특정 매체의 타겟 요약 등 세 가지 명확한 사용자 중심 목표 중에서 자율적으로 선택합니다. 각 사용자의 요청에 가장 적합한 모드를 결정합니다.
  • 작업 완수: 에이전트는 여러 단계의 도구 호출을 독립적으로 실행합니다. 사이트를 크롤링하고, 콘텐츠를 추출하며, 웹을 검색하고, 인용이 포함된 간결한 Markdown 요약을 제공합니다. 사용자 메시지가 들어올 때마다 엄격한 작업 경로를 따르지 않습니다.
  • 계획: AI는 사용자 의도를 동적으로 해석해 적합한 전략을 선택하는 맥락 기반 계획을 사용합니다. 최소 5개의 관련 기사를 수집하기 위해 중간 결과에 따라 접근 방식을 지속적으로 조정합니다. 초기 방법이 부족할 경우, 에이전트는 고급 검색 매개변수나 대체 도구로 적응적으로 전환해 유연성과 효율성을 보장합니다.
  • 메모리: 인간의 피드백을 활용해 에이전트는 지속적인 메모리를 유지합니다. 구조화된 스키마를 사용해 메모리 프로필을 업데이트하며, 사용자 입력을 바탕으로 향후 결과를 개선할 수 있도록 검색 및 필터링을 지속적으로 조정합니다.

What Worked and What Didn’t

주말이 끝날 무렵, 많은 수동 테스트를 거쳐 성공과 몇 가지 과제를 경험했습니다:

  • 성공:
    • 에이전트가 사용자 선호와 쿼리 의도에 따라 개인화된 뉴스 콘텐츠를 성공적으로 제공했습니다.
    • 구조화된 프롬프트가 선호도 업데이트를 효과적으로 유도했습니다.
    • 에이전트가 사용자 메시지와 Tavily 결과의 품질에 따라 접근 방식을 적응시켰습니다.
    • 메모리 스키마 설계가 다양한 선호도를 체계적으로 정리하고 교차 오염을 방지했습니다.
  • 챌린지:
    • 이 에이전트는 사용자의 선호에 따라 시의적절한 뉴스 업데이트를 제공하도록 만들어졌습니다. 때때로, 에이전트가 최근이 아닌 수년 전의 결과를 반환하는 경우가 있었습니다. 이는 에이전트의 프롬프트를 추가로 조정하면 개선할 수 있을 것으로 보입니다.
    • Streamlit은 LLM 앞에 웹페이지를 빠르게 구현하는 데 훌륭한 프로토타이핑 도구였습니다. Streamlit 통합에 문제가 있었지만, 대부분은 마지막 순간에 즉흥적으로 코딩한 탓에 메모리 및 인간 개입 통합에 문제가 발생한 것이었습니다. 이는 더 많은 시간과 AI에 덜 의존했다면 해결할 수 있었던 문제로 보입니다.

Go Explore

이렇게 해서 Langgraph와 Tavily를 사용해 AI 시스템의 자동화, 의사결정, 사용자 선호 기반 적응 능력을 보여주는 간단한 뉴스 에이전트를 만들었습니다. 이 AI 에이전트를 구축하는 과정은 LangGraph와 LLM을 활용한 애플리케이션 개발을 더 깊이 탐구하는 계기가 되었습니다. 이 뉴스 에이전트의 전체 코드는 GitHub에서 확인할 수 있습니다.

Edit this page

On this Page