본문 바로가기
  • think normal
새로워지기/마흔의 생활코딩

Pandas AI | 판다스와 로컬 LLM와의 만남(feat.ollama)

by 청춘만화 2024. 6. 15.

파이썬의 데이터 분석 라이브러리로 "관계형" 또는 "레이블이 지정된" 데이터 작업을 쉽게 할 수 있도록 설계된 빠르고 유연하며 표현력이 풍부한 데이터 구조를 제공하는 Python 패키지다. 데이터 분석을 위한 도구로 넘파이와 함께.. 완전 전문가가 아니라면 어쩌면 넘파이보다 더 자주 만나게 되는 패키지이다. 

그 패키지를 기반으로 LLM을 적용한, 데이터 분석을 위한 오픈 소스 AI 에이전트가 pandas-ai이다.

👉 1. Pandas AI | 판다스AI와 로컬 LLM와의 만남(feat.ollama)
2. Pandas AI | 판다스AI with Agent, OpenAI, MySQL 

첫 실습은 먼저 로컬 LLM을 기반으로 활용해보는 과정을 담고 있다. 더 쉬운 시작이 있긴 하지만 여러모로 완벽하지 않은 도구에 불필요한 api 비용 지출하는 일을 막기 위해 이미 설치되어 있는 로컬 LLM 기반으로 하는 실습을 먼저 진행하기로 한다. 

 

 

0. 레퍼런스

데이터 분석을 위한 오픈 소스 AI 에이전트

 

PandasAI - Conversational Data Analysis

PandasAI is a Python library that integrates generative artificial intelligence capabilities into pandas, making dataframes conversational

pandas-ai.com

깃허브 

 

GitHub - Sinaptik-AI/pandas-ai: Chat with your database (SQL, CSV, pandas, polars, mongodb, noSQL, etc). PandasAI makes data ana

Chat with your database (SQL, CSV, pandas, polars, mongodb, noSQL, etc). PandasAI makes data analysis conversational using LLMs (GPT 3.5 / 4, Anthropic, VertexAI) and RAG. - Sinaptik-AI/pandas-ai

github.com

 

 

 


1. 콤퓨터에 ollama 설치, 개별 모델 다운로드 

https://www.ollama.com/

 

Ollama

Get up and running with large language models.

ollama.com

 

 

2. 가상 환경 설정 

python -m venv ENV_NAME

*ENV_NAME는 내가 임의로 정하는 이름 

 

3. 가상 환경 실행

- Mac
source ENV_NAME/bin/activate

- Windows
ENV_NAME\\bin\\activate

 

 

4. 기존 패키지 구성 : requirements.txt

pandas
pandasai
streamlit 

 

 

5. 패키지 설치 

pip install -r requirements.txt

 

6. streamlit 기본 화면 체크 

from pandasai.llm.local_llm import LocalLLM
import streamlit as st 

model = LocalLLM(
    api_base="<http://localhost:11434/v1>",
    model="llama3"
)

#st.UI-타이틀 
st.title("Data analysis with PandasAI")

 

 

7. 파일 업로드 UI구성

...

#st.UI-타이틀 
st.title("Data analysis with PandasAI")

#st.UI-데이터 세트로드 
upload_file = st.file_uploader("upload a CSV file", type=['csv'])

드래그 앤 드롭으로 파일업로드

 

 

 

ㅋㅋㅋ 

 

 

스트림릿은 파이썬 베이스 프레임워크이다. 그래서 파이썬 코드를 화면에 바로 런더링할 수도 있다. 파이썬에서 인터프리트 방식으로 한 줄 실행하듯, (또는 print 또는 printf)내가 원하는 특정 코드를 화면에 출력할 수 있다. 

엑셀 파일을 업로드하면, 파일을 읽어 첫 3줄(행)을 화면에 띄워보자 

...
import pandas as pd
if uploaded_file is not None:
    df = pd.read_csv(uploaded_file)
    st.write(df.head(3))

신기하고 감탄스러운 부분은 표 내부를 아래와 같이 검색하거나 재정렬을 할 수 있다는 점이다. 와.. 라때는.. 이런 소소한? 기능 어드민 추가하기 위해 그 시절 개발자 형님들과 커피를 몇 잔을 드링킹했던가.. ㅋㅋ 

 

 

이번엔 프롬프트(QA) 입력 UI를 담아보기로 한다. 주요 내용은 데이터 프레임에 llm을 연결한 후 SmartDataframe과 연결한다는 점이다.

...
from pandasai import SmartDataframe
if uploaded_file is not None:
    data = pd.read_csv(uploaded_file)
    st.write(data.head(3))

    df = SmartDataframe(data, config={"llm":model})
    prompt = st.text_area("Enter your prompt:")
    
    if st.button("Generate"):
        if prompt:
            with st.spinner("Generating response..."):
                st.write(df.chat(prompt))

 

그리고 프롬프트에 메시지를 남기면 업로드한 엑셀파일을 기반으로 아래와 같은 결과를 얻을 수 있게 된다. 

 

 

 

 

여기서 중요한 점은 어느 데이터베이스와 같겠지만, 판다스AI 역시 '쓰레기가 들어가면 쓰레기가 나온다'는 점이다. 

 

Garbage in, garbage out
가비지 인 가비지 아웃

 

 

 

 

라떼..는 OA 관련 자격증. 그러니까 대표적으로 컴퓨터활용능력, ITQ, 모스(MOS), 사무자동화 산업기사 자격증이 필수인 시대가 있었다. 지금 생각하면(물론 아직도 쓰이는 곳이 많지만??..) 어이가? 없을 수도 있다. 너무나 당연하기 때문이다. 그리고 각각의 툴이 제공하는 기능이야 무궁무진하겠지만.. 실무에서는 세세한 기능 모두를 암기해서 사용하기 보다. 기본적인 기능만 이해하고.. 특별히 필요한 기능이 있으면 때그 때 리서치를 하면서 바로 배워서 사용하기 때문이다.

인공지능 관련 툴(또는 서비스) 또한 다르지 않을 것 같은 느낌이다.
최근들어 프롬프트 엔지니어링(생성형 이미지, 텍스므 모두)이나 인공지능을 활용한 유튜브, 블로그, 교육과정 등 블라블라- 다양한 콘텐츠가 소비되고 있는데.. 조만간 데자뷰와 같이 유사한 상황이
계속될 것 같다.

 

 

댓글