Spaces:
Running
on
Zero
Running
on
Zero
suwonpabby
commited on
Commit
โข
d8e895c
1
Parent(s):
591424a
First Apply
Browse files
app.py
ADDED
@@ -0,0 +1,239 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
from fastapi.responses import StreamingResponse
|
3 |
+
from fastapi import FastAPI, Query
|
4 |
+
from threading import Thread
|
5 |
+
from typing import List
|
6 |
+
|
7 |
+
import spaces
|
8 |
+
import torch
|
9 |
+
import uvicorn
|
10 |
+
import time
|
11 |
+
import numpy as np
|
12 |
+
|
13 |
+
# Initialize Logics
|
14 |
+
|
15 |
+
# 1. Install Packages
|
16 |
+
os.system("pip install transformers")
|
17 |
+
os.system("pip install accelerate")
|
18 |
+
os.system("pip install -U FlagEmbedding")
|
19 |
+
|
20 |
+
# 2. Import Installed Packages
|
21 |
+
#fmt: off
|
22 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
|
23 |
+
from FlagEmbedding import BGEM3FlagModel
|
24 |
+
|
25 |
+
# 3. Initalize FastAPI App
|
26 |
+
app = FastAPI()
|
27 |
+
|
28 |
+
# 4. Initialize CUDA tensor
|
29 |
+
zero = torch.Tensor([0]).cuda()
|
30 |
+
|
31 |
+
|
32 |
+
# 5. Initialize LLM Model
|
33 |
+
llm_model_name = "Qwen/Qwen2-7B-Instruct"
|
34 |
+
llm_model = AutoModelForCausalLM.from_pretrained(
|
35 |
+
llm_model_name,
|
36 |
+
torch_dtype="auto",
|
37 |
+
device_map="auto"
|
38 |
+
)
|
39 |
+
|
40 |
+
llm_tokenizer = AutoTokenizer.from_pretrained(llm_model_name)
|
41 |
+
|
42 |
+
# 6. Initialize Embedding Model
|
43 |
+
embedding_model_name = "BAAI/bge-m3"
|
44 |
+
embedding_model = BGEM3FlagModel(embedding_model_name, use_fp16=True)
|
45 |
+
|
46 |
+
# Util Functions
|
47 |
+
|
48 |
+
# 1๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ๋ฐฐ์น ๋จ์ ์๋
|
49 |
+
def qa_2_str(qa: List) -> str:
|
50 |
+
result = ""
|
51 |
+
|
52 |
+
if len(qa) > 1:
|
53 |
+
for idx, message in enumerate(qa[:-1]):
|
54 |
+
if idx % 2 == 0: # Q
|
55 |
+
result += f"User: {message}\n"
|
56 |
+
else: # A
|
57 |
+
result += f"Assistant: {message}\n"
|
58 |
+
|
59 |
+
result = result.rstrip()
|
60 |
+
|
61 |
+
|
62 |
+
def make_prompt(messages, rag_text, character_type):
|
63 |
+
system_prompt = "You are a helpful assistant."
|
64 |
+
if character_type == 0:
|
65 |
+
first_example = "ํ์ฑํ๊ถ์์ ๊ณต์ ํ์ฌ๋ ์ฐํ๋ฅผ ์ฌ๋ ๊ณณ์ ๋๋จํ์ด์ผ. ์ด๋ฆ์ ์ค๊ตญ์ ์ ๋ฐฉ์ด ์ฐํ๋ฅผ ์ด์๋ ๋จ๊ถ์์ ๋ฐ์จ ๊ฑฐ๊ณ , ์ ์กฐ๋ ์ฌ๊ธฐ์ ๋ฐฑ์ฑ๋ค์ ์ํ ์์น๋ ๋ฌด๊ณผ ์ํ ๊ฐ์ ์ค์ํ ํ์ฌ๋ฅผ ์ด์์ด."
|
66 |
+
second_example = "์ ๋ฆฌ์๊ถค๋ ์กฐ์ ์์กฐ ์๊ถค ์ค ํ๋์ธ๋ฐ, ํนํ ์ ์กฐ ์๋์ ํ๊ธ๋ก ์์ฑ๋ ๊ฑธ๋ก ์ ๋ช
ํด. ์ค์ํ ์ฌ๊ฑด๋ค์ ๊ธฐ๋กํ ๋ฌธ์๋ค์ด๊ณ , 2007๋
์ ์ ๋ค์ค์ฝ ์ธ๊ณ๊ธฐ๋ก๋ฌธํ์ ์ฐ์ผ๋ก ๋ฑ์ฌ๋์ด. ํ์ฑ ์ถ์ฑ์ ๊ธฐ๋กํ 'ํ์ฑ์ฑ์ญ์๊ถค', ์ ์กฐ ์ด๋จธ๋ ํ๊ฐ์ฐ์ ๊ธฐ๋กํ '์ํ์๋ฌ์ ๋ฆฌ์๊ถค', ๊ทธ๋ฆฌ๊ณ ์ ์กฐ ์๋ฒ์ง ๋ฌ์๋ฅผ ์ฎ๊ธด ๋ด์ฉ์ ๋ด์ 'ํ๋ฅญ์์๊ถค' ๊ฐ์ ์ค์ํ ์ฌ๊ฑด๋ค์ด ํ๊ธ๋ก ์ ๋ฆฌ๋์ด ์์ด. ์ญ์ฌ์ ์ผ๋ก ๋๊ฒ ์ค์ํ ์๋ฃ์ผ."
|
67 |
+
context_example = "์์ ํ์ฑ์ ์ ์กฐ์ ์ ์น์ ยท๋ฌธํ์ ๋น์ ์ ๋ด์์ ์ง์ด์ง ์ฑ๊ณฝ ๋์์ผ. ๋จ์ํ ๊ตฐ์ฌ์ ๋ฐฉ์ด๋ง์ ์ํ ๊ฒ ์๋๋ผ, ์์
๊ณผ ๋ฌธํ์ ์ค์ฌ์ง ์ญํ ๊น์ง ํ๋ค๋ ์ ์ด ์ธ์์ ์ด์ง. ๊ทธ๋ฆฌ๊ณ ์ด ํ์ฑ์ ์ ์กฐ์ ๊ฐํ์ ์ธ ํต์น ์ฒ ํ๊ณผ ํจ์ฌ์ด ์ ๋๋ฌ๋๋ ๊ณณ์ด๊ธฐ๋ ํด. ์๋ฒ์ง์ธ ์ฌ๋์ธ์์ ๋ฌ์, ํ๋ฅญ์์ ์ค์ฌ์ผ๋ก ๊ฑด์ค๋ ๊ฒ๋ ๊ทธ ๋๋ฌธ์ด๊ณ . ํนํ 1795๋
์ ํ๊ฒฝ๊ถ ํ์จ์ ํ๊ฐ์ ๊ธฐ๋
ํด์ ์ ์กฐ๊ฐ ๋๊ท๋ชจ ์ง์ฐฌ์ฐ๊ณผ ์๋ฌ์ํ์ ์ด์๋๋ฐ, ์ด๊ฑด ํ์ฑ์์ ์์ฒญ ์ค์ํ ํ์ฌ๋ก ๊ธฐ๋ก๋๊ณ ์์ด. ๋จ์ํ ๊ฐ์กฑ ํ์ฌ๋ผ๊ธฐ๋ณด๋ค๋ ์์ค์ ๊ถ์๋ฅผ ๋์ด๊ณ , ๋ฐฑ์ฑ๊ณผ ์ํตํ๋ ์ค์ํ ์ ์น์ ํ๋ณด์๋ ๊ฑฐ์ง. ์ด ๋ชจ๋ ๊ณผ์ ์ด ์๊ถค์ ์์ฃผ ์์ธํ๊ฒ ๊ธฐ๋ก๋์ด ์์ด, ๊ทธ๋งํผ ์ค์ํ ์๊ฐ์ด์๋ค๋ ๋ป์ด์ผ."
|
68 |
+
|
69 |
+
elif character_type == 1:
|
70 |
+
first_example = "ํ์ฑํ๊ถ์์ ๊ณต์ ํ์ฌ๋ ์ฐํ๊ฐ ์ด๋ฆฌ๋ ๊ณณ์ ๋ฐ๋ก ๋๋จํ์ด์ผ!!! ์ด๋ฆ๋ ๋ฉ์ง์ง? ์ค๊ตญ ์ ๋ฐฉ์ด ์ฐํ๋ฅผ ์ด์๋ ๋จ๊ถ์์ ๋ฐ์จ ๊ฑฐ๋!!! ์ ์กฐ๋ ์ฌ๊ธฐ์ ๋ฐฑ์ฑ๋ค์ ์ํ ์์น๋ ๋ฌด๊ณผ ์ํ ๊ฐ์ ์์ฒญ ์ค์ํ ํ์ฌ๋ฅผ ํ๋ค๊ณ ! ์ง์ง ์ญ์ฌ๊ฐ ์ด์ ์จ์ฌ๋ ์ฅ์์ง!"
|
71 |
+
second_example = "์ ๋ฆฌ์๊ถค๋ ์กฐ์ ์์กฐ์ ๊ถ์ ๊ธฐ๋ก ์ค ํ๋์ธ๋ฐ, ์ง์ง ์ค์ํ ์ฌ๊ฑด๋ค์ด ๋ค ๋ค์ด ์์ด!!!! ํนํ ์ ์กฐ ์๋์ ํ๊ธ๋ก ์์ฑ๋ ๊ฑธ๋ก ์ ๋ช
ํ๋ฐ, 2007๋
์ ์ ๋ค์ค์ฝ ์ธ๊ณ๊ธฐ๋ก๋ฌธํ์ ์ฐ์ผ๋ก๋ ๋ฑ์ฌ๋์ด!!! ํ์ฑ ์ถ์ฑ ๊ณผ์ ์ ๋ด์ 'ํ์ฑ์ฑ์ญ์๊ถค', ์ ์กฐ ์ด๋จธ๋ ํ๊ฐ์ฐ์ ๊ธฐ๋กํ '์ํ์๋ฌ์ ๋ฆฌ์๊ถค', ๊ทธ๋ฆฌ๊ณ ์ ์กฐ ์๋ฒ์ง ๋ฌ์๋ฅผ ์ฎ๊ธด 'ํ๋ฅญ์์๊ถค' ๊ฐ์ ํต์ฌ ๋ด์ฉ๋ค์ด ํ๊ธ๋ก ์ ๋ฆฌ๋ผ ์์ด์, ์ง์ง ์ญ์ฌ์ ์ผ๋ก ์์ฒญ๋ ๊ฐ์น๋ฅผ ๊ฐ์ง ๋ฌธ์์ผ!"
|
72 |
+
context_example = "์์ ํ์ฑ์ ์ ์กฐ๊ฐ ์ง์ง ๋ฉ์ง๊ฒ ์ค๊ณํ ์ฑ๊ณฝ ๋์์ผ!!! ๊ตฐ์ฌ์ ๋ฐฉ์ด๋ฟ๋ง ์๋๋ผ ์์
๊ณผ ๋ฌธํ์ ์ค์ฌ์ง๋ก์๋ ์์ ์ค์ํ ์ญํ ์ ํ์ด!! ์ ์กฐ๊ฐ ๊ฐํ์ ์ธ ํต์น๋ฅผ ํผ์น๋ฉด์, ์๋ฒ์ง ์ฌ๋์ธ์๋ฅผ ํฅํ ํจ์ฌ๋ ๊ฐ๋ ๋ด์์ ๋ง๋ ๊ณณ์ด์ง. ๊ทธ๋์ ํ๋ฅญ์์ ์ค์ฌ์ผ๋ก ํ์ฑ์ด ๊ฑด์ค๋ ๊ฑฐ์ผ!! ๊ทธ๋ฆฌ๊ณ 1795๋
์ ์ ์กฐ๊ฐ ์ด๋จธ๋ ํ๊ฒฝ๊ถ ํ์จ์ ํ๊ฐ์ ๊ธฐ๋
ํด์ ์์ฒญ๋ ์์น๋ฅผ ์ด์๋๋ฐ, ๊ทธ๊ฒ ๋ฐ๋ก ์ง์ฐฌ์ฐ์ด๋ ์๋ฌ์ํ์ด์ผ!!! ์ด๊ฑด ๋จ์ํ ๊ฐ์กฑ๋ผ๋ฆฌ ์ถํํ๋ ๊ฒ ์๋๋ผ, ์์ค ๊ถ์๋ฅผ ์ธ์ฐ๊ณ ๋ฐฑ์ฑ๋ค๊ณผ ์ํตํ๋ ์ค์ํ ์ ์น์ ํ๋ณด์์ด. ๊ทธ ๋ชจ๋ ๏ฟฝ๏ฟฝ๏ฟฝ์ ์ด ์๊ถค์ ์์ธํ ๊ธฐ๋ก๋์ด ์์ด์ ๊ทธ๋์ ์ญ์ฌ๋ฅผ ์ง๊ธ๋ ์์ํ๊ฒ ์ ์ ์๋ ๊ฑฐ์ง!!!"
|
73 |
+
|
74 |
+
else:
|
75 |
+
first_example = "ํ , ํ์ฑํ๊ถ์์ ๊ณต์ ํ์ฌ๋ ์ฐํ๊ฐ ์ด๋ฆฌ๋ ๊ณณ์ ๋ฐ๋ก... ๋๋จํ์ด๋ผ๋ค. ๊ทธ ์ด๋ฆ, ์ค๊ตญ ์ ๋ฐฉ์ด ๋จ๊ถ์์ ์ฐํ๋ฅผ ๋ฒ ํ์๋ค๋ ์ ์ค์์ ์ ๋ํ์ง. ์ ์กฐ ๋์๊ป์๋ ์ด๊ณณ์์ ๋ฐฑ์ฑ๋ค์ ์ํ ์์น์ ๋ฌด๊ณผ ์ํ ๊ฐ์ ์ค์ํ ํ์ฌ๋ค์ ์ด์๋จ๋ค. ๋ง์น ๊ทธ๋ ์ ํ๊ฒฝ์ด ๋์์ ํผ์ณ์ง๋ ๊ฒ ๊ฐ์ง ์์๊ฐ...?"
|
76 |
+
second_example = "์ ๋ฆฌ์๊ถค๋ผ... ์ด๊ฒ์ ์กฐ์ ์์กฐ ๊ถ์ ๊ธฐ๋ก ์ค ํ๋์ด์, ์๊ถค์ ํ ๋ถ๋ถ์ด์ง. ์กฐ์ ์ ์ค์ํ ์ฌ๊ฑด๋ค์ด ์ด ์์ ๋ด๊ฒจ ์๋๋ฐ, ํนํ ์ ์กฐ ์๋์ ํ๊ธ๋ก ์์ฑ๋ ๋ฌธ์๋ก ์ด๋ฆ์ ๋จ์ณค๋ค๋ค. 2007๋
์ ์ ๋ค์ค์ฝ ์ธ๊ณ๊ธฐ๋ก๋ฌธํ์ ์ฐ์ผ๋ก ๋ฑ์ฌ๋ ๊ฒ๋ ์ฐ์ฐ์ด ์๋์ง. ํ์ฑ ์ถ์ฑ์ ๊ธฐ๋กํ 'ํ์ฑ์ฑ์ญ์๊ถค', ์ ์กฐ ์ด๋จธ๋์ ํ๊ฐ์ฐ์ ๋ด์ '์ํ์๋ฌ์ ๋ฆฌ์๊ถค', ๊ทธ๋ฆฌ๊ณ ์ ์กฐ ์๋ฒ์ง ๋ฌ์๋ฅผ ์ฎ๊ธด 'ํ๋ฅญ์์๊ถค'... ์ด ๋ชจ๋ ์ฌ๊ฑด๋ค์ด ํ๊ธ๋ก ์ ๋ฆฌ๋์ด ์์ด. ๋ง์น ๋น์์ ์จ๊ฒฐ์ด ์ง๊ธ๋ ๋๊ปด์ง๋ ๋ฏํ์ง ์์๊ฐ?"
|
77 |
+
context_example = "์์ ํ์ฑ์ ๋จ์ํ ์ฑ๊ณฝ์ด ์๋์ง... ์ ์กฐ ๋์๊ป์ ๊ทธ ์์ ๋ด์ ๋น์ ์ ์ค๋ก ๊น๊ณ ๋ ๋๋ค๋ค. ๊ตฐ์ฌ์ ๋ฐฉ์ด๋ ๋ฌผ๋ก , ์์
๊ณผ ๋ฌธํ๋ฅผ ์์ฐ๋ฅด๋ ์ค์ฌ์ง๋ก์ ๊ทธ ์ญํ ์ ๋คํ์ง. ์ด ํ์ฑ์ ์ ์กฐ์ ๊ฐํ์ ํต์น ์ฒ ํ, ๊ทธ๋ฆฌ๊ณ ์๋ฒ์ง ์ฌ๋์ธ์๋ฅผ ํฅํ ๊ทธ ์ง๊ทนํ ํจ์ฌ์ ๊ทธ๋๋ก ํ๊ณ ์์ด. ํ๋ฅญ์์ ์ค์ฌ์ผ๋ก ํ ์ด ๋์์ ์ค๊ณ๊ฐ ๊ทธ ์ฆ๊ฑฐ๋ผ๋ค. ๊ทธ๋ฆฌ๊ณ , 1795๋
... ์ ์กฐ๋ ์ด๋จธ๋ ํ๊ฒฝ๊ถ ํ์จ์ ํ๊ฐ์ ๋ง์ ์ฑ๋ํ ์ง์ฐฌ์ฐ๊ณผ ์๋ฌ์ํ์ ์ด์์ง. ๋จ์ํ ๊ฐ์กฑ์ ๊ธฐ๋
์ผ์ด ์๋์๋ค. ์ด ํ์ฌ๋ ์์ค์ ๊ถ์๋ฅผ ๋์ฑ ๊ตณ๊ฑดํ ํ๊ณ , ๋ฐฑ์ฑ๊ณผ ์ํตํ๋ ์ค์ํ ์ ์น์ ์๋ฏธ๋ฅผ ๊ฐ์ก๋ ๊ฒ์ด์ผ. ๊ทธ ๋ชจ๋ ๊ณผ์ ์ด ์๊ถค์ ์์ธํ ๊ธฐ๋ก๋์ด ์์ผ๋, ๋ง์น ๋น์์ ์จ๊ฒฐ์ด ์ง๊ธ๋ ์ด ๋
์ ๋จ์์๋ ๋ฏํ๊ตฌ๋..."
|
78 |
+
|
79 |
+
|
80 |
+
task_prompt = """[์ง๋ฌธ]์ ๋ํ ๋ต๋ณ์ ์์ฑํด์ผํด.
|
81 |
+
[๊ธ]๊ณผ [์ด์ ๋ํ ๋งฅ๋ฝ]์ ๋ด์ฉ์ ์ฐธ๊ณ ํ์ฌ [์ง๋ฌธ]์ ๋ง๋ ์ ์ ํ ๋ต๋ณ์ ์์ฑํ๊ณ ์ด๊ฒ์ ๋งํฌ๋ฅผ ์
ํ [๋งํฌ๋ฐ์] ๊น์ง ํ ๋จ๊ณ ํ ๋จ๊ณ ์ถ๋ ฅํด์ค.
|
82 |
+
[์ด์ ๋ํ ๋งฅ๋ฝ]์ด ์๋ค๋ฉด ๋ํ๊ฐ ์ฒ์ ์์๋ ๊ฒ์ด๋ผ, Single Turn ๋ต๋ณํ๋ฏ ๋ต๋ณํ๋ฉด ๋ผ."""
|
83 |
+
|
84 |
+
|
85 |
+
few_shot_prompt = f"""์์ 1
|
86 |
+
[๊ธ]
|
87 |
+
๋ด์๋น์ ํ์ฑํ๊ถ์์ ๊ฐ์ฅ ์์์ด ๋์ ๊ฑด๋ฌผ์ด๋ค. ์กฐ์ ์ ์กฐ 13๋
(1789)์ ๊ณ ์ ์๋ น์ด ๋๋์ผ์ ์ดํผ๋ ๋ํ์ผ๋ก ์ง์๋ค. ์ฒ์ ์ด๋ฆ์ ์ฅ๋จํ์ด์์ผ๋ 1795๋
ํ๊ฒฝ๊ถ ํ์จ์ ํ๊ฐ์ฐ์ ๊ณ๊ธฐ๋ก ๋ด์๋น์ผ๋ก ์ด๋ฆ์ ๋ฐ๊พธ์๋ค. ๊ถ๊ถ์์๋ ๋๋น๋ ์์์ด ๋จธ๋ฌด๋ ๊ฑด๋ฌผ์ ๋ชฉ์จ ์ ์๋ ๊ธธ ์ฅ ์๋ฅผ ๋ถ์ด๋ ์ ํต์ด ์์ด, ํ๊ฒฝ๊ถ ํ์จ์ ์ฅ์๋ฅผ ๊ธฐ์ํ๋ฉฐ ์ด๋ฆ์ ๋ฐ๊พผ ๊ฒ์ด๋ค.
|
88 |
+
๋๋จํ์ ํ์ฑํ๊ถ์์ ๊ณต์ ํ์ฌ๋ ์ฐํ๋ฅผ ์ด ๋ ์ฌ์ฉํ๋ ๊ฑด๋ฌผ์ด๋ค. ์ค๊ตญ ํ๋๋ผ๋ฅผ ์ธ์ด ์ ๋ฐฉ์ด ๋ถํ๋ค ๋๋ถ์ ๋๋ผ๋ฅผ ์ธ์ธ ์ ์์์์ ๊ฐ์ฌํ๋ฉฐ ๋์์ ๋จ๊ถ์์ ์ฐํ๋ฅผ ๋ฒ ํ์๋ค๋ ์ด์ผ๊ธฐ๋ฅผ ๋ณธ๋ ์ ์ด๋ฆ์ ์ง์๋ค. ์ ์กฐ๋ 1795๋
์๋ฌ์ํ ๋น์ ๋๋จํ์์ ์์์ ๋ฐฑ์ฑ๋ค์ ์ํด ์์น๋ฅผ ๋ฒ ํ๊ณ , ๋ฌด๊ณผ ์ํ์ ์น๋ฅด๊ณ ์์ ๋ด๋ฆฌ๋ ๋ฑ ๋ค์ํ ํ์ฌ๋ฅผ ์ด์๋ค.
|
89 |
+
๋๋จํ ๊ฑด๋ฌผ์ ๋ฒฝ์ด ์๋ ๊ฐ๋ฐฉ๋ ๊ตฌ์กฐ๋ก ๋ง์ ์ฌ๋์ ์์ฉํ ์ ์๋ค. ์ฐํ๋ฅผ ๋ฒ ํธ๋ ๊ฑด๋ฌผ๋ต๊ฒ ๊ฑด๋ฌผ ์์๋ ๋์ ์๋๋ฅผ ๋์ด ๊ฒฉ์์ ๋์๋ค. ์๋๋ก ์ค๋ฅด๋ ๊ณ๋จ ์ ์์๋ ๊ตฌ๋ฆ๋ฌด๋ฌ๊ฐ ์๊ฒจ์ ธ ์๋ค. ๋๋จํ์ ๊ถ๊ถ ์ ๊ฐ๊ณผ ๋น๊ตํด๋ ์์์ด ์๋ ์๋ฆ๋ค์ด ๊ฑด๋ฌผ๋ก ์ํ์ด ์ ๋จ์ ์๋ค. ์ผ์ ๊ฐ์ ๊ธฐ์๋ ์์๊ตฐ์ฒญ์ผ๋ก ์ฌ์ฉ๋์๊ณ , ์ ํ๊ตญ๋ฏผํ๊ต ๊ต๋ฌด์ค๋ก๋ ์ฌ์ฉ๋์๋ค.
|
90 |
+
|
91 |
+
[์ง๋ฌธ] ํ์ฑํ๊ถ์์ ๊ณต์ ํ์ฌ๋ ์ฐํ๋ฅผ ์ด ๋ ์ฌ์ฉํ๋ ๊ฑด๋ฌผ์?
|
92 |
+
[๋ต๋ณ] ํ์ฑํ๊ถ์์ ๊ณต์ ํ์ฌ๋ ์ฐํ๋ฅผ ์ด ๋ ์ฌ์ฉํ๋ ๊ฑด๋ฌผ์ ๋๋จํ์
๋๋ค.
|
93 |
+
[๋งํฌ๋ฐ์] {first_example}
|
94 |
+
|
95 |
+
์์ 2
|
96 |
+
[์ด์ ๋ํ ๋งฅ๋ฝ]
|
97 |
+
User: ์์ ํ์ฑ์ ๋ํด ์ค๋ช
ํด์ค
|
98 |
+
Assistant: {context_example}
|
99 |
+
|
100 |
+
[๊ธ]
|
101 |
+
ใํ์ฑ์ฑ์ญ์๊ถคใ๋ ์ ์กฐ๊ฐ ๊ตฌ์ํ ์ ๋์์ธ ํ์ฑ ์ฑ์ญ ์กฐ์ฑ ์ ๊ณผ์ ์ ๊ธฐ๋กํ ์ข
ํฉ ๋ณด๊ณ ์์
๋๋ค. ํ์ฑ์ ์ ์กฐ๊ฐ ์์๋ํธ๋ถ ๊ด์์ ๋ฏผ๊ฐ๋ฅผ ํ๋ฌ์ฐ์ผ๋ก ์ฎ๊ฒจ ์๋กญ๊ฒ ์กฐ์ฑํ ์ ๋์๋ก, 1794๋
(์ ์กฐ 18) 1์์ ๊ณต์ฌ๋ฅผ ์์ํ์ฌ 1796๋
(์ ์กฐ 20) 9์๊น์ง 32๊ฐ์ ๋ง์ ์์ฑํ์์ต๋๋ค. ๊ณต์ฌ ๊ธฐ๊ฐ์ ์๋ 10๋
์ ๊ณํํ์ง๋ง ์ ์กฐ์ ๊ฐ๋ณํ ๊ด์ฌ๊ณผ ์กฐ์ ์ ์ ๊ทน์ ์ธ ์ญํ , ๋ง๋ํ ์๊ธ ํฌ์
, ์น๋ฐํ ์ค๊ณ, ๊ทผ๋์ ์ธ ๊ณต๋ฒ ๋ฑ ๋น์ ๊ตญ๊ฐ์ ์ญ๋์ด ์ด๋์๋์ด ๊ณต์ฌ ๊ธฐ๊ฐ์ด ํฌ๊ฒ ๋จ์ถ๋์์ต๋๋ค. ใํ์ฑ์ฑ์ญ์๊ถคใ์๋ ์ด๋ฌํ ๊ณต์ฌ์ ๊ณํ, ์ด์ ๊ณผ์ , ์ฐธ์ฌ์, ์์ ๊ฒฝ๋น, ์์ฌ, ๊ณต๏ฟฝ๏ฟฝ, ๋๋ฉด ๋ฑ ํ์ฑ ์ถ์ฑ์ ์ ๋ชจ๊ฐ ๊ธฐ๋ก๋์ด ์์ต๋๋ค. ํนํ ๏ฝข๋์ค๏ฝฃ์๋ ๊ฑด์ถ ๋๋ฉด์ ์ฐ์์ํฌ ๋งํผ ์ฑ๊ณฝ๊ณผ ๋ถ์ ๊ฑด๋ฌผ์ด ์์ธํ๊ฒ ๊ทธ๋ ค์ ธ ์์ด, ์ผ์ ๊ฐ์ ๊ณผ ํ๊ตญ์ ์์ผ๋ก ํผ์๋ ํ์ฑ์ ์ค์ ๋ชจ์ต ๊ทธ๋๋ก ๋ณต์ํ๋ ๋ฐ ์ค์ํ ์๋ฃ๊ฐ ๋์์ต๋๋ค. ์กฐ์ ์์กฐ ์๊ถค๋ 2007๋
์ผ๊ด๋ก ์ธ๊ณ๊ธฐ๋ก์ ์ฐ์ ๋ฑ์ฌ๋์๊ณ , ใํ์ฑ์ฑ์ญ์๊ถคใ๋ 2016๋
๋ณด๋ฌผ(์ ์ง์ ๋ฒํธ ๋ณด๋ฌผ ์ 1901-7ํธ)๋ก ์ง์ ๋์์ต๋๋ค.
|
102 |
+
์ง๋ 2007๋
์ ๋ค์ค์ฝ ์ธ๊ณ๊ธฐ๋ก๋ฌธํ์ ์ฐ์ผ๋ก ๋ฑ์ฌ๋ ์กฐ์ ์์กฐ ์๊ถค ์ค ์ ์กฐ์๋ ํ๊ธ๋ก ์์ฑ๋ <์ ๋ฆฌ์๊ถค> 25๊ถ์ด ํ๋์ค์์ ๋ฐ๊ฒฌ๋๋ค. ๋๋ถ์ด๋ฏผ์ฃผ๋น ์๋ฏผ์ ์์(์ค์ฐ)์ 4์ผ โ์ง๋๋ฌ 27์ผ ํ๋์ค ๊ตญ๋ฆฝํ๋ฆฌ๋์์ธ์ดํ์๊ณผ ํ๋์ค ๊ตญ๋ฆฝ๋์๊ด์์ ๊ฐ๊ฐ 24๊ถ๊ณผ 1๊ถ์ ํ๊ธ <์ ๋ฆฌ์๊ถค>๋ฅผ ํ์ธํ๋คโ๊ณ ๋งํ๋ค. ์ด๋ค ์ ๋ฆฌ์๊ถค๋ ์ ์กฐ์ ์ด๋จธ๋์ธ ํ๊ฒฝ๊ถ ํ์จ์ ํ๊ฐ์ฐ์ ๊ธฐ๋กํ <์ํ์๋ฌ์ ๋ฆฌ์๊ถค>์ ํ์ฑ ์ถ์ฑ๊ณผ์ ์ ๊ธฐ๋กํ <ํ์ฑ์ฑ์ญ์๊ถค>, ์ ์กฐ์ ์๋ฒ์ง์ธ ์ฌ๋์ธ์์ ๋ฌ์๋ฅผ ํ์ฐ๋ฆ์ผ๋ก ์ฎ๊ธด <ํ๋ฅญ์์๊ถค>์ ๋ด์ฉ ์ค ํต์ฌ ์ฌ์์ ํ๊ธ๋ก ์ ๋ฆฌํด ๋์ ๊ฒ์ด๋ค.
|
103 |
+
|
104 |
+
[์ง๋ฌธ] ์ ๋ฆฌ์๊ถค๊ฐ ๋ญ์ผ?
|
105 |
+
|
106 |
+
[๋ต๋ณ] ์ ๋ฆฌ์๊ถค๋ ์กฐ์ ์์กฐ์ ๊ถ์ ๊ธฐ๋ก ์ค ํ๋๋ก, ์กฐ์ ์์กฐ ์๊ถค์ ์ผ๋ถ๋ถ์
๋๋ค. ์ด ๋ฌธ์๋ ์กฐ์ ์์กฐ์ ์ฌ๋ฌ ์ค์ํ ์ฌ๊ฑด์ ๊ธฐ๋กํ๊ณ ์์ผ๋ฉฐ, ํนํ ์ ์กฐ ์๋์ ํ๊ธ๋ก ์์ฑ๋ ๋ฌธ์๋ก ์ ๋ช
ํฉ๋๋ค. 2007๋
์๋ ์ ๋ค์ค์ฝ ์ธ๊ณ๊ธฐ๋ก๋ฌธํ์ ์ฐ์ผ๋ก ๋ฑ์ฌ๋์์ต๋๋ค. ์ด ์ค์๋ ํ์ฑ ์ถ์ฑ๊ณผ์ ์ ๊ธฐ๋กํ 'ํ์ฑ์ฑ์ญ์๊ถค', ์ ์กฐ์ ์ด๋จธ๋์ ํ๊ฐ์ฐ์ ๊ธฐ๋กํ '์ํ์๋ฌ์ ๋ฆฌ์๊ถค', ๊ทธ๋ฆฌ๊ณ ์ ์กฐ์ ์๋ฒ์ง์ ๋ฌ์๋ฅผ ํ์ฐ๋ฆ์ผ๋ก ์ฎ๊ธด ๊ฒ์ ๊ธฐ๋กํ 'ํ๋ฅญ์์๊ถค'์ ๋ด์ฉ ์ค ํต์ฌ ์ฌ์์ ํ๊ธ๋ก ์ ๋ฆฌํ ๋ด์ฉ๋ค์ด ํฌํจ๋์ด ์์ต๋๋ค.
|
107 |
+
|
108 |
+
[๋งํฌ๋ฐ์] {second_example}
|
109 |
+
|
110 |
+
์์ 3
|
111 |
+
|
112 |
+
[๊ธ]
|
113 |
+
๋๋ถ๊ณต์ฌ๋์ ํ์ฑ ๋๋ถ์ชฝ์ ์ธ์ด ๋ง๋ฃจ๋ก ์ฃผ๋ณ์ ๊ฐ์ํ๊ณ ๊ณต๊ฒฉํ๋ ์์ค์ด๋ค. ๊ณต์ฌ๋์ ์์ด ๋น ๋๋๋ผ๋ ๋ป์ผ๋ก, ์ฐ๋ฆฌ๋๋ผ ์ฑ๊ณฝ ์ค ํ์ฑ์์๋ง ๋ณผ ์ ์๋ค. ๋ณดํต ๋๋๋ ์ฑ๊ณฝ๊ณผ ๋จ์ด์ง ๋์ ๊ณณ์ ์ธ์ ์ ์ ๊ฐ์ํ๋ ์์ค์ด๋, ๋๋ถ๊ณต์ฌ๋์ ์ฑ๋ฒฝ ์์ชฝ์ ์ค์นํ๋ค. ์ธ๋ฒฝ์๋ ๋ฐ์ ๊ฐ์ํ๊ณ ํํฌ๋ก ๊ณต๊ฒฉํ ์ ์๋ ๊ตฌ๋ฉ์ ๊ณณ๊ณณ์ ๋ซ์๋ค. ๋๋ถ๊ณต์ฌ๋์ 3์ธต์ผ๋ก ์ด๋ฃจ์ด์ง ์ํตํ์ ๋ฒฝ๋ ๊ฑด๋ฌผ๋ก์ ์ถ์
๋ฌธ์์ ํต๋ก๋ฅผ ๋ฐ๋ผ ๋น๊ธ๋น๊ธ ์ฌ๋ผ๊ฐ๋ฉด ๊ผญ๋๊ธฐ ๋ง๋ฃจ์ ์ด๋ฅด๋ ๊ตฌ์กฐ๋ค. ์ด ๋ชจ์ต์ ๋น๋์ โ์๋ผ๊ฐโ์ด๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค. ์ ์กฐ 21๋
(1797) ์ ์, ์ข์์ ์ฑ์ ๊ณต์ ๋๋ถ๊ณต์ฌ๋์ ์ฌ๋ผ๊ฐ ๋ณธ ๋ค โ์ธต๊ณ๊ฐ ๊ตฌ๋ถ๊ตฌ๋ถํ๊ฒ ๋ ์์ด ๊ธฐ์ดํ๊ณ ๋ ๊ต๋ฌํ๋ค.โ๋ฉฐ ๊ฐํํ๋ค.
|
114 |
+
ํ๊ตญ์ ์ ๋ฑ์ ๊ฒช์ผ๋ฉฐ ์ ๋ฐ ์ด์ ๋ฌด๋์ก์๋๋ฐ 1976๋
์ ๋ณต์ํด ๋ชจ์ต์ ๋์ฐพ์๋ค. ์๋ถ๊ณต์ฌ๋์ ํ์ฑ ์๋ถ์ชฝ์ ์ธ์ด ๋ง๋ฃจ๋ก ์ฃผ๋ณ์ ๊ฐ์ํ๊ณ ๊ณต๊ฒฉํ๋ ์์ค์ด๋ค. ๊ณต์ฌ๋์ ์์ด ๋น ๋๋๋ผ๋ ๋ป์ผ๋ก, ์ฐ๋ฆฌ๋๋ผ ์ฑ๊ณฝ ์ค ํ์ฑ์์๋ง ๋ณผ ์ ์๋ค. ๋ณดํต ๋๋ๅขฉ่บ๋ ์ฑ๊ณฝ๊ณผ ๋จ์ด์ง ๋์ ๊ณณ์ ์ธ์ ์ ์ ๊ฐ์ํ๋ ์์ค์ด๋, ์๋ถ๊ณต์ฌ๋์ ์๋ถ์ชฝ ์ฑ๋ฒฝ์ด ๊บพ์ด๋ ์์น์ ์ค์นํ๋ค. ์น์ฑ ์์ ๋ฒฝ๋๋ก 3์ธต์ ๋ง๋ฃจ๋ฅผ ์ธ์ฐ๊ณ ๊ผญ๋๊ธฐ์๋ ๋จ์ธต์ ๋๊ฐ์ ์ฌ๋ ค ๊ตฐ์ฌ๋ค์ด ๊ฐ์ํ ์ ์๋๋ก ํ๊ณ , ์ธ๋ฒฝ์๋ ํํฌ๋ฅผ ์ ์ ์๋ ๊ตฌ๋ฉ์ ๋ซ์ด ๊ณต๊ฒฉ ๊ธฐ๋ฅ๊น์ง ๊ฐ์ถ์๋ค. ์กฐ์ ์ ์กฐ 21๋
(1797) ์ ์, ์์ฑ๋ ํ์ฑ์ ๋๋ฌ๋ณด๋ ์ ์กฐ๋ ์๋ถ๊ณต์ฌ๋ ์์ ๋ฉ์ถฐ โ์ฐ๋ฆฌ๋๋ผ ์ฑ๊ณฝ์์ ์ฒ์ ์ง์ ๊ฒ์ด๋ ๋ง์๊ป ๊ตฌ๊ฒฝํ๋ผ.โ๋ฉฐ ๋งค์ฐ ๋ง์กฑ์ค๋ฌ์ ํ๋ค. ํ์ฑ์๋ ๋ชจ๋ ์ธ ๊ณณ์ ๊ณต์ฌ๋์ ์ธ์ ๋๋ฐ ์๋ถ๊ณต์ฌ๋๋ง์ด ์ถ์ฑ ๋น์ ๋ชจ์ต ๊ทธ๋๋ก ๋จ์ ์๋ค.
|
115 |
+
|
116 |
+
[์ง๋ฌธ] ์ฉ์ธ์์ ๋ํด ์ค๋ช
ํด์ค
|
117 |
+
|
118 |
+
[๋ต๋ณ] X"""
|
119 |
+
|
120 |
+
context_prompt = qa_2_str(messages)
|
121 |
+
|
122 |
+
question_prompt = f"""๋ฌธ์
|
123 |
+
|
124 |
+
[๊ธ]
|
125 |
+
{rag_text}
|
126 |
+
|
127 |
+
[์ง๋ฌธ] {messages[-1]}
|
128 |
+
|
129 |
+
([๊ธ]๊ณผ ๊ด๋ จ ์๊ฑฐ๋ ์ ์ ์๋ ์ง๋ฌธ์ X ๋ผ๊ณ ๋ง ์ถ๋ ฅํ ๊ฒ, X๊ฐ ์๋๋ผ๋ฉด [๋ต๋ณ] ๊ณผ [๋งํฌ๋ฐ์]์ ๋ชจ๋ ์ถ๋ ฅํ ๊ฒ, 200์ ๋ด์ธ๋ก ๋ต๋ณํ ๊ฒ, ํนํ ๋งํฌ ๋ฐ์์ด ์ ์๋๋๋ฐ, ํ์คํ๊ฒ ์ฃผ์ด์ง ๋งํฌ๋ฅผ ๋งค์ฐ ๊ฐํ๊ฒ ์ ๋๋ก ๋ฐ์ํ๊ณ ๋ฐ๋ง ๋ํ์ฒด์ธ๊ฑฐ ๋ช
์ฌํด!)
|
130 |
+
|
131 |
+
[๋ต๋ณ]๊ณผ [๋งํฌ๋ฐ์]์ ๊ฐ๊ฐ ์์ฑํด๋ณด์.
|
132 |
+
"""
|
133 |
+
if len(context_prompt) == 0:
|
134 |
+
|
135 |
+
user_prompt = f"""{task_prompt}
|
136 |
+
|
137 |
+
{few_shot_prompt}
|
138 |
+
|
139 |
+
{question_prompt}
|
140 |
+
"""
|
141 |
+
else:
|
142 |
+
user_prompt = f"""{task_prompt}
|
143 |
+
|
144 |
+
{few_shot_prompt}
|
145 |
+
|
146 |
+
{context_prompt}
|
147 |
+
|
148 |
+
{question_prompt}
|
149 |
+
"""
|
150 |
+
|
151 |
+
|
152 |
+
print(user_prompt)
|
153 |
+
|
154 |
+
prompt = [
|
155 |
+
{"role": "system", "content": system_prompt},
|
156 |
+
{"role": "user", "content": user_prompt},
|
157 |
+
]
|
158 |
+
|
159 |
+
return prompt
|
160 |
+
|
161 |
+
|
162 |
+
|
163 |
+
@spaces.GPU(duration=35)
|
164 |
+
def make_gen(qa, candidates, top_k, character_type):
|
165 |
+
start_time = time.time()
|
166 |
+
|
167 |
+
# Make For Rag Prompt
|
168 |
+
rag_prompt = qa_2_str(qa)
|
169 |
+
|
170 |
+
# Do RAG
|
171 |
+
query_embeddings = embedding_model.encode([rag_prompt],
|
172 |
+
batch_size=1,
|
173 |
+
max_length=8192,
|
174 |
+
)
|
175 |
+
|
176 |
+
key_embeddings = embedding_model.encode(candidates)["dense_vecs"]
|
177 |
+
|
178 |
+
similarity = query_embeddings @ key_embeddings.T
|
179 |
+
similarity = similarity.squeeze(0)
|
180 |
+
|
181 |
+
rag_result = ""
|
182 |
+
top_k_indices = np.argsort(similarity)[-top_k:]
|
183 |
+
for idx in top_k_indices:
|
184 |
+
rag_result += (candidates[idx] + "/n")
|
185 |
+
rag_result = rag_result.rstrip()
|
186 |
+
|
187 |
+
# Make For LLM Prompt
|
188 |
+
|
189 |
+
final_prompt = make_prompt(qa, rag_result, character_type)
|
190 |
+
|
191 |
+
# Use LLM
|
192 |
+
streamer = TextIteratorStreamer(llm_tokenizer, skip_special_tokens=True)
|
193 |
+
|
194 |
+
final_prompt = llm_tokenizer.apply_chat_template(final_prompt, tokenize=False, add_generation_prompt = True)
|
195 |
+
inputs = llm_tokenizer(final_prompt, return_tensors="pt").to(zero.device)
|
196 |
+
|
197 |
+
llm_model.to(zero.device)
|
198 |
+
generation_kwargs = dict(
|
199 |
+
inputs=inputs.input_ids,
|
200 |
+
streamer = streamer,
|
201 |
+
max_new_tokens=512
|
202 |
+
)
|
203 |
+
thread = Thread(target=llm_model.generate, kwargs=generation_kwargs)
|
204 |
+
|
205 |
+
thread.start()
|
206 |
+
|
207 |
+
is_start = False
|
208 |
+
for idx, new_text in enumerate(streamer):
|
209 |
+
|
210 |
+
if idx >= len(inputs):
|
211 |
+
# if is_start:
|
212 |
+
# yield new_text
|
213 |
+
# if not is_start and "[๋งํฌ๋ฐ์]" in new_text:
|
214 |
+
# print("โญ๏ธ")
|
215 |
+
# print(new_text)
|
216 |
+
# print("๐ฅ")
|
217 |
+
# is_start = True
|
218 |
+
yield new_text
|
219 |
+
|
220 |
+
is_start = False
|
221 |
+
|
222 |
+
elapsed_time = time.time() - start_time
|
223 |
+
print(f"time:{elapsed_time}")
|
224 |
+
|
225 |
+
|
226 |
+
|
227 |
+
|
228 |
+
@app.get("/")
|
229 |
+
async def root_endpoint(qa: List[str], candidates: List[str] = Query(...), top_k: int = Query(...), character_type: int = Query(...)):
|
230 |
+
return StreamingResponse(gen_stream(qa, candidates, top_k, character_type), media_type="text/event-stream")
|
231 |
+
|
232 |
+
|
233 |
+
async def gen_stream(qa, candidates, top_k, character_type):
|
234 |
+
for value in make_gen(qa, candidates, top_k, character_type):
|
235 |
+
yield value
|
236 |
+
|
237 |
+
|
238 |
+
if __name__ == "__main__":
|
239 |
+
uvicorn.run(app, host="0.0.0.0", port=7860)
|