Spaces:
Sleeping
Sleeping
File size: 2,504 Bytes
b34f0d5 9bab38e 2fa1592 c753d25 2fa1592 9bab38e f1d1009 aafe2e3 f1d1009 2fa1592 f1d1009 c753d25 9bab38e 6fe8a58 9bab38e c753d25 9bab38e c753d25 b34f0d5 aafe2e3 958e155 aafe2e3 958e155 aafe2e3 f9b088b b34f0d5 aafe2e3 5a17d4d b34f0d5 aafe2e3 |
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 |
import gradio as gr
import openai
import os
def respond_chatgpt_qna(
question: str,
system_message: str,
max_tokens: int,
temperature: float,
top_p: float
):
"""
OpenAI의 gpt-4o-mini 모델을 이용해 질문에 대한 답변을 반환하는 함수.
"""
openai_token = os.getenv("OPENAI_TOKEN")
if not openai_token:
return "OpenAI API 토큰이 필요합니다."
openai.api_key = openai_token
messages = [
{"role": "system", "content": system_message},
{"role": "user", "content": question}
]
try:
response = openai.ChatCompletion.create(
model="gpt-4o-mini",
messages=messages,
max_tokens=max_tokens,
temperature=temperature,
top_p=top_p,
)
assistant_message = response.choices[0].message['content']
return assistant_message
except Exception as e:
return f"오류가 발생했습니다: {str(e)}"
def merge_and_call(tone: str, ref1: str, ref2: str, ref3: str):
"""
사용자가 선택한 말투와 참조글들을 하나의 프롬프트로 합쳐 gpt-4o-mini 모델에 전달하는 함수.
"""
# 간단한 프롬프트 생성
question = f"말투: {tone}\n참조글 1: {ref1}\n참조글 2: {ref2}\n참조글 3: {ref3}"
# 고급 설정은 코드 내부에 기본값으로 지정 (UI에는 노출되지 않음)
system_message = "아래의 참조글들을 참고하여 블로그 글을 생성하라."
max_tokens = 2000
temperature = 0.7
top_p = 0.95
return respond_chatgpt_qna(
question=question,
system_message=system_message,
max_tokens=max_tokens,
temperature=temperature,
top_p=top_p
)
with gr.Blocks() as demo:
gr.Markdown("# 블로그 생성기")
# 입력 항목 구성
tone_radio = gr.Radio(
choices=["친근하게", "일반적인", "전문적인"],
label="말투바꾸기",
value="일반적인"
)
ref1_text = gr.Textbox(label="참조글 1", lines=5)
ref2_text = gr.Textbox(label="참조글 2", lines=5)
ref3_text = gr.Textbox(label="참조글 3", lines=5)
answer_output = gr.Textbox(label="결과", lines=10, interactive=False)
submit_button = gr.Button("전송")
submit_button.click(
fn=merge_and_call,
inputs=[tone_radio, ref1_text, ref2_text, ref3_text],
outputs=answer_output
)
if __name__ == "__main__":
demo.launch() |