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