KPMG Future Academy AI 활용 데이터 분석가 3기 24일차 수업을 2024년 12월 19일에 참석했다.
지난 시간 streamlit 마무리
로딩 스피너 추가
이미지 생성기 추가
비주얼스튜디오 주석처리
ctrl + k, ctrl + c
포트 하나 더 열기
이제 개발환경에서 여러 터미널 상에 동시 작업할 수 있다.
챗봇 중간 작업
답변 글자 스트리밍되게 설정
답변을 OpenAI로 받아오도록 설정
키 설정 완료하니 OpenAI가 답변함
chunk 단위로 답변 출력을 해도 된다.
문맥을 기억하는 작업 추가
이제 나만의 챗봇으로 좀 더 디벨롭을 진행하였다.
게임속 NPC로 설정된 멍챗봇
RAG 검색 증강 생성
인덱싱 = 나만의 데이터 구축
Load -> Split -> Embed -> Store
Embed : 데이터를 모두 숫자로 변형
Store : 벡터 데이터베이스 3차원 형태로 저장
사용자 맞춤형 답변을 받을 수 있음.
(점심시간 전까지 1차 프로젝트 관련하여 30분 간 논의하는 시간을 가졌다.)
실습
RAG 활용 뉴스 분석
커널에 연결
base가 아닌 streamlit 커널에서 작업중인지 확인
가상환경 터미널에 LangChain, LangChain-community, LangChain-openai, pypdf, tiktoken, FAISS, BS4 설치
pip install LangChain LangChain-community LangChain-openai pypdf tiktoken faiss-cpu bs4
tiktoken : openAI 토큰 계산 및 관리 라이브러리
faiss-cpu : 벡터 검색 라이브러리, facebook AI 연구팀에서 개발
bs4 : beautiful soup 웹 스크래핑 라이브러리
.env 파일에 OpenAI 키 저장
SPLIT
EMBED, STORE
QUESTION
RETRIEVE
RESULT
LangChain document
https://python.langchain.com/docs/introduction/
참고 서적
https://wikidocs.net/book/14314
부영기업의 출산 부흥 정책에 대한 기사에 '해당 기간에 연년생과 쌍둥이 자녀가 있으면 총 2억원을 받게 됩니다.'라는 모호한 기사문이 있어 이에 대해 ChatGPT에게 물어보았다.
기사 발췌 : https://n.news.naver.com/article/437/0000378416
아래부터 질문 및 답변.
마지막 답변에 대한 나의 질문 : 쌍둥이는 자정에 걸쳐서 태어나면 '한해에 태어난 쌍둥이'라는 개념에 포함시키면서, 연년생은 왜 '한해에 태어난 연년생' 개념에 포함 안 시키는지...?
기사의 원래 글이 주장하는 바는 추정하건데 다음과 같다.
해당 기간 동안에 자녀가 태어날 때마다 각각 1억원을 주고, 쌍둥이나 연년생도 각각 1억원씩 준다는 내용 같다. (이 경우 연년생은 왜 굳이 언급한 것인지 모르겠다.) 혹은, 쌍둥이이기도 하고 그 쌍둥이가 먼저 태어난 자녀와 연년생이기도 한 경우(즉 총 3명) 그 쌍둥이에 대해 2억원을 준다(원래는 쌍둥이여도 1억원)는 것을 말하고 싶었던 것일까?
결론은 어떠한 경우에도 자녀 1명 당 1억원을 준다는 뜻 같은데 굳이 언급해서 혼란만 키운 문구 같다. 하지만 저 공식 기사로 인해 아래와 같은 주장을 해볼 수는 있다.
2020년 12월 31일과 2021년 1월 1일 사이 자정에 각각 쌍둥이 첫째, 둘째를 낳은 경우 2억원을 받을 수 있다.
반대로 주최측은 아래와 같이 주장할 수도 있다.
연년생과 쌍둥이 총 3명이 태어난 경우에 총 2억원을 지급한다.
이후 시간에는 1차 팀 프로젝트 의논 및 조사를 진행했다.
번외
클라우드 서비스(예: google colab)에서 로컬 환경의 가상환경에 원격 접속하기
: 로컬 환경의 가상환경을 Google Colab에서 직접 사용하는 것은 불가능하지만 SSH 터널링이나 pyngrok을 사용하여 로컬 서버를 Google Colab에서 접근하는 방법을 사용할 수 있음. 가장 추천되는 방법은 로컬 환경에서 pyngrok을 통해 Jupyter 서버를 외부에 노출시키는 방법. 이 방법으로 직접적인 가상 환경 연결이 가능함.
참고
가상환경에서 작업하면 좋은 점 : 의존성 (다른 버전 등) 관리에 용이
각 가상환경마다 별도의 라이브러리 환경을 만들 수 있음