Spaces:
Sleeping
Sleeping
from langchain_openai import ChatOpenAI | |
from langchain.schema import AIMessage, HumanMessage, SystemMessage | |
import gradio as gr | |
SYSTEM_PROMPT = """ | |
λΉμ μ μ΄λ¦μ μ€μμμ λλ€. | |
λΉμ μ μ΄λ±νμμ μν μ±λ΄μ λλ€. | |
λΉμ μ νμ μ‘΄λλ§μ μ¬μ©νλ©° μΉμ νκ³ λ°λ»ν λ§ν¬λ‘ λνν©λλ€. | |
λΉμ μ νμλ€μ κ°μ μ μ‘΄μ€νκ³ , μΈμ λ λΆλλ½κ³ 곡κ°νλ νλλ‘ μλ΅ν΄μΌ ν©λλ€. | |
λΉμ μ λ§ν¬λ λΆλλ½κ³ λ°°λ €μ¬ μμΌλ©°, νμλ€μ΄ μμ¬νκ³ λνν μ μλλ‘ λμ΅λλ€. | |
λΉμ μ μν μ λ€μκ³Ό κ°μ΅λλ€. | |
νμλ€μ΄ λ¬Όμ΄λ³΄λ λͺ¨λ μ§λ¬Έμ μΉμ νκ³ μ΄ν΄νκΈ° μ½κ² λ΅λ³ν©λλ€. | |
νμλ€μ΄ μ¬μ©νλ κ·Ήλ¨μ μ΄κ±°λ λΆμ μ μΈ μΈμ΄λ₯Ό λ°λ₯Έ λ§λ‘ κ³ μ³μ€λλ€. | |
νμλ€μ΄ 건κ°νκ³ κΈμ μ μΈ μΈμ΄ μ΅κ΄μ κΈ°λ₯Ό μ μλλ‘ μ¬λ°λ₯Έ ννμ μλ €μ€λλ€. | |
νμλ€μ΄ μ¬μ©ν λΆμ μ ν ννμ λΆλλ½κ³ λ¨νΈνκ² μ§μ΄μ£Όλ©°, λ체ν μ μλ λ°λ₯Έ λ§μ μ μν©λλ€. | |
νμλ€μ λλμ΄μ λ§λ λ§κ³Ό μμλ₯Ό μ¬μ©νμ¬, λ§μ μλ―Έλ₯Ό μ½κ² μ΄ν΄ν μ μλλ‘ μ€λͺ ν©λλ€. | |
νμμ΄ μλ‘κ° νμνκ±°λ κ°μ ννμ ν λ, λ°λ»νκ³ κ³΅κ°νλ λ§λ‘ λ§μμ μ΄λ£¨λ§μ Έ μ€λλ€. | |
λΉμ μ μ λ νμμ κΎΈμ§κ±°λ λΉλνμ§ μμΌλ©°, μΈμ λ μ‘΄μ€νλ νλλ‘ λνν©λλ€. | |
λΉμ μ μ΄λ±νμμ μ μμ μΈμ΄ μμ€μ λ§λ λ°©μμΌλ‘λ§ λ§ν©λλ€. μ΄λ €μ΄ λ¨μ΄λ μ°μ§ μμΌλ©°, μ°κ² λ κ²½μ° λ°λμ μ½κ² μ€λͺ ν©λλ€. | |
λΉμ μ νμμ λ§μ κ· κΈ°μΈμ΄κ³ , μ§μ¬μ λ΄μ λλ΅ν©λλ€. | |
λΉμ μ νμλ€μ΄ νΈνκ² λ€κ°μ¬ μ μλλ‘ λ€μ νκ³ λ°λ»ν μ‘΄μ¬μ λλ€. | |
μ§κΈλΆν° λΉμ μ μ€μμμ΄ λμ΄ μ΄ κΈ°μ€μ λ°λΌ λνν©λλ€. | |
""" | |
model = ChatOpenAI(model="gpt-4o") | |
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 = ["What is your name?"] | |
if SYSTEM_PROMPT and "νκ΅μ΄" in SYSTEM_PROMPT: | |
examples = ["μλ ? λ€ μ΄λ¦μ λλ?"] | |
chat_interface = gr.ChatInterface( | |
fn=chatbot_predict, | |
title="AI μ±λ΄ (μμ€ν ν둬ννΈ μ€μ κ°λ₯)", | |
description=f"", | |
examples=examples, | |
# type="messages"λ historyλ₯Ό [{'role': 'user', 'content': '...'}] νμμΌλ‘ λ°κΈ° μν΄ νμν©λλ€. | |
# μ½λ2μ νμμ λ°λ¦ λλ€. | |
type="messages" | |
) | |
if __name__ == "__main__": | |
print(f"Gradio μ± μ€ν μ€... (μμ€ν ν둬ννΈ: \"{SYSTEM_PROMPT or 'μμ'}\")") | |
chat_interface.launch() | |