File size: 4,821 Bytes
cad9fb2
df4706b
cad9fb2
 
df4706b
 
e08b530
 
 
 
 
 
 
 
df4706b
ca81244
e08b530
 
 
 
 
 
 
 
 
 
 
cad9fb2
 
 
 
 
 
e08b530
 
cad9fb2
 
 
ca81244
cad9fb2
 
e08b530
cad9fb2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ca81244
cad9fb2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ca81244
cad9fb2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ca81244
cad9fb2
 
 
 
 
 
a49b851
cad9fb2
 
 
 
 
 
 
 
 
 
 
 
 
ca81244
cad9fb2
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
import ast
from openai import OpenAI
from text_annotator import generate_annotated_text

client = OpenAI()

def gpt_summary_generator(user_text):
    '''
    :param user_text:
    :return:
    '''
    task_description_fs = "Summarize the text in 500 characters in Korean."
    user_prompt = f"{user_text}"
    messages = [{"role": "system", "content": task_description_fs}, {"role": "user", "content": user_prompt}]
    response = client.chat.completions.create(
        model="gpt-3.5-turbo-0125",
        messages=messages,
        temperature=0.06,
        max_tokens=8362,
        top_p=0,
        frequency_penalty=0,
        presence_penalty=0
    )
    gpt_summary = response['choices'][0]['message']['content']

    return gpt_summary


def gpt_keyword_highlighter(user_text):
    '''
    :param user_text: str
    :return: annotated_text: str
    '''
    # get keywords from user_text
    task_description = "You are a Python function that extracts 5 keywords from {input_text} considering {overall_text_contents}. The output should be formatted as ['keyword1', 'keyword2', ...]. Return only the function's output, with no additional explanations."
    user_prompt = r"{input_text}=" + f"{user_text}"
    messages = [{"role": "system", "content": task_description}, {"role": "user", "content": user_prompt}]
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo-0125",
        messages=messages,
        temperature=0,
        max_tokens=2006,
        top_p=0,
        frequency_penalty=0,
        presence_penalty=0
    )
    extracted_keywords = response['choices'][0]['message']['content']
    ## literal_eval ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ string์„ list๋กœ ๋ณ€ํ™˜
    extracted_keywords = ast.literal_eval(extracted_keywords)
    ## highlighted_text ํ›„์ฒ˜๋ฆฌ ํ•จ์ˆ˜ ์ถ”๊ฐ€
    highlighted_text = generate_annotated_text(text=user_text, keyw_list=extracted_keywords)

    return highlighted_text


def gpt_text_naturalizer(user_input):
    paraphrasing_task = f"Rewrite the contents of '{user_input}' so that it will pass the writing test."

    messages = [
        {"role": "system", "content": "You are a helpful assistant. use only korean"},
        {"role": "user", "content": paraphrasing_task}
    ]

    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo-0125",
        messages=messages,
        temperature=0.1,
        max_tokens=2500
    )

    paraphrased_text = response['choices'][0]['message']['content']
    return paraphrased_text


def gpt_explanation_generator(user_input, text_to_consider):
    explanation_task = f"Explain the term '{user_input}' in a simple manner, based on the context of the following passage: {text_to_consider}"

    messages = [
        {"role": "system",
         "content": "You are a helpful assistant that explains complex topics in a way that an elementary school student can understand. use only korean"},
        {"role": "user", "content": explanation_task}
    ]

    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo-0125",
        messages=messages,
        temperature=0.1,
        max_tokens=200
    )

    explanation = response['choices'][0]['message']['content']
    return explanation


def gpt_easier_text_generator(user_input):
    messages = [
        {"role": "system",
         "content": "You have a special talent for easily rewriting text. Make it easy to paraphrase, use simple words that an elementary school student can understand, but don't shorten or summarize. Don't forget to use only korean."},
        {"role": "user", "content": user_input}
    ]

    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo-0125",
        messages=messages,
        temperature=0,
        max_tokens=2048
    )

    explanation = response['choices'][0]['message']['content']
    return explanation


def gpt_rater(user_input):
    # ๋ฃจ๋ธŒ๋ฆญ์— ์˜ํ•œ ์ฑ„์ 
    lubric = """์ฑ„์  ๊ธฐ์ค€ ์ƒ: ๋ฌธ์žฅ์˜ ์ฃผ์ œ๋ฅผ ํŒŒ์•…ํ•˜๊ณ , ์ฃผ์š” ๋‚ด์šฉ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ค‘: ๋ฌธ์žฅ์˜ ์ฃผ์ œ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜: ๋ฌธ์žฅ์˜ ์ฃผ์ œ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์—†๋‹ค."""
    # ๋ฃจ๋ธŒ๋ฆญ ๊ธฐ์ค€์„ ์ด์šฉํ•ด์„œ ์ž…๋ ฅ์นธ์— ์ž…๋ ฅํ•œ ๋‚ด์šฉ์„ ์ฑ„์ ํ•˜๋Š” ์˜์–ด๋กœ ํ”„๋กฌํ”„ํŠธ
    explanation_task = f"{lubric}์„ ๊ธฐ์ค€์œผ๋กœ {user_input}์˜ ๋‚ด์šฉ์„ ์ฑ„์ ํ•ด์ฃผ์„ธ์š”. ์ฑ„์  ๊ธฐ์ค€์€ ๊ณต๊ฐœํ•˜์ง€ ๋ง๊ณ  ์ƒ, ์ค‘,ํ•˜๋กœ ๋‚˜๋ˆ„๊ณ  ๊ฐ„๋‹จํ•œ ์ด์œ ๋ฅผ ์•Œ๋ ค์ฃผ์„ธ์š”."
    messages = [
        {"role": "system", "content": "You are a helpful assistant. use only korean"},
        {"role": "user", "content": explanation_task}
    ]

    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo-0125",
        messages=messages,
        temperature=0.1,
        max_tokens=2500
    )

    feedback = response['choices'][0]['message']['content']
    return feedback