File size: 2,180 Bytes
b34f0d5
7dcc8af
16edf41
b34f0d5
8144da3
c65ce97
 
5d429a8
 
 
7dcc8af
f1d1009
16edf41
c753d25
5d429a8
c753d25
5d429a8
c753d25
5d429a8
 
 
 
 
092cc1c
 
5d429a8
 
 
 
 
 
 
 
 
092cc1c
5d429a8
092cc1c
c753d25
 
5d429a8
b34f0d5
16edf41
f1d1009
16edf41
 
5d429a8
16edf41
 
c753d25
5d429a8
16edf41
 
 
 
5d429a8
16edf41
5d429a8
16edf41
5d429a8
16edf41
5d429a8
 
16edf41
958e155
b34f0d5
5d429a8
 
 
 
 
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
import gradio as gr
from huggingface_hub import InferenceClient
import os

# Cohere Command R+ 모델 ID 정의
COHERE_MODEL = "CohereForAI/c4ai-command-r-plus-08-2024"

# Hugging Face API 토큰을 환경 변수에서 가져옴
def get_client():
    hf_token = os.getenv("HF_TOKEN")
    if not hf_token:
        raise ValueError("HuggingFace API 토큰이 필요합니다.")
    return InferenceClient(COHERE_MODEL, token=hf_token)

def generate_blog(tone: str, ref1: str, ref2: str, ref3: str):
    """
    Cohere Command R+ 모델을 사용하여 블로그 글을 생성하는 함수
    """
    system_message = f"""반드시 한글로 답변할 것.
    너는 최고의 비서이며 요청에 따라 주어진 말투를 사용하여 블로그를 작성한다.
    말투: {tone}.
    """
    question = f"참조글 1: {ref1}\n참조글 2: {ref2}\n참조글 3: {ref3}\n블로그 글을 생성하라."

    try:
        client = get_client()
        response = client.chat_completion(
            messages=[
                {"role": "system", "content": system_message},
                {"role": "user", "content": question}
            ],
            max_tokens=4000,
            temperature=0.7,
            top_p=0.95
        )
        return response.choices[0].message.content
    except Exception as e:
        return f"오류가 발생했습니다: {str(e)}"

# Gradio 인터페이스 구축
with gr.Blocks() as demo:
    gr.Markdown("# 블로그 생성기")

    with gr.Row():
        tone = gr.Radio(
            label="말투 바꾸기",
            choices=["친근하게", "일반적인", "전문적인"],
            value="일반적인"
        )

    ref1 = gr.Textbox(label="참조글 1", lines=3)
    ref2 = gr.Textbox(label="참조글 2", lines=3)
    ref3 = gr.Textbox(label="참조글 3", lines=3)

    output = gr.Textbox(label="생성된 블로그 글", lines=10, interactive=False)

    generate_button = gr.Button("생성하기")

    generate_button.click(
        fn=generate_blog,
        inputs=[tone, ref1, ref2, ref3],
        outputs=output
    )

if __name__ == "__main__":
    demo.launch()

# requirements.txt
gradio
huggingface-hub==4.44.1