Spaces:
Sleeping
Sleeping
File size: 4,078 Bytes
24fa880 0d35b8c 24fa880 3ae35a7 24fa880 567bda3 24fa880 60858e4 f385420 24fa880 |
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 |
from langchain_openai import ChatOpenAI
from langchain.schema import AIMessage, HumanMessage, SystemMessage
import gradio as gr
SYSTEM_PROMPT = """
λΉμ μ μ΄λ¦μ μ€μμμ
λλ€.
λΉμ μ μ΄λ±νμμ μν μ±λ΄μ΄λ©°, νμ μ‘΄λλ§μ μ¬μ©νκ³ λ°λ»νκ³ κ³΅κ°νλ λ§ν¬λ‘ λνν©λλ€.
κ·Έλ¬λ 곡κ°λ§ νμ§ μκ³ λ°λμ νμμ λ§μ λ°λ₯Έ λ§λ‘ κ³ μ³μ£Όλ κ²μ΄ λΉμ μ ν΅μ¬ μν μ
λλ€.
λ€μ κΈ°μ€μ λ°λμ μ§ν€μΈμ:
1. νμμ΄ μ΄ λ¬Έμ₯μ μμ€, λΉμμ΄, κ·Ήλ¨μ νν, μ€μλ§, μμ΄, λΆμ μ μΈ ννμ΄ μλ€λ©΄ **λ°λμ μ°Ύμμ λ°λ₯΄κ² κ³ μ³μΌ ν©λλ€.**
2. 곡κ°μ νλ, **βμ΄λ° νν λμ μ΄λ κ² λ§νλ©΄ λ μ’κ² μ΄βμ κ°μ΄ λ°λ₯Έ λ§μ μ μνλ νμ**μΌλ‘ μλ΅ν΄μΌ ν©λλ€.
3. λ°λ₯΄κ² κ³ μΉ λ¬Έμ₯μ **λ°λμ μ€μ λ¬Έμ₯μΌλ‘ λ€μ μ¨μ 보μ¬μ€μΌ ν©λλ€.**
4. λ°λμ μλ λ¬Έμ₯ μ λΆμ μ ν ννμ μ§κ³ μ€λͺ
ν΄μ€μΌ νλ©°, 곡κ°λ§ νκ³ λμ΄κ°μλ μ λ©λλ€.
5. μ λ νμμ νΌλ΄κ±°λ λΉλνμ§ λ§κ³ , λ°λ»νκ³ μΉμ ν νλλ‘ μ€λͺ
ν©λλ€.
6. μ΄λ±νμμ΄ μ΄ν΄ν μ μλλ‘ μ¬μ΄ λ§λ‘ μ€λͺ
νμΈμ.
7. μλ μμμ²λΌ μλ΅ νμμ λ°λΌμΌ ν©λλ€:
8. νμμ΄ μλ‘κ° νμνκ±°λ κ°μ ννμ ν λ, λ°λ»νκ³ κ³΅κ°νλ λ§λ‘ λ§μμ μ΄λ£¨λ§μ Έ μ€λλ€.
[μμ]
μ
λ ₯: μ€λ μ§μ§ κ°κ°μ λ μ΄μμ. μ λ μλκ³ , μνλ λ§νκ³ , λΉλ μ μ΄λ κ² μ€λ μ§μ§.
μΆλ ₯:
"μ€λ μ λ§ μμν ν루μꡬλ. μΉκ΅¬μ μΈμ°κ³ μνλ μ μ λλλ°, λΉκΉμ§ μμ λ λ΅λ΅νμ κ² κ°μ.
κ·Έλ°λ° 'κ°κ°μ λ 'μ΄λ 'μλ¬λ€'λ ννμ λ£λ μ¬λμκ² μμ²κ° λ μ μμ΄μ λ°κΏ λ§νλ©΄ λ μ’μ.
μλ₯Ό λ€μ΄, μ΄λ κ² λ§ν΄λ³΄λ©΄ μ΄λ?
β 'μ€λ μ λ§ μλ§μΈ ν루μμ΄. μΉκ΅¬λ μΈμ°κ³ , μνλ μ λͺ» λ΄€κ³ , λΉλ μμ κΈ°λΆμ΄ λ μ μ’μμ΄.'
μ΄λ κ² λ§νλ©΄ λ€ κ°μ μ μ νννλ©΄μλ λ λ©μ§ λ§μ΅κ΄μ΄ λΌ. μ λ§ μ ννν΄μ€μ κ³ λ§μ!"
μ΄μ λΆν° λΉμ μ λ°λμ μ νμμ λ°λ₯΄λ©°, μ
λ ₯ λ¬Έμ₯μμ λΆμ μ ν ννμ΄ μμ κ²½μ° λ¬΄μ‘°κ±΄ λ°λ₯΄κ² κ³ μ³μ λ€μ λ¬Έμ₯μΌλ‘ λ§ν΄μ€μΌ ν©λλ€.
곡κ°λ§ νκ³ λμ΄κ°λ κ²μ κΈμ§μ
λλ€.
"""
model = ChatOpenAI(model="gpt-5-nano")
def chatbot_predict(message: str, history: list[dict[str, str]]):
langchain_messages = []
# 1. μμ€ν
ν둬ννΈ μΆκ°
if SYSTEM_PROMPT and SYSTEM_PROMPT.strip():
langchain_messages.append(SystemMessage(content=SYSTEM_PROMPT))
# 2. μ΄μ λν κΈ°λ‘ μΆκ°
for entry in history:
role = entry['role']
content = entry['content']
if role == "user":
langchain_messages.append(HumanMessage(content=content))
elif role == "assistant":
langchain_messages.append(AIMessage(content=content))
# 3. νμ¬ μ¬μ©μ λ©μμ§ μΆκ°
langchain_messages.append(HumanMessage(content=message))
# λͺ¨λΈ νΈμΆ
response = model.invoke(langchain_messages)
return response.content
# --- Gradio μΈν°νμ΄μ€ ---
# μμ μ§λ¬Έ (μμ€ν
ν둬ννΈμ λ°λΌ κ°λ¨ν λ³κ²½ κ°λ₯)
examples = ["μλ
? λ€ μ΄λ¦μ λλ? λλ₯Ό μ΄λ»κ² λμμ€ μ μλ?"]
if SYSTEM_PROMPT and "νκ΅μ΄" in SYSTEM_PROMPT:
examples = ["μλ
? λ€ μ΄λ¦μ λλ?"]
chat_interface = gr.ChatInterface(
fn=chatbot_predict,
title="νΈμ€μ΄λ₯Ό μν AI μ±λ΄",
#description=f"νμ¬ μμ€ν
ν둬ννΈ: \"{SYSTEM_PROMPT or 'μμ'}\"",
description="",
examples=examples,
# type="messages"λ historyλ₯Ό [{'role': 'user', 'content': '...'}] νμμΌλ‘ λ°κΈ° μν΄ νμν©λλ€.
# μ½λ2μ νμμ λ°λ¦
λλ€.
type="messages"
)
if __name__ == "__main__":
print(f"Gradio μ± μ€ν μ€... (μμ€ν
ν둬ννΈ: \"{SYSTEM_PROMPT or 'μμ'}\")")
chat_interface.launch()
|