이 시스템은 파일 업로드부터 텍스트 생성까지의 전체 프로세스를 관리하는 Text_Generation 클래스를 중심으로 구성되어 있습니다.
-
- 모델 초기화
- 기본 설정 구성
-
- OpenAI API 키 설정
- LangChain 컴포넌트 초기화
- 메모리 설정
-
- 파일 유효성 검증
- 텍스트 추출
- 데이터 정제
-
- 파일 처리
- 텍스트 분할
- 임베딩 프로세스 시작
-
- 텍스트 임베딩 생성
- 배치 처리
- 캐시 관리
-
- FAISS 인덱스 설정
- 벡터 저장소 구성
- 검색 설정
-
- 프롬프트 구성
- GPT 모델 호출
- 토큰 계산
- 비용 계산
-
- FAISS 인덱스 저장
- 저장 경로 관리
-
- 임베딩 데이터 저장
- 캐시 파일 관리
-
- 저장된 인덱스 로드
- 유효성 검증
-
- 텍스트 정제
- 특수문자 처리
-
- 임베딩 캐시 저장
- 캐시 키 생성
-
- 캐시 초기화
- 임시 파일 정리
-
- API 오류 처리
- 재시도 로직
-
- 자동 재시도
- 에러 로깅
graph LR
A[파일 업로드] --> B[텍스트 추출]
B --> C[텍스트 분할]
C --> D[임베딩 생성]
D --> E[벡터 저장소]
E --> F[GPT 모델]
F --> G[텍스트 생성]
- langchain: LLM 통합 및 체인 관리
- openai: GPT 모델 접근
- faiss-cpu: 벡터 검색 엔진
- streamlit: 웹 인터페이스
- numpy: 수치 연산
- pandas: 데이터 처리
-
임베딩 캐시
- 생성된 임베딩 저장
- 재사용으로 API 비용 절감
-
FAISS 인덱스 캐시
- 벡터 검색 인덱스 저장
- 빠른 검색 성능 유지
-
API 응답 캐시
- API 호출 결과 임시 저장
- 중복 요청 방지
-
API 레이트 리밋 처리
- 자동 재시도
- 지수 백오프
-
재시도 메커니즘
- 일시적 오류 자동 복구
- 최대 재시도 횟수 설정
-
사용자 피드백
- 진행 상태 표시
- 오류 메시지 명확화
# Text_Generation 클래스 초기화
text_gen = Text_Generation()
# 파일 처리 및 임베딩
docsearch, num_chunks = text_gen.process_and_embed_files(uploaded_files)
# 텍스트 생성
response = text_gen.gpt_text_generation(system_prompt, assistant_content, user_query)- API 키는 반드시 안전하게 관리
- 대용량 파일 처리 시 메모리 사용량 주의
- 캐시 저장소 정기적 관리 필요