728x90
반응형
이번 글에서는 Streamlit과 PandasAI를 활용해서 CSV 파일을 분석할 수 있는 챗봇을 만드는 방법을 소개하려고 합니다.
pandasai는 데이터 분석을 위한 오픈소스 AI 도구입니다. 주요 특징은 다음과 같습니다:
- 일반 언어로 데이터에 대한 질문을 하면 실시간 인사이트를 제공
- 복잡한 코딩 없이도 데이터 분석 가능
- SQL, NoSQL, CSV, xls 등 다양한 데이터 소스 연결 지원
- 여러 데이터 소스를 통합 분석 가능
1. 개요
이 프로젝트는 여러 개의 CSV 파일을 업로드하고, 자연어로 데이터에 대해 질문하면 답변을 제공하는 웹 애플리케이션입니다.
2. 필요한 라이브러리 설치
pip install pandas pandasai streamlit openai
3. 코드 설명
먼저 필요한 라이브러리들을 임포트합니다:
import pandas as pd
from pandasai import SmartDataframe
from pandasai.llm.local_llm import LocalLLM
import logging
from openai import OpenAI
from pandasai import Agent
import streamlit as st
3.1 로컬 LLM 설정
LM Studio를 통해 로컬에서 LLaMA 모델을 실행하고 연결합니다. 로컬 LLaMA 모델 뿐 아니라 OpenAI 등 api key가 필요한 상용 모델도 사용할 수 있습니다. pandasAI 홈페이지를 참고하세요:
llm = LocalLLM(
api_base="http://localhost:1234/v1",
model="meta-llama-3.1-8b-instruct.q8_0",
temperature=0.3
)
3.2 Streamlit UI 구성
사용자 친화적인 인터페이스를 만들기 위해 Streamlit을 사용합니다:
# Wide 모드로 페이지 설정
st.set_page_config(layout="wide")
# CSV 파일 업로더 추가
uploaded_files = st.file_uploader("CSV 파일 업로드", type=['csv'], accept_multiple_files=True)
3.3 데이터 처리 및 챗봇 구현
업로드된 CSV 파일을 처리하고 PandasAI Agent를 통해 질문-답변을 구현합니다:
if uploaded_files is not None:
# CSV 파일들을 데이터프레임으로 변환
dataArr = []
for file in uploaded_files:
data = pd.read_csv(file)
st.write(data.head(3)) # 미리보기 표시
dataArr.append(pd.DataFrame(data))
# PandasAI Agent 설정
agent = Agent(dataArr, config={"llm": llm})
# 질문 입력 필드
prompt = st.text_area("질문을 입력하세요:")
# 질문 처리
if st.button("보내기"):
if prompt:
with st.spinner("응답 생성중입니다..."):
st.write(agent.chat(prompt))
4. 실행 방법
다음 명령어로 애플리케이션을 실행할 수 있습니다:
streamlit run pandas_test.py --server.baseUrlPath=/pandasai --server.enableCORS=false --server.enableXsrfProtection=false
5. 주요 기능
- 다중 CSV 파일 업로드 지원
- 업로드된 데이터 미리보기 제공
- 자연어로 데이터 분석 질문 가능
- 실시간 응답 생성
6. 활용 예시
- 데이터 통계 분석
- 데이터 시각화 요청
- 데이터 간의 관계 분석
- 특정 조건에 맞는 데이터 검색
이 애플리케이션을 통해 프로그래밍 지식이 없는 사용자도 쉽게 데이터 분석을 수행할 수 있습니다.
아래 파일은 전체 소스입니다.
728x90
반응형
'코딩 강좌 > 파이썬(Python) 팁' 카테고리의 다른 글
파이썬 정렬 팁 (0) | 2022.06.24 |
---|