AI Sparkup

복잡한 AI 세상을 읽는 힘

Streamlit과 LangChain을 활용한 에이전틱 애플리케이션 구축하기

AI 기술이 발전함에 따라 사용자와 상호작용하며 복잡한 작업을 자율적으로 수행할 수 있는 애플리케이션 구축이 가능해졌습니다. 오늘은 Streamlit과 LangChain을 활용하여 웹 검색, 코드 실행, 데이터 시각화까지 모두 가능한 에이전틱 애플리케이션을 구축하는 방법을 소개합니다.

에이전틱 애플리케이션이란?

에이전틱 애플리케이션은 AI 에이전트를 활용하여 자율적으로 태스크를 수행하는 애플리케이션입니다. 이러한 에이전트는 다음과 같은 다양한 기능을 수행할 수 있습니다:

  • 인터넷에서 정보 검색하기
  • 계산을 위한 Python 코드 실행하기
  • 데이터를 동적으로 시각화하기
  • 자연스러운 상호작용을 위한 대화 기억 유지하기

이러한 기능들을 결합하면 상호작용성이 뛰어나고 복잡한 워크플로우를 처리할 수 있는 애플리케이션을 구축할 수 있습니다.

에이전틱 워크플로우 설정하기

에이전틱 워크플로우를 구축하기 위해 다음과 같은 도구들을 사용합니다:

  1. Tavily 검색 도구: 웹 검색을 위한 도구
  2. Python REPL 도구: Python 코드 실행을 위한 도구
  3. Llama 3.3 LLM: 응답 생성 및 도구 관리를 위한 언어 모델

1. 검색 도구 설정하기

먼저 Tavily와 Groq 웹사이트에서 API 키를 생성하고 환경 변수로 설정합니다. 그런 다음 검색 도구를 설정합니다.

from langchain_community.tools.tavily_search import TavilySearchResults
from langchain.agents import Tool
from langchain_experimental.utilities import PythonREPL

search = TavilySearchResults(max_results=1)

2. Python 인터프리터 도구 설정하기

python_repl = PythonREPL()
repl_tool = Tool(
    name="python_repl",
    description="Executes Python code and returns the result.",
    func=python_repl.run,
)

3. 언어 모델 설정하기

Groq API와 최신 Llama 모델을 사용하여 언어 모델을 설정합니다.

from langchain_groq import ChatGroq

llm = ChatGroq(
    model="llama-3.3-70b-versatile",
    temperature=0.7,
    max_tokens=1024,
    max_retries=2,
)

4. 에이전트 생성하기

도구를 호출하는 데 도움이 되는 채팅 프롬프트 템플릿을 만들고, 이러한 도구들을 결합하여 에이전트 실행기를 생성합니다.

from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder

prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "You are a helpful assistant"),
        ("human", "{input}"),
        MessagesPlaceholder("agent_scratchpad"),
    ]
)

tools = [search, repl_tool]
agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools)

이제 에이전트 실행기에 입력 프롬프트를 제공하고 스트림으로 응답을 생성할 수 있습니다.

에이전트 실행 결과

Streamlit 웹 애플리케이션 구축 및 배포하기

Streamlit을 사용하여 에이전틱 애플리케이션을 위한 인터랙티브 웹 인터페이스를 생성합니다. 이 애플리케이션은 다음과 같은 구성 요소로 이루어져 있습니다:

애플리케이션 구성 요소

  • 도구 통합:
    • 검색 도구: 웹 검색을 위해 Tavily 사용 (결과 한 개로 제한)
    • Python REPL 도구: Python 코드 실행 및 결과 반환
  • LLM 에이전트:
    • 온도 0.7, 최대 토큰 제한이 1024인 Groq 기반 LLM(Llama 3.3) 초기화
    • 에이전트는 검색 및 Python 실행과 같은 도구 사용 가능
  • 채팅 기록 및 메모리:
    • 지속적인 대화를 위한 채팅 기록 및 세션 상태 유지
    • 대화 상태를 체크포인트하고 복원하기 위한 MemorySaver 사용
  • 그림 유지:
    • 대화 중 생성된 Matplotlib 그림 저장 및 표시
    • 그림은 세션 상태에 저장되고 특정 메시지와 연결됨
  • 초기화 기능:
    • 채팅 기록, 그림 및 세션 상태를 지우고 새 대화를 시작하는 재설정 버튼 제공
  • 오류 처리:
    • 실패한 도구 호출에 대한 재시도 로직 구현 및 예기치 않은 오류를 원활하게 처리
  • UI 기능:
    • 관련 그림과 함께 이전 채팅 기록 표시
    • 사용자 입력이 도구 호출을 트리거하고 실시간으로 응답을 표시
    • 문서 링크가 포함된 푸터 포함

코드를 테스트한 후, 팀의 모든 사람이 접근할 수 있도록 앱을 배포할 차례입니다. “Create Streamlit app” 버튼을 클릭하면 앱이 배포되고 링크가 생성됩니다.

Streamlit 앱 배포

에이전틱 웹 애플리케이션 테스트하기

배포된 애플리케이션을 다양한 질문으로 테스트해 보겠습니다.

1. 뉴스 검색 테스트

세계 주요 뉴스에 대해 질문하면 수 초 내에 관련 뉴스 업데이트를 제공합니다.

뉴스 검색 테스트

2. Python REPL 계산 테스트

저축 계좌의 수익을 계산하는 데 Python REPL을 사용합니다. 결과는 1초도 채 걸리지 않아 매우 빠르게 생성되었습니다.

Python REPL 계산 테스트

3. 데이터 시각화 테스트

애플리케이션의 데이터 시각화 기능을 테스트하여 라인 차트를 생성합니다.

데이터 시각화 테스트

4. 인터넷 검색 테스트

동일한 수익을 제공하는 최고의 저축 계좌를 찾기 위해 인터넷 검색 기능을 테스트합니다.

결론

LangChain과 Streamlit을 결합하면 복잡한 워크플로우를 처리할 수 있는 강력한 에이전틱 애플리케이션을 구축할 수 있습니다. 이 튜토리얼에서는 다음과 같은 내용을 보여주었습니다:

  1. 도구와 LLM을 사용한 에이전틱 워크플로우 설정
  2. Streamlit을 사용한 인터랙티브 웹 애플리케이션 구축
  3. 실제 사용을 위한 애플리케이션 테스트 및 배포

이 프로젝트는 동적이고 사용자 친화적인 애플리케이션을 만드는 데 있어 AI 에이전트의 잠재력을 보여줍니다. 지금 바로 자신만의 에이전틱 워크플로우를 구축해 보세요!

개인적으로 이 기술의 가장 흥미로운 점은 복잡한 코드를 작성하지 않고도 사용자가 자연어로 요청한 작업을 수행할 수 있다는 것입니다. 웹 검색, 코드 실행, 데이터 시각화와 같은 기능이 하나의 인터페이스로 통합되면 개발자뿐만 아니라 비개발자도 데이터 분석 및 검색 작업을 쉽게 수행할 수 있게 됩니다. 특히 교육 분야나 빠른 프로토타이핑이 필요한 스타트업에서 큰 가치를 발휘할 것으로 생각됩니다.


참고자료: Building Agentic Application Using Streamlit and Langchain – KDnuggets


Awsom GPT에서 더 알아보기

구독을 신청하면 최신 게시물을 이메일로 받아볼 수 있습니다.

Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다