Spaces:
Sleeping
Sleeping
| 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() | |