콘텐츠로 이동

대화 히스토리 설정하기

필요한 모듈 설치하기

!pip install openai
!pip install gradio

system을 사용한 프롬프트 엔지니어링 (히스토리 방식)

from openai import OpenAI
import gradio as gr

client = OpenAI()

def predict(message, history):

    history_openai_format = []  
    history_openai_format.append({"role": "system", "content":"당신은 매우 신뢰할 수 있는 의학 전문가입니다."})
    history_openai_format.append({"role": "system", "content":"모든 질문에 대해 과학적으로 정확하고 객관적인 답변을 제공합니다."})
    history_openai_format.append({"role": "system", "content":"사용자가 요청하는 내용에 대해서는 간결하고 명확하게 설명합니다."})

    for human, assistant in history:
        history_openai_format.append({"role": "user", "content": human })
        history_openai_format.append({"role": "assistant", "content":assistant})

    history_openai_format.append({"role": "user", "content": message})

    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages= history_openai_format,
        temperature=1.0,
        stream=True,
        )

    partial_message = ""

    for chunk in response:
        if chunk.choices[0].delta.content is not None:
              partial_message = partial_message + chunk.choices[0].delta.content
              yield partial_message

with gr.Blocks() as demo:
    gr.Markdown(
    """
    # 홍길동의 AI 전문가
    AI 전문가에게 질문해 보세요.
    """)
    gr.ChatInterface(predict)

demo.launch()

system과 user를 사용한 프롬프트 엔지니어링 (히스토리 방식)

from openai import OpenAI
import gradio as gr

client = OpenAI()

def predict(message, history):

    history_openai_format = []  
    history_openai_format.append({"role": "system", "content":"당신은 시, 이야기 또는 예술적인 콘텐츠를 창의적이고 상상력 넘치게 생성할 수 있는 AI입니다."})
    history_openai_format.append({"role": "user", "content":"다음 입력 주제에 대한 시를 작성해줘."})

    for human, assistant in history:
        history_openai_format.append({"role": "user", "content": human })
        history_openai_format.append({"role": "assistant", "content":assistant})

    history_openai_format.append({"role": "user", "content": message})

    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages= history_openai_format,
        temperature=1.0,
        stream=True,
        )

    partial_message = ""

    for chunk in response:
        if chunk.choices[0].delta.content is not None:
              partial_message = partial_message + chunk.choices[0].delta.content
              yield partial_message

with gr.Blocks() as demo:
    gr.Markdown(
    """
    # 홍길동의 AI 전문가
    AI 전문가에게 질문해 보세요.
    """)
    gr.ChatInterface(predict)

demo.launch()

system, user, assistant를 모두 사용한 프롬프트 엔지니어링 (히스토리 방식)

from openai import OpenAI
import gradio as gr

client = OpenAI()

def predict(message, history):

    history_openai_format = []  
    history_openai_format.append({"role": "system", "content":"당신은 친절하고 공감 능력이 뛰어난 판매 지원 어시스턴트입니다."})
    history_openai_format.append({"role": "user", "content":"사과는 1,000원이고 200개의 재고가 있어."})
    history_openai_format.append({"role": "assistant", "content":"넵 사과가 1,000원이고 200개를 가지고 있습니다."})
    history_openai_format.append({"role": "user", "content":"귤은 2,000원이고 300개의 재고가 있어."})
    history_openai_format.append({"role": "assistant", "content":"넵 귤은 2,000원이고 300개를 가지고 있습니다."})

    for human, assistant in history:
        history_openai_format.append({"role": "user", "content": human })
        history_openai_format.append({"role": "assistant", "content":assistant})

    history_openai_format.append({"role": "user", "content": message})

    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages= history_openai_format,
        temperature=1.0,
        stream=True,
        )

    partial_message = ""

    for chunk in response:
        if chunk.choices[0].delta.content is not None:
              partial_message = partial_message + chunk.choices[0].delta.content
              yield partial_message

with gr.Blocks() as demo:
    gr.Markdown(
    """
    # 홍길동의 AI 전문가
    AI 전문가에게 질문해 보세요.
    """)
    gr.ChatInterface(predict)

demo.launch()