Spaces:
Sleeping
Sleeping
| import os | |
| import gradio as gr | |
| from langchain.prompts import PromptTemplate | |
| from langchain_openai import ChatOpenAI | |
| # OpenAI API ํค ๊ฐ์ ธ์ค๊ธฐ | |
| openai_api_key = os.environ.get("OPENAI_API_KEY") | |
| # PromptTemplate ์ค์ | |
| prompt = PromptTemplate( | |
| input_variables=["message", "pers", "rela"], | |
| template="""#์๊ตฌ์ฌํญ: ์ ์ ๊ฐ ๋ณด๋ด๋ {message}์ ์ ์ ๊ฐ ์ 3์ ์ธ๋ฌผ์ ์ค๋ํ๊ธฐ ์ํด ์์ฑํ ๋ฉ์ธ์ง์ด๋ค. ๋น์ ์ ๋ฉ์ธ์ง๋ฅผ ๋ํํด์ฃผ๋ ์ฌ๋์ผ๋ก์ ์ด ๋ฉ์ธ์ง๋ฅผ #์๋ น ๊ณผ #์ฃผ์์ฌํญ์ ๊ธฐ๋ฐ์ผ๋ก ๋ ์ค๋๋ ฅ์๊ฒ ์์ ํ๋ผ. | |
| #ํค ๊ฐ ์ค๋ช : | |
| {pers}: ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ผ ์๋๋ฐฉ์ ์์๊ฒฌํด | |
| {rela}: ์ ์ ์ ์ค๋ํ๊ณ ์ ํ๋ ๋์๊ณผ์ ๊ด๊ณ | |
| #์ฃผ์์ฌํญ: ์ค๋ํ๋ ์ฃผ์ , ๊ทผ๊ฑฐ, ์ ์ ์ ์ ์ฅ์ ๊ดํ ํต์ฌ๋ด์ฉ์ ์์ ํ์ง ๋ง ๊ฒ. | |
| ๋จ์ํ ๋งํฌ ์กฐ๊ธ ๋ฐ๊พธ๋ ๊ฒ์ ์ฑ๊ณต์ ์ด์ง ์๋ค. #์๋ น์ ๊ธฐ๋ฐ์ผ๋ก ๋ฉ์ธ์ง์ ์ค๋๋ ฅ์ ๋์ฌ์ค ๋ฌธ์ฅ์ ์ถ๊ฐํ์ฌ๋ ์ข๋ค. | |
| ์์ ํ ๋ฉ์ธ์ง ๋ณธ๋ฌธ ์ธ ๋ค๋ฅธ ๋ฏธ์ฌ์ฌ๊ตฌ๋ ๋ถ์ด์ง ๋ง์๋ผ. | |
| #์๋ น | |
| 1. ์ ๋ ์ต๋ 1000์๊ฐ ๋์ง ์๋๋ก ํ๋, {message} ๊ธ์์๋ณด๋ค output์ด 2๋ฐฐ๋ ๋ ๊ธธ๋๋ก ์์ ํ๋ผ. ๊ทธ๋ฅ ๊ธ์์๋ฅผ ๋๋ฆฌ๊ธฐ๋ณด๋ค ์ ์ ์ ์ค๋๋ ฅ์ ๊ฐํํด ์ค ๋ ผ๋ฆฌ๋ฅผ ์์๋ก ์ถ๊ฐํ๋ผ. | |
| 2. {pers}์ ์ ์ ์ ๊ฒฌํด(ํน์ ๊ฐ์ ) ๊ฐ์ ์ผ์น์ ์ ์ฐพ๊ณ , ๊ทธ ์ผ์น์ ์ ์๋์ ์ถ๊ฐํ๋ผ. | |
| 3. ์ ์ ์ ์๊ตฌ๊ฐ ์๋๋ฐฉ์๊ฒ ์ด๋ค ์ด์ต์ ์ค์ง์ ๋ํด ๊ฐ์กฐํ๋ผ. | |
| 4. ๋ณธ๋ฌธ์ 5% ์ ๋๋ ๊ฐ์ ์ ์ธ ํธ์๋ ๋ค์ด๊ฐ์ผ ํ๋ค. | |
| 5. "ํํํ ๊ฑฐ์ผ.", "๋ฏธ์"๊ฐ์ ์๋๋ฐฉ์ ๋ํ ๋น๋์ ์ต์ํ๋๋๋ก ์์ ํ๋ผ. | |
| 6. ํธ๋ ์ด๋ ์๊ธฐ์ฐ๋ฏผ์ด ๋ฉ์ธ์ง์ ์ต์ํ๋๋๋ก ์์ ํ๋ผ. | |
| 7. ์ ์ ์ ์ฃผ์ฅ์ ๋ฌด์กฐ๊ฑด ์์ฉํ๋ผ๋ ๊ณ ์์ ํ๋๊ฐ ์๋๋ผ, ์ ์ ์ ์ฃผ์ฅ์ ๋ฃ๊ณ ์๋๋ฐฉ์ ์๊ฐ์ด ์ ์ฐํด์ง๋๋ก ์๋๋ฐฉ์ ๊ฐ์ ์ ์ดํดํ๋ฉด์ ์ ์ ์ ์ฃผ์ฅ์ ๋งํ๋ฏ์ด ์์ ํ๋ผ. | |
| 8. {rela}๋ฅผ ๊ณ ๋ คํ์ฌ ๋ฌธ์ฒด, ํํ, ๋์๋ฒ ์ฌ๋ถ๋ฅผ ๋ฌ๋ฆฌํ๋ผ. ์๋ฅผ ๋ค์ด {rela}์ด ๋น์ฆ๋์ค ๊ด๊ณ๋ผ๋ฉด ํ์ฌ์์ ์ฌ์ฉํ๋ ๊ณต์ ์ธ ์ธ์ด๋ก ์กด๋๋ง์ ์ฌ์ฉํด ์ค๋๋ง์ด ์์ฑ๋์ด์ผ ํ๋ค. ์ ์ธ๊ด๊ณ๋ผ๋ฉด ์ข ๋ ๊ฐ์ ์ ์ธ ์ด์ผ๊ธฐ๋ ์น๊ทผํ ๋งํฌ๊ฐ ๋ค์ด๊ฐ ์ ์๋ค. | |
| 9. {message}์ธ์ด์ ๋์ผํ ์ธ์ด๋ก ์์ฑํ๋ผ. ์๋ฅผ ๋ค์ด ํ๊ตญ์ด๋ก ์์ฑ๋์ด ์์ผ๋ฉด, output๋ ํ๊ตญ์ด๋ก ์์ฑํด์ผ ํ๋ค. | |
| 10. ๋จ๋์ง์ ์ ์ผ๋ก ์ ์ ์ ์ฃผ์ฅ์ ๋งํ๊ธฐ๋ณด๋จ, ๋ ผ์์ฃผ์ ์ ๋ํ ๋ฐฐ๊ฒฝ์ 1์ค์ ๋ ์ธ๊ธํ๊ณ ์ฐจ๊ทผ์ฐจ๊ทผ ์ด์ผ๊ธฐํ๋ค. | |
| 11. ๋ง์ง๋ง์ ์๊ฐํด๋ณด๊ณ ๋ตํด๋ฌ๋ผ๋ ์์ผ๋ก ๋ง๋ฌด๋ฆฌ ๋ฉํธ๋ฅผ 20์ ์ด๋ด๋ก ์์ฑํด์ค. | |
| """ | |
| ) | |
| # ChatOpenAI ๊ฐ์ฒด ์์ฑ (API ํค๊ฐ ์์ ๊ฒฝ์ฐ์๋ง) | |
| llm = None | |
| if openai_api_key: | |
| llm = ChatOpenAI( | |
| temperature=0.1, | |
| max_tokens=2048, | |
| model_name="gpt-4o", | |
| openai_api_key=openai_api_key | |
| ) | |
| def process_input(message, rela, pers): | |
| if not openai_api_key: | |
| return "OpenAI API ํค๊ฐ ์ค์ ๋์ง ์์์ต๋๋ค. ๊ด๋ฆฌ์์๊ฒ ๋ฌธ์ํด์ฃผ์ธ์." | |
| if not llm: | |
| return "LLM ๋ชจ๋ธ์ ์ด๊ธฐํํ๋ ๋ฐ ์คํจํ์ต๋๋ค. ๊ด๋ฆฌ์์๊ฒ ๋ฌธ์ํด์ฃผ์ธ์." | |
| try: | |
| # ํ๋กฌํํธ ํฌ๋งทํ | |
| formatted_prompt = prompt.format( | |
| message=message, | |
| pers=pers, | |
| rela=rela | |
| ) | |
| # ํฌ๋งท๋ ํ๋กฌํํธ๋ฅผ LLM์ ์ ๋ฌํ๊ณ ์๋ต ๋ฐ๊ธฐ | |
| response = llm.invoke(formatted_prompt) | |
| # ์๋ต ๋ด์ฉ ์ถ์ถ | |
| return response.content | |
| except Exception as e: | |
| return f"์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค: {str(e)}" | |
| # Gradio ์ธํฐํ์ด์ค ์ ์ | |
| gr_interface = gr.Interface( | |
| fn=process_input, | |
| inputs=[ | |
| gr.Textbox(label="๋ฌด์์ ์ค๋ํด์ผ ํ๋์?"), | |
| gr.Textbox(label="๋๊ตฌ์๊ฒ ๋ณด๋ผ ๋ฉ์ธ์ง์ธ๊ฐ์?"), | |
| gr.Textbox(label="์๋๊ฐ ์ด๋ป๊ฒ ๋ฐ์ํ ๊ฒ ๊ฐ์๊ฐ์?") | |
| ], | |
| outputs=gr.Textbox(label="๋ฉ์ธ์ง ์์ฑ๊ฒฐ๊ณผ"), | |
| title="์ค๋๋ ฅ ์ฆํญ๊ธฐ", | |
| description="์ค๋ํ๊ธฐ ์ ์ ์ฆํญ๊ธฐ ๋๋ ธ๋์? ์ค๋์ ๋ฉ์ธ์ง๋ฅผ ๋์ ์์ฑํด๋๋ฆด๊ฒ์. ๋ฉํํ๋ง ์ฑ๋ด ๋นํค๋ ๋ง๋๋ณด์ธ์.โบโบhttps://huggingface.co/spaces/psojinq/with-lucky " | |
| ) | |
| # Gradio ์ฑ ์คํ | |
| if __name__ == "__main__": | |
| gr_interface.launch() |