첫번째 에이전트 - 웹 크롤링 및 요약 에이전트
동영상 강의
첫번째 에이전트로는 웹을 크롤링하고 요약해주는 에이전트를 만들어 보겠습니다.
python 설치
윈도우 검색에서 powershell 이라고 입력해서 터미널 환경으로 들어갑니다. 여기에서 python --version
을 입력하여 파이썬이 설치되어 있는지 확인합니다.
맥의 경우 terminal 을 검색해서 터미널 환경으로 들어갈 수 있습니다.
langchain 0.2 버전은 파이썬 3.8.1 이상이 필요합니다.
파이썬이 없거나 이보다 버전이 낮으면 파이썬 홈페이지에서 설치해 주세요. Welcome to Python.org
agent 폴더 만들기
이제 우리가 에이전트들을 만들 폴더를 만들겠습니다. 내가 폴더를 만들기를 원하는 곳으로 이동하여 다음과 같이 입력하세요.
mkdir agent
또는 그냥 파일관리자에서 폴더를 만들어도 됩니다.
이제 폴더로 이동해 우리가 작업할 새로운 폴더를 만들어 줍니다.
cd agent
mkdir websummary
코드 에디터 설치
코드 에디터가 없다면 vscode 설치
Download Visual Studio Code - Mac, Linux, Windows
가상 환경 생성
가상 환경 생성 (agent 라는 이름의 파이썬 가상 환경 생성)
python -m venv agent
가상 환경 활성화 (Linux/macOS)
source agent/bin/activate
가상 환경 활성화 (Windows)
agent\Scripts\activate
가상 환경 비활성화
deactivate
langchain 설치
langchain 은 llm을 사용하기 편리하게 만들어 놓은 프레임워크입니다. 다양한 기능들을 사용할 수 있어서 편리합니다. 물론 직접 다 구현하는 것이 원리를 이해하는 데 좋습니다. 하지만 먼저 프레임워크로 무엇이 가능한지 배운 다음에 나중에 구현하면 더 쉽게 배울 수 있습니다. 가장 많이 쓰이는 프레임워크이기 때문에 파이썬 버전으로 진행해 보겠습니다. 자바스크립트 버전도 있습니다.
터미널에서 다음과 같이 입력해 주세요.
pip install langchain-core langchain langchain-community
웹을 크롤링하고 요약하는 에이전트 만들어보기
WebBaseLoader | 🦜️🔗 LangChain 에서 WebBaseLoader 활용.
websummary 폴더에 app.py 파일을 만들고 다음과 같이 입력.
from langchain_community.document_loaders import WebBaseLoader
loader = WebBaseLoader("https://tilnote.io/pages/66af6526decbfa74fb75f66c")
data = loader.load()
# print(data[0])
# Documents 객체 리스트에서 각 Document 객체에 접근
for doc in data:
print("Source:", doc.metadata['source'])
print("Content:", doc.page_content[:100]) # 처음 100자만 출력
print("-" * 50) # 구분선 출력
터미널에서 python app.py
로 확인.
에러 핸들링
ModuleNotFoundError: No module named 'bs4'
다음과 같은 에러가 나오면 bs4 모듈이 없는 것입니다. 이럴 경우 pip install bs4
로 설치하면 됩니다.
결과
Source: https://tilnote.io/pages/66af6526decbfa74fb75f66c
Content: Claude 는 채팅 내역을 AI 모델 학습에 사용할까? ChatGPT, Claude, Gemini 모델 A - TILNOTETILNOTE틸노트 소개AI 뉴스공개 노트 검색회원가입
그록 설치
그록은 LLM을 빠르게 실행하기 위한 LPU를 클라우드로 제공하는 서비스입니다.
GroqCloud 에서 무료 사용량을 확인할 수 있습니다.
오픈소스 LLM 등을 사용할 수 있으며 분당 30회 정도의 관대한 무료 사용량을 제공합니다. 개인 프로젝트에서 쓰기 매우 좋습니다. llama 3.1 70B 정도면 분당 100회에, 하루 1백만 토큰으로 굉장히 유용하게 활용할 수 있습니다.
ID | Requests per Minute | Requests per Day | Tokens per Minute | Tokens per Day |
---|---|---|---|---|
gemma-7b-it | 30 | 14,400 | 15,000 | (No limit) |
gemma2-9b-it | 30 | 14,400 | 15,000 | (No limit) |
llama-3.1-405b-reasoning | 30 | 14,400 | 131,072 | 131,072 |
llama-3.1-70b-versatile | 100 | 14,400 | 131,072 | 1,000,000 |
llama-3.1-8b-instant | 30 | 14,400 | 131,072 | 1,000,000 |
llama-guard-3-8b | 30 | 14,400 | 15,000 | (No limit) |
llama3-70b-8192 | 30 | 14,400 | 6,000 | (No limit) |
llama3-8b-8192 | 30 | 14,400 | 30,000 | (No limit) |
llama3-groq-70b-8192-tool-use-preview | 30 | 14,400 | 15,000 | (No limit) |
llama3-groq-8b-8192-tool-use-preview | 30 | 14,400 | 15,000 | (No limit) |
mixtral-8x7b-32768 | 30 | 14,400 | 5,000 | (No limit) |
이제 그록을 설치하겠습니다.
pip install langchain-groq python-dotenv
API 키 환경 변수에 세팅하기
https://console.groq.com/keys
에서 키를 만들고 입력합니다. env 파일은 git 저장소나 공개된 장소에 노출되지 않도록 주의합니다.
프로젝트 루트 디렉토리에 .env
파일을 생성하고 API 키를 추가합니다:
GROQ_API_KEY=your_api_key_here
app.py 에 다음과 같이 추가합니다.
import os
os.environ["USER_AGENT"] = "web-agent"
from dotenv import load_dotenv
load_dotenv() # .env 파일에서 환경 변수를 로드합니다.
api_key = os.getenv("GROQ_API_KEY")
groq 세팅하기
import os
# 문제 해결 : USER_AGENT environment variable not set, consider setting it to identify your requests.
os.environ["USER_AGENT"] = "web-agent"
from langchain_community.document_loaders import WebBaseLoader
from dotenv import load_dotenv
from langchain_groq import ChatGroq
load_dotenv() # .env 파일에서 환경 변수를 로드합니다.
api_key = os.getenv("GROQ_API_KEY")
loader = WebBaseLoader("https://tilnote.io/pages/66af6526decbfa74fb75f66c")
data = loader.load()
# Documents 객체 리스트에서 각 Document 객체에 접근
# for doc in data:
# print("Source:", doc.metadata["source"])
# print("Content:", doc.page_content[:100]) # 처음 100자만 출력
# print("-" * 50) # 구분선 출력
llm = ChatGroq(
model="llama-3.1-70b-versatile",
)
messages = [
(
"system",
"Your task is to summarize the user's message to bullet points. Answer in Korean lanuage.",
),
("human", data[0].page_content),
]
ai_msg = llm.invoke(messages)
print(ai_msg.content)
이렇게 로컬에 무료로 사용할 수 있는 요약 에이전트가 완성되었습니다 :)
스트림릿으로 웹환경에서 사용하기
pip install streamlit
작성한 코드를 클로드를 통해 스트림릿으로 변경해달라고 하겠습니다. 스트림릿은 파이썬 환경에 웹 UI를 만들어주는 서비스입니다.
다음 코드를 web.py 로 저장해 주세요.
import streamlit as st
from langchain_community.document_loaders import WebBaseLoader
from langchain_groq import ChatGroq
from dotenv import load_dotenv
import os
# 환경 변수 로드
load_dotenv()
api_key = os.getenv("GROQ_API_KEY")
# Streamlit 앱 제목 설정
st.title("웹 페이지 요약기")
# 사용자로부터 URL 입력 받기
url = st.text_input("요약할 웹 페이지의 URL을 입력하세요:")
if st.button("요약하기"):
if url:
try:
# 로딩 메시지 표시
with st.spinner("웹 페이지를 분석 중입니다..."):
# 웹 페이지 로드
loader = WebBaseLoader(url)
data = loader.load()
# Groq LLM 초기화
llm = ChatGroq(
model="llama-3.1-70b-versatile",
)
# 메시지 준비
messages = [
(
"system",
"Your task is to summarize the user's message in bullet points. Answer in Korean language.",
),
("human", data[0].page_content),
]
# LLM 호출
ai_msg = llm.invoke(messages)
# 결과 표시
st.subheader("요약 결과:")
st.write(ai_msg.content)
except Exception as e:
st.error(f"오류가 발생했습니다: {str(e)}")
else:
st.warning("URL을 입력해주세요.")
터미널에서 다음 명령어로 Streamlit 앱을 실행하면 됩니다.
streamlit run web.py
에러 핸들링
ModuleNotFoundError: No module named 'bs4'
위와 같이 모듈을 찾을 수 없다는 에러가 나오면 pip install bs4 와 같은 방식으로 설치하면 됩니다.