File size: 2,036 Bytes
faecd0c
7aedff4
3bf1c8e
57e1e4b
3bf1c8e
7dc524e
 
 
 
 
 
 
 
57e1e4b
 
6401f5b
57e1e4b
ee17265
7aedff4
 
 
 
 
 
 
 
 
 
3bf1c8e
 
 
be72466
 
 
3bf1c8e
 
 
 
7aedff4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3bf1c8e
 
be72466
3bf1c8e
be72466
 
3bf1c8e
 
be72466
3bf1c8e
 
 
be72466
3bf1c8e
 
 
 
 
 
 
 
ee17265
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
import os
import pickle
import gradio as gr
from openai import OpenAI

from kiwipiepy import Kiwi

tagger = Kiwi()


def tokenizer(t):
    return [e.form for e in tagger.tokenize(t)]


client = OpenAI(
    base_url="https://yo4x63mj3sbmgpwc.us-east-1.aws.endpoints.huggingface.cloud/v1/",
    api_key=os.environ.get("hf_token"),
)
with open("./question_undetector.pkl", "rb") as f:
    (vectorizer, model) = pickle.load(f)


def guard_question(question):
    pred = model.predict(vectorizer.transform([question]))
    if pred[0] == 1:
        return True
    else:
        return False


def respond(
    ์ง€์ž์ฒด,
    ์ œ๋ชฉ,
    ์งˆ๋ฌธ,
    max_tokens,
    temperature,
    top_p,
):
    if guard_question(์งˆ๋ฌธ):
        messages = [{"role": "municipality", "content": ์ง€์ž์ฒด}]
        messages.append({"role": "title", "content": ์ œ๋ชฉ})
        messages.append({"role": "question", "content": ์งˆ๋ฌธ})
        response = ""

        chat_completion = client.chat.completions.create(
            model="tgi",
            messages=messages,
            stream=True,
            max_tokens=max_tokens,
            temperature=temperature,
            top_p=top_p,
        )

        for message in chat_completion:
            token = message.choices[0].delta.content
            if token:
                response += token
                yield response
    else:
        yield "์ œ๊ฐ€ ๋‹ตํ•  ์ˆ˜ ์žˆ๋Š” ์งˆ๋ฌธ์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋ฏผ์› ๊ฒŒ์‹œ๊ธ€์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์š”."


demo = gr.Interface(
    respond,
    inputs=["textbox", "textbox", "textbox"],
    outputs=["textbox"],
    additional_inputs=[
        gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
        gr.Slider(minimum=0.1, maximum=1.0, value=0.4, step=0.05, label="Temperature"),
        gr.Slider(
            minimum=0.1,
            maximum=1.0,
            value=0.90,
            step=0.05,
            label="Top-p (nucleus sampling)",
        ),
    ],
)


if __name__ == "__main__":
    demo.launch()