Spaces:
Sleeping
Sleeping
Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from langchain_openai import ChatOpenAI
|
2 |
+
from langchain.schema import AIMessage, HumanMessage, SystemMessage
|
3 |
+
import gradio as gr
|
4 |
+
|
5 |
+
SYSTEM_PROMPT = """
|
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 |
+
model = ChatOpenAI(model="gpt-4o")
|
39 |
+
|
40 |
+
|
41 |
+
def chatbot_predict(message: str, history: list[dict[str, str]]):
|
42 |
+
|
43 |
+
langchain_messages = []
|
44 |
+
|
45 |
+
# 1. μμ€ν
ν둬ννΈ μΆκ°
|
46 |
+
if SYSTEM_PROMPT and SYSTEM_PROMPT.strip():
|
47 |
+
langchain_messages.append(SystemMessage(content=SYSTEM_PROMPT))
|
48 |
+
|
49 |
+
# 2. μ΄μ λν κΈ°λ‘ μΆκ°
|
50 |
+
for entry in history:
|
51 |
+
role = entry['role']
|
52 |
+
content = entry['content']
|
53 |
+
if role == "user":
|
54 |
+
langchain_messages.append(HumanMessage(content=content))
|
55 |
+
elif role == "assistant":
|
56 |
+
langchain_messages.append(AIMessage(content=content))
|
57 |
+
|
58 |
+
# 3. νμ¬ μ¬μ©μ λ©μμ§ μΆκ°
|
59 |
+
langchain_messages.append(HumanMessage(content=message))
|
60 |
+
|
61 |
+
# λͺ¨λΈ νΈμΆ
|
62 |
+
response = model.invoke(langchain_messages)
|
63 |
+
return response.content
|
64 |
+
|
65 |
+
# --- Gradio μΈν°νμ΄μ€ ---
|
66 |
+
# μμ μ§λ¬Έ (μμ€ν
ν둬ννΈμ λ°λΌ κ°λ¨ν λ³κ²½ κ°λ₯)
|
67 |
+
examples = ["What is your name?"]
|
68 |
+
if SYSTEM_PROMPT and "νκ΅μ΄" in SYSTEM_PROMPT:
|
69 |
+
examples = ["μλ
? λ€ μ΄λ¦μ λλ?"]
|
70 |
+
|
71 |
+
chat_interface = gr.ChatInterface(
|
72 |
+
fn=chatbot_predict,
|
73 |
+
title="AI μ±λ΄ (μμ€ν
ν둬ννΈ μ€μ κ°λ₯)",
|
74 |
+
description=f"νμ¬ μμ€ν
ν둬ννΈ: \"{SYSTEM_PROMPT or 'μμ'}\"",
|
75 |
+
examples=examples,
|
76 |
+
# type="messages"λ historyλ₯Ό [{'role': 'user', 'content': '...'}] νμμΌλ‘ λ°κΈ° μν΄ νμν©λλ€.
|
77 |
+
# μ½λ2μ νμμ λ°λ¦
λλ€.
|
78 |
+
type="messages"
|
79 |
+
)
|
80 |
+
|
81 |
+
if __name__ == "__main__":
|
82 |
+
print(f"Gradio μ± μ€ν μ€... (μμ€ν
ν둬ννΈ: \"{SYSTEM_PROMPT or 'μμ'}\")")
|
83 |
+
chat_interface.launch()
|