|
|
import os |
|
|
import argparse |
|
|
from pathlib import Path |
|
|
from crawl import * |
|
|
from chatbot import * |
|
|
|
|
|
|
|
|
def main(args): |
|
|
|
|
|
api_key = args.api_key |
|
|
if not api_key: |
|
|
api_key = str(os.environ.get("GROQ_API_KEY", "")) |
|
|
print(f"Groq API Key๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๋ถ๋ฌ์์ต๋๋ค. ๋ท์๋ฆฌ 4๊ธ์ : ...{api_key[-4:]}") |
|
|
|
|
|
if not api_key: |
|
|
print("API Key๊ฐ ์ค์ ๋์ง ์์์ต๋๋ค. Hugging Face Secrets์์ 'GROQ_API_KEY'๋ฅผ ์ค์ ํ๊ฑฐ๋ --api_key ์ธ์๋ฅผ ์
๋ ฅํด์ฃผ์ธ์.") |
|
|
|
|
|
|
|
|
|
|
|
abs_download_path = os.path.join(args.base_dir, args.download_dir) |
|
|
abs_db_path = os.path.join(args.base_dir, args.db_dir) |
|
|
|
|
|
collection = make_db(abs_download_path, abs_db_path, args.collection_name) |
|
|
|
|
|
|
|
|
|
|
|
crawl_seoultech_notice(abs_download_path, args.base_url, args.num_page, collection) |
|
|
|
|
|
|
|
|
collection = get_chroma_collection(abs_db_path, args.collection_name) |
|
|
|
|
|
|
|
|
|
|
|
if collection is None: |
|
|
print("Chromadb Collection์ ๋ถ๋ฌ์ค์ง ๋ชปํ์ต๋๋ค. ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํฉ๋๋ค. ") |
|
|
return |
|
|
|
|
|
|
|
|
system_prompt = get_system_prompt(args.prompt_type) |
|
|
|
|
|
|
|
|
chat_with_rag(api_key = api_key, |
|
|
collection = collection, |
|
|
system_prompt = system_prompt, |
|
|
args = args) |
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
parser = argparse.ArgumentParser() |
|
|
|
|
|
parser.add_argument("--base_dir", type = str, default = str(Path(__file__).resolve().parent)) |
|
|
parser.add_argument("--db_dir", type = str, default = "seoultech_data_db") |
|
|
parser.add_argument("--collection_name", type = str, default = "seoultech_notices") |
|
|
parser.add_argument("--embedf_name", type = str, default = "BAAI/bge-m3") |
|
|
|
|
|
|
|
|
parser.add_argument("--base_url", type = str, default = "https://www.seoultech.ac.kr/service/info/notice") |
|
|
parser.add_argument("--download_dir", type = str, default = "seoultech_data_download") |
|
|
parser.add_argument("--header", type = dict, default = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"}) |
|
|
parser.add_argument("--num_page", type = int, default = 1) |
|
|
|
|
|
|
|
|
parser.add_argument("--api_key", type = str, default = "") |
|
|
parser.add_argument("--log_dir", type = str, default = "chat_log") |
|
|
parser.add_argument("--model_name", type = str, default = "llama-3.3-70b-versatile") |
|
|
parser.add_argument("--temperature", type = float, default = 0.5) |
|
|
parser.add_argument("--n_results", type = int, default = 3) |
|
|
parser.add_argument("--prompt_type", type = str, default = "v") |
|
|
|
|
|
args = parser.parse_args() |
|
|
main(args) |