스트림릿과 랭체인을 활용한 에이전트 애플리케이션 구축하기

이 튜토리얼에서는 스트림릿(Streamlit)과 랭체인(LangChain)을 사용하여 에이전트 애플리케이션을 구축하는 방법을 알아보겠습니다. AI 에이전트를 결합함으로써 질문에 답변하고 인터넷을 검색할 뿐만 아니라 계산을 수행하고 데이터를 효과적으로 시각화하는 애플리케이션을 만들 수 있습니다. 이 가이드는 Python REPL, 검색 기능과 같은 도구를 강력한 LLM(Llama 3.3)과 통합하는 워크플로우를 만드는 과정을 안내합니다.
에이전트 애플리케이션이란?
에이전트 애플리케이션은 AI 에이전트를 활용하여 작업을 자율적으로 수행합니다. 이러한 에이전트는 다음과 같은 기능을 수행할 수 있습니다:
- 정보를 위해 인터넷 검색
- 계산을 위한 Python 코드 실행
- 데이터 동적 시각화
- 원활한 상호작용을 위한 대화 기억 유지
이러한 기능을 결합하여 높은 상호작용성과 복잡한 워크플로우를 처리할 수 있는 애플리케이션을 구축할 수 있습니다.
1. Deepnote에서 에이전트 워크플로우 설정하기
에이전트 워크플로우를 만들기 위해 다음 도구를 사용할 것입니다:
- Tavily 검색 도구: 웹 검색용
- Python REPL 도구: Python 코드 실행용
먼저, Tavily와 Groq 웹사이트를 방문하여 API 키를 생성하고 환경 변수로 설정합니다.

다음으로, 도구의 응답 속도를 높이기 위해 최대 결과 수를 1로 설정하여 검색 도구를 설정합니다.
from langchaincommunity.tools.tavilysearch import TavilySearchResults
from langchain.agents import Tool
from langchain_experimental.utilities import PythonREPL
search = TavilySearchResults(max_results=1)
이제 Python 인터프리터 도구를 설정합니다.
python_repl = PythonREPL()
repl_tool = Tool(
name="python_repl",
description="Executes Python code and returns the result.",
func=python_repl.run,
)
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,
)
도구를 호출하는 데 도움이 되는 채팅 프롬프트 템플릿을 만들고, 이러한 도구를 결합하여 에이전트 실행기를 만듭니다.
from langchain.agents import AgentExecutor, createtoolcalling_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 = createtoolcalling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools)
에이전트 실행기에 입력 프롬프트를 제공하고 스트림으로 응답을 생성합니다.
for step in agent_executor.stream(
{
"input": (
"Create a pie chart of the top 5 most used programming languages in 2025."
)
}
):
if "output" in step:
print(step["output"])
결과적으로 모델은 인터넷을 검색하고 프로그래밍 언어 사용 분포를 정확하게 보여주는 파이 차트 이미지를 생성합니다.
Python REPL can execute arbitrary code. Use with caution.

Based on the search results, the top 5 most used programming languages in 2025 are:
- Python
- JavaScript
- Java
- C++
C#
Here is a pie chart showing the distribution of these languages:
+---------------------------------------+
| Python 38.4% |
+---------------------------------------+
| JavaScript 24.1% |
+---------------------------------------+
| Java 15.6% |
+---------------------------------------+
| C++ 12.3% |
+---------------------------------------+
| C# 9.6% |
+---------------------------------------+
Note: The percentages are based on the search results and may not reflect the actual usage of these languages in the industry.
또한 검색 도구와 같은 개별 도구를 사용하여 지역의 현재 날씨에 대해 알아볼 수도 있습니다.
for step in agent_executor.stream(
(
{
"input": (
"What is the temperature in Islamabad?"
)
}
),
):
if "output" in step:
print(step["output"])
바깥이 비가 오고 있어 이것은 정확합니다.
The current temperature in Islamabad is 59°F (15°C) with some clouds.
2. Deepnote에서 Streamlit 웹 애플리케이션 구축 및 제공하기
Streamlit은 에이전트 애플리케이션의 대화형 웹 인터페이스를 만드는 데 사용됩니다. 이 섹션에서는 이전 섹션의 모든 내용을 결합하여 Streamlit 챗봇을 만듭니다.
앱은 다음 구성 요소로 이루어져 있습니다:
* 검색 도구: 하나의 결과로 제한된 Tavily를 웹 검색에 사용합니다.
* Python REPL 도구: Python 코드 실행을 허용하고 결과를 반환합니다.
* 온도 0.7, 최대 토큰 한도 1024로 Groq 기반 LLM(Llama 3.3)을 초기화합니다.
* 에이전트는 검색 및 Python 실행과 같은 도구를 사용할 수 있습니다.
* 지속적인 대화를 위한 채팅 기록 및 세션 상태를 유지합니다.
* MemorySaver를 사용하여 대화 상태를 체크포인트하고 복원합니다.
* 대화 중에 생성된 Matplotlib 그림을 저장하고 표시합니다.
* 그림은 세션 상태에 저장되고 특정 메시지와 연결됩니다.
* 채팅 기록, 그림 및 세션 상태를 지우고 새 대화를 시작하는 리셋 버튼을 제공합니다.
* 실패한 도구 호출에 대한 재시도 로직을 구현하고 예기치 않은 오류를 우아하게 처리합니다.
* 관련 그림과 함께 이전 채팅 기록을 표시합니다.
* 사용자 입력으로 도구 호출을 트리거하고 실시간으로 응답을 표시합니다.
* 문서 링크가 포함된 푸터를 포함합니다.
코드를 테스트했다면 모든 팀원이 액세스할 수 있도록 앱을 배포할 시간입니다. "Create Streamlit app" 버튼을 클릭하면 됩니다! 이렇게 하면 링크가 생성되고 어디서든 웹 애플리케이션을 경험할 수 있습니다.

작업 공간에서의 모습은 다음과 같습니다: "Open app" 버튼을 클릭하여 새 브라우저 탭에서 전체 화면으로 애플리케이션을 볼 수 있습니다.

3. 에이전트 웹 애플리케이션 테스트하기
배포된 애플리케이션을 세계에 관한 질문으로 테스트해 봅시다. 주요 뉴스 이야기에 대해 알아보고 싶다고 하면 몇 초 내에 관련 뉴스 업데이트를 제공합니다.

다음으로, Python REPL을 테스트하여 저축 계좌의 수익을 계산하는 데 도움을 얻어 보겠습니다. 답변은 1초도 채 걸리지 않고 생성되었습니다. 결과를 확인하기 위해 ChatGPT에 동일한 질문을 했습니다.

ChatGPT도 동일한 결과를 제공했지만 몇 초 더 걸렸습니다. 이는 우리 앱이 빠르고 정확하다는 것을 의미합니다.

이제 앱의 히스토리와 데이터 시각화 기능을 살펴보고 라인 차트를 생성해 보겠습니다.

마지막으로, 동일한 수익을 제공하는 최고의 저축 계좌를 찾기 위해 인터넷을 검색해달라고 요청했습니다.

놀랍습니다! 이 앱은 빠르고 정확하며 몇 초 만에 데이터 시각화를 생성합니다.
결론
LangChain과 Streamlit을 결합하면 복잡한 워크플로우를 처리할 수 있는 강력한 에이전트 애플리케이션을 구축할 수 있습니다. 이 튜토리얼은 다음을 시연했습니다:
- 도구와 LLM을 사용하여 에이전트 워크플로우 설정
- Streamlit을 사용하여 대화형 웹 애플리케이션 구축
이 프로젝트는 역동적이고 사용자 친화적인 애플리케이션을 만드는 데 있어 AI 에이전트의 잠재력을 보여줍니다. 오늘부터 자신만의 에이전트 워크플로우를 구축해 보세요.