Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feat] 위키피디아 문서 크롤링과 KoBEST 데이터셋을 활용한 데이터 증강 #70

Merged
merged 85 commits into from
Dec 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
8710214
chore: .DS_Store 제외
gsgh3016 Dec 4, 2024
5628f51
chore: 데이터 실험 중간 결과 디렉토리 생성
gsgh3016 Dec 4, 2024
ffc3c2a
refactor: 이전 #17 실험 결과 파일 모듈 수정
gsgh3016 Dec 4, 2024
0777f5b
fix: 파일 경로 수정
gsgh3016 Dec 4, 2024
c2468c3
feat: 문제 속 정보에 따른 데이터 분류 실험
gsgh3016 Dec 4, 2024
4e0ea72
fix: `to_csv` 호출 시 `index=False` 추가
gsgh3016 Dec 4, 2024
9a14ad6
docs: 현재 실험 streamlit 실행 설명 추가
gsgh3016 Dec 4, 2024
45d89dd
feat: 문제에서 키워드 추출하는 실험 추가
gsgh3016 Dec 4, 2024
54ce2ea
feat: 실험 1.0.0에서 키워드 별 위키피디아 페이지 존재 여부 확인 추가
gsgh3016 Dec 4, 2024
6d38ec7
chore: `data/experiments/.gitkeep` 추가
gsgh3016 Dec 4, 2024
e2d0a9e
feat: 실험 1.0.1 추가
gsgh3016 Dec 4, 2024
27f0bcb
feat: 실험 1.0.2 추가
gsgh3016 Dec 4, 2024
b6bf5ea
fix: 결과 파일 저장 로직 변경
gsgh3016 Dec 4, 2024
7b3d1a1
feat: 데이터 통합 모듈 개발
gsgh3016 Dec 4, 2024
99fa765
feat: 지문 생성 스켈레톤 코드 추가
gsgh3016 Dec 4, 2024
06a3fb7
docs: `ParagraphGenerator`에 주석 추가
gsgh3016 Dec 4, 2024
1d200c9
fix: 상대 경로 import로 수정
gsgh3016 Dec 4, 2024
21db557
feat: 프롬프트 및 입력 파이프라인 생성
gsgh3016 Dec 4, 2024
d4e5bc3
feat: 지문 생성 실험 3.0.1 추가
gsgh3016 Dec 4, 2024
246024a
feat: 지문 생성 실험 3.0.2 추가
gsgh3016 Dec 4, 2024
a42166a
feat: 업데이트 여부에 따라 버저닝 변경 로직 추가
gsgh3016 Dec 4, 2024
e41269b
feat: 지문 생성 실험 3.0.3 추가 - 모델 추론을 정보 생성, 지문 편집으로 나눔
gsgh3016 Dec 4, 2024
f06383e
feat: 데이터 버전 매니저에서 실험 여부에 따라 업데이트 결정하는 기능 추가
gsgh3016 Dec 4, 2024
d6b8ae6
fix: 실험 3.0.3 결과 파일 수정
gsgh3016 Dec 4, 2024
ad9c3ba
feat: 실험 결과 저장을 위한 Major, Minor 버전 업그레이드한 경로 출력 기능
gsgh3016 Dec 4, 2024
d2247fc
feat: 실험 1.1.0 추가 - 20개 랜덤 데이터에 reasoning
gsgh3016 Dec 4, 2024
1a8e981
fix: `update_file_path`에서 micro 버전 업데이트 가능하도록 변경
gsgh3016 Dec 4, 2024
af2bf8e
feat: 실험 1.1.1 세팅 완료
gsgh3016 Dec 4, 2024
8b60938
feat: 실험 1.2.0 초기 세팅
gsgh3016 Dec 4, 2024
1076dee
feat: reasoning 바탕으로 키워드 추출 실험 1.2.0 추가
gsgh3016 Dec 4, 2024
63d9184
fix: 문제와 추출된 키워드가 잘못 연결되어있던 문제 해결
gsgh3016 Dec 4, 2024
8e6f64a
feat: 실험 1.1.1 - 전체 데이터 적용
gsgh3016 Dec 4, 2024
53850f8
fix: `DataVersionMaanger.update_file_path` 함수 호출 시
gsgh3016 Dec 4, 2024
2a00a68
feat: 실험 1.2.1 추가 - 전문 용어, 도메인 특화 용어를 선정도록 프롬프트 변경
gsgh3016 Dec 4, 2024
fe06c5e
feat: 실험 1.2.2 추가 - 전체 train 데이터에 1.2.1 적용
gsgh3016 Dec 4, 2024
3ba47a7
fix: 새로운 major, minor 버전도 생성하도록 수정
gsgh3016 Dec 4, 2024
d8c03b4
feat: 실험 1.3.0 추가 - 문제에 맞게 문서 요약
gsgh3016 Dec 4, 2024
78d7be6
feat: 실험 1.3.1 추가 - 요약 시 문제 배제하도록 함
gsgh3016 Dec 4, 2024
d1dcc65
feat: 실험 1.3.2 - 키워드와 위키피디아 문서만을 이용한 요약
gsgh3016 Dec 4, 2024
3be5bf9
feat: 실험 0.1.0 - reasoning 바탕으로 문제 유형 분류
gsgh3016 Dec 4, 2024
1ed45a9
feat: 실험 1.3.3 - 프롬프트 말단에 추가 명령
gsgh3016 Dec 4, 2024
11d646e
feat: 실험 0.1.1 - CoT 적용 및 이유를 포함한 Json 형식으로 출력
gsgh3016 Dec 4, 2024
8f5164d
feat: 실험 0.1.2 - reasoning 기반 전체 데이터 재분류
gsgh3016 Dec 4, 2024
f1420c4
fix: 새로운 버전에서 micro 버저닝 수정
gsgh3016 Dec 4, 2024
eca2614
feat: 실험 1.3.4 - 1.3.3 전체 적용 세팅
gsgh3016 Dec 4, 2024
5a1fa5a
feat: 실험 3.1.0 세팅
gsgh3016 Dec 4, 2024
7b0b2e7
refactor: document_summarization.ipynb으로 이름 변경
gsgh3016 Dec 4, 2024
bf0c2c7
fix: data_version.yaml 삭제 후 파일만 스캔하도록 변경
gsgh3016 Dec 4, 2024
8e7ecdf
feat: 실험 1.3.5 추가 - 프롬프트 규칙 수정
gsgh3016 Dec 4, 2024
391798c
refactor: reasoning 프롬프트 위치 변경
gsgh3016 Dec 4, 2024
e576715
feat: 실험 4.0.0 및 4.0.1 - KoBEST 데이터 활용 문제 생성
gsgh3016 Dec 4, 2024
3f06e79
feat: 실험 1.3.6 - 전체 위키피디아 문서 요약
gsgh3016 Dec 4, 2024
c85ec11
feat: 실험 4.0.1 - 문제 유효성 검증
gsgh3016 Dec 4, 2024
0e5ac94
feat: 실험 4.0.2 - 유효성 검사 프롬프트 완화
gsgh3016 Dec 4, 2024
1a2b6fd
feat: 실험 4.0.3 - 실험 4.0.1로 600개 데이터에 샘플링해 적용
gsgh3016 Dec 4, 2024
7802cdf
refactor: ipynb 파일과 분리하기 위한 파일 정리
gsgh3016 Dec 4, 2024
d720178
feat: 프롬프트 베이스라인 생성
gsgh3016 Dec 4, 2024
5571901
feat: 프롬프트 파일에서 입력 변수를 감지하는 기능 추가
gsgh3016 Dec 4, 2024
0a11fcf
feat: 증강에서 사용하는 langchain 코드 모듈화
gsgh3016 Dec 4, 2024
fdab6b1
refactor: `text_crawler.py` 위치 이동
gsgh3016 Dec 4, 2024
ddc4637
feat: 증강 관련 추상 모듈 및 reasoning 모듈 추가
gsgh3016 Dec 4, 2024
4c0c601
refactor: 상수 관리 모듈 생성
gsgh3016 Dec 4, 2024
f0b178b
refactor: 문제 풀이 과정 추론 모듈 이름 변경
gsgh3016 Dec 4, 2024
2dd6293
feat: 데이터 프레임 칼럼 및 프롬프트 변수 명 상수 추가
gsgh3016 Dec 4, 2024
2250d78
docs: `BaseProcessor` docstring 추가
gsgh3016 Dec 4, 2024
4dd704e
feat: 기존 데이터 칼럼 명 추가
gsgh3016 Dec 4, 2024
d86192b
feat: 문제 분류 모듈화
gsgh3016 Dec 4, 2024
3900a87
fix: `LangchainManager`에서 `OutputFixingParser`가 동작하도록 수정
gsgh3016 Dec 4, 2024
db4e22b
feat: `process` 함수가 하나의 역할만 수행하도록 수정
gsgh3016 Dec 4, 2024
06da131
fix: 필요 없는 인자 제거 및 상수 추가
gsgh3016 Dec 4, 2024
e662a60
feat: 키워드 추출 모듈 추가
gsgh3016 Dec 4, 2024
d6e787f
feat: 크롤링 모듈이 데이터 프레임 단위로 동작하도록 변경
gsgh3016 Dec 4, 2024
1692692
feat: 캡슐화 원칙에 따른 모듈화
gsgh3016 Dec 4, 2024
d8810e3
feat: 지문 생성 모듈 및 에러 수정
gsgh3016 Dec 4, 2024
9763207
feat: paragraph 다듬는 모듈 추가
gsgh3016 Dec 4, 2024
6b780a5
fix: 오타 수정
gsgh3016 Dec 4, 2024
c58e657
feat: 증강 모듈 사용 예시 파일 생성
gsgh3016 Dec 4, 2024
6594558
feat: KoBEST 증강 추가
gsgh3016 Dec 4, 2024
461e7f4
docs: 실험 문서 및 설명 추가
gsgh3016 Dec 4, 2024
ab8ff3c
refactor: 필요 없는 노트북 파일 삭제
gsgh3016 Dec 4, 2024
7c25c8c
docs: docstring 및 주석 추가
gsgh3016 Dec 4, 2024
5b191e9
feat: 중간 결과 저장 기능
gsgh3016 Dec 4, 2024
21703e7
refactor: 사용하지 않는 프롬프트 파일 삭제
gsgh3016 Dec 4, 2024
661f963
refactor: 사용하지 않는 함수 제거
gsgh3016 Dec 4, 2024
e5a3f86
docs: 노트북 markdown 추가
gsgh3016 Dec 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
__pycache__/
*.py[cod]
*$py.class
.DS_Store/
*.DS_Store

# C extensions
*.so
Expand Down Expand Up @@ -175,8 +177,9 @@ pyrightconfig.json

# End of https://www.toptal.com/developers/gitignore/api/python

data/*
data/*.csv
!data/.gitkeep
!data/experiments/.gitkeep

*.csv
output*/
Expand Down
1 change: 1 addition & 0 deletions augments/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from .modules import *
178 changes: 178 additions & 0 deletions augments/kobest_augmentation.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"/Users/chan/boostcamp-project/level2-nlp-generationfornlp-nlp-06-lv3\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/chan/boostcamp-project/level2-nlp-generationfornlp-nlp-06-lv3/.venv/lib/python3.11/site-packages/IPython/core/magics/osm.py:417: UserWarning: This is now an optional IPython functionality, setting dhist requires you to install the `pickleshare` library.\n",
" self.shell.db['dhist'] = compress_dhist(dhist)[-100:]\n"
]
}
],
"source": [
"%cd .."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/chan/boostcamp-project/level2-nlp-generationfornlp-nlp-06-lv3/.venv/lib/python3.11/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
" from .autonotebook import tqdm as notebook_tqdm\n"
]
}
],
"source": [
"from augments import KoBESTAugment"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 10/10 [00:39<00:00, 3.91s/it]\n",
"100%|██████████| 10/10 [00:06<00:00, 1.53it/s]\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>paragraph</th>\n",
" <th>question</th>\n",
" <th>choices</th>\n",
" <th>answer</th>\n",
" <th>is_valid</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>728</th>\n",
" <td>DNA는 뉴클레오타이드의 중합체인 두 개의 긴 가닥이 서로 꼬여있는 이중나선 구조로...</td>\n",
" <td>지문에 따르면, DNA의 주요 기능 중 하나는 무엇인가?</td>\n",
" <td>[DNA는 세포의 에너지를 생성하는 역할을 한다., DNA는 유전정보를 통해 유전자...</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>296</th>\n",
" <td>브루나이 음식은 종종 매운 맛이 나며, 일반적으로 쌀이나 국수와 함께 먹는다. 브루...</td>\n",
" <td>지문에 따르면, 브루나이 음식의 특징으로 옳은 것은?</td>\n",
" <td>[브루나이 음식은 일반적으로 매운 맛이 나며, 쌀이나 국수와 함께 제공된다., 브루...</td>\n",
" <td>1</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>티탄은 그리스 신화에 등장하는 거대하고 강력한 신의 종족으로 다음 세대인 올림포스 ...</td>\n",
" <td>지문에 따르면, 티탄이 그리스 신화에서 차지하는 역할은 무엇인가?</td>\n",
" <td>[티탄은 올림포스 신들이 세상을 지배하기 전의 황금 시대를 다스린 신의 종족이다.,...</td>\n",
" <td>1</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>622</th>\n",
" <td>버섯 구름(mushroom cloud)은 응축된 수증기나 먼지로 구성된 버섯 형상의...</td>\n",
" <td>지문에 따르면, 버섯 구름이 생성되는 주된 원인은 무엇인가?</td>\n",
" <td>[핵폭발과 같은 매우 큰 폭발의 결과로 형성된다., 주로 화산 폭발로 인해 자연적으...</td>\n",
" <td>1</td>\n",
" <td>True</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" paragraph \\\n",
"728 DNA는 뉴클레오타이드의 중합체인 두 개의 긴 가닥이 서로 꼬여있는 이중나선 구조로... \n",
"296 브루나이 음식은 종종 매운 맛이 나며, 일반적으로 쌀이나 국수와 함께 먹는다. 브루... \n",
"35 티탄은 그리스 신화에 등장하는 거대하고 강력한 신의 종족으로 다음 세대인 올림포스 ... \n",
"622 버섯 구름(mushroom cloud)은 응축된 수증기나 먼지로 구성된 버섯 형상의... \n",
"\n",
" question \\\n",
"728 지문에 따르면, DNA의 주요 기능 중 하나는 무엇인가? \n",
"296 지문에 따르면, 브루나이 음식의 특징으로 옳은 것은? \n",
"35 지문에 따르면, 티탄이 그리스 신화에서 차지하는 역할은 무엇인가? \n",
"622 지문에 따르면, 버섯 구름이 생성되는 주된 원인은 무엇인가? \n",
"\n",
" choices answer is_valid \n",
"728 [DNA는 세포의 에너지를 생성하는 역할을 한다., DNA는 유전정보를 통해 유전자... 2 True \n",
"296 [브루나이 음식은 일반적으로 매운 맛이 나며, 쌀이나 국수와 함께 제공된다., 브루... 1 True \n",
"35 [티탄은 올림포스 신들이 세상을 지배하기 전의 황금 시대를 다스린 신의 종족이다.,... 1 True \n",
"622 [핵폭발과 같은 매우 큰 폭발의 결과로 형성된다., 주로 화산 폭발로 인해 자연적으... 1 True "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kobest_augment = KoBESTAugment()\n",
"kobest_augment.sample_data(10) # 10개 샘플로 생성\n",
"kobest_augment.process()\n",
"kobest_augment.data"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
11 changes: 11 additions & 0 deletions augments/modules/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from .base_processor import *
from .classification import *
from .constants import *
from .keywords_extractor import *
from .kobest_augment import *
from .langchain_manager import *
from .paragraph_generator import *
from .paragraph_trimmer import *
from .reasoning import *
from .summarizer import *
from .text_crawler import *
65 changes: 65 additions & 0 deletions augments/modules/base_processor.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
from abc import ABC, abstractmethod

import pandas as pd

from utils import DataVersionManager


class BaseProcessor(ABC):
"""
데이터 처리를 위한 기본 추상 클래스.

이 클래스는 데이터를 처리하는 공통 기능과 데이터 버전 관리를 제공하며,
구체적인 데이터 처리 방식은 서브클래스에서 구현해야 합니다.
"""

def __init__(
self, data_path: str = "data/", experiment_data_path: str = "data/experiments/", data: pd.DataFrame = None
):
"""
BaseProcessor 초기화 함수.

Args:
data_path (str): 기본 데이터 경로. 기본값은 "data/".
experiment_data_path (str): 실험 데이터 저장 경로. 기본값은 "data/experiments/".
data (pd.DataFrame, optional): 데이터프레임 초기 값. 기본값은 None.

Attributes:
data_version_manager (DataVersionManager): 데이터 버전 관리를 위한 유틸리티 클래스.
source_data (pd.DataFrame): 데이터 소스. 초기화 시 전달된 데이터를 저장.
"""
self.data_version_manager = DataVersionManager(data_path=data_path, experiment_data_path=experiment_data_path)
self.source_data: pd.DataFrame = data

@property
def data(self) -> pd.DataFrame:
"""
데이터프레임 반환 프로퍼티.

Returns:
pd.DataFrame: 현재 소스 데이터프레임.
"""
return self.source_data

@abstractmethod
def process(self) -> None:
"""
데이터 처리 로직을 정의하는 추상 메서드.

NOTE: 이 메서드는 서브클래스에서 반드시 구현해야 합니다.
"""
pass

def sample_data(self, n: int, seed: int = 1004):
"""
데이터를 랜덤 샘플링하여 갱신하는 함수.

Args:
n (int): 샘플링할 데이터 개수.
seed (int, optional): 랜덤 시드 값. 기본값은 1004.

Example:
processor = SomeProcessor(data=pd.DataFrame({"col1": [1, 2, 3]}))
processor.sample_data(n=2)
"""
self.source_data = self.source_data.sample(n=n, random_state=seed)
67 changes: 67 additions & 0 deletions augments/modules/classification.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import pandas as pd
from tqdm import tqdm

from .base_processor import BaseProcessor
from .constants import ANALYSIS, CATEGORY
from .langchain_manager import LangchainManager


class Classification(BaseProcessor):
"""
데이터 분류 작업을 수행하는 클래스.

LangchainManager를 활용하여 입력 데이터를 처리하고,
분석 및 분류 결과를 데이터프레임에 추가합니다.
"""

def __init__(self, data_path="data/", experiment_data_path="data/experiments/", data: pd.DataFrame = None):
"""
Classification 클래스 초기화 함수.

Args:
data_path (str): 기본 데이터 경로. 기본값은 "data/".
experiment_data_path (str): 실험 데이터 저장 경로. 기본값은 "data/experiments/".
data (pd.DataFrame, optional): 입력 데이터프레임. 기본값은 None.

Raises:
TypeError: 데이터가 pandas.DataFrame 형식이 아닌 경우 예외를 발생시킴.

Attributes:
langchain_manager (LangchainManager): LangChain 기반 데이터 처리 매니저.
"""
super().__init__(data_path, experiment_data_path)

if isinstance(data, pd.DataFrame):
self.source_data = data
elif data is not None and not isinstance(data, pd.DataFrame):
raise TypeError("data는 pandas.DataFrame 형식이어야 합니다.")

# LangChainManager 설정 - 프롬프트와 출력 형식 지정
self.langchain_manager = LangchainManager(
prompt_type="data_classification", prompt_source="information_source_with_reasoning.txt", output_type="json"
)

def process(self):
"""
데이터 처리 함수.

LangChain을 활용하여 데이터를 처리한 후, 분석 결과와 분류 결과를 데이터프레임에 추가합니다.

Notes:
- tqdm의 progress_apply를 활용하여 처리 상태를 시각적으로 표시.
- 처리 결과는 source_data의 analysis 및 category 열에 저장됩니다.

Example:
classification = Classification(data=pd.DataFrame({"text": ["sample data"]}))
classification.process()
"""
tqdm.pandas() # 진행 상황 표시를 위한 tqdm 적용
# LangChainManager를 활용한 데이터 처리
result = self.source_data.progress_apply(lambda row: self.langchain_manager.invoke(row), axis=1)
# 처리 결과를 Series로 분리
result_df = result.apply(pd.Series)
# 결과를 source_data의 ANALYSIS, CATEGORY 열에 저장
self.source_data[[ANALYSIS, CATEGORY]] = result_df

# 결과 저장
self.source_data.to_csv("data/experiments/classification.csv", index=False)
28 changes: 28 additions & 0 deletions augments/modules/constants.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# pd.DataFrame의 column 이름으로 사용되는 상수입니다.
PARAGRAPH = "paragraph"
QUESTION = "question"
CHOICES = "choices"
ANSWER = "answer"
QUESTION_PLUS = "question_plus"
DEFAULT_COLUMNS = ["paragraph", "question", "choices", "answer", "question_plus"]


REASONING = "reasoning"
ANALYSIS = "analysis"
CATEGORY = "category"
VALID = "is_valid"

# 조합하여 column 이름으로 사용되는 상수입니다. ex) keyword_1_exists
KEYWORD_PREFIX = "keyword_"
EXISTS_SUFFIX = "_exists"
PAGE_SUFFIX = "_page"
SUMMARY_SUFFIX = "_summary"

# 프롬프트에 사용되는 변수 명입니다.
KEYWORDS = "keywords"
DOCUMENT = "document"
CRAWLED_TEXT = "crawled_text"
RAW_PARAGRAPH = "raw_paragraph"

# 카테고리 명
NEED_KNOWLEDGE = "외적 추론"
Loading
Loading