messagebooster / app.py
psojinq's picture
Update app.py
8bb6deb verified
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()