콘텐츠로 이동

멀티턴 대화 기초

실행 준비

!pip install openai
!pip install gradio

멀티턴 시작 템플릿

from openai import OpenAI
import gradio as gr

client = OpenAI()

def predict(message, history):
    history_openai_format = []
    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 정보 수집 챗봇
    제시된 질문에 답해 주세요!
    """)
    gr.ChatInterface(predict)
demo.launch()

챗봇창의 크기를 조절

from openai import OpenAI
import gradio as gr

client = OpenAI()

def predict(message, history):
    history_openai_format = []
    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 정보 수집 챗봇  
    제시된 질문에 답해 주세요!
    """)

    chatbot = gr.Chatbot(height=300)  # 원하는 높이 지정
    msg = gr.Textbox(label="질문 입력", placeholder="여기에 질문을 입력하세요...", lines=2)
    clear = gr.Button("초기화")

    def user_predict(message, history):
        response = predict(message, history)
        history.append((message, response))
        return history, ""

    msg.submit(user_predict, [msg, chatbot], [chatbot, msg])
    clear.click(lambda: [], None, chatbot)

demo.launch()

대화 생성시키기

from openai import OpenAI
import gradio as gr

client = OpenAI()

def predict(message, history):
    history_openai_format = []
    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})

    completion = client.chat.completions.create(
        model='gpt-4o-mini',
        messages= history_openai_format,
        temperature=1.0)

    response = completion.choices[0].message;
    return response.content

with gr.Blocks() as demo:
    gr.Markdown(
    """
    # AI 정보 수집 챗봇
    제시된 질문에 답해 주세요!
    """)
    gr.ChatInterface(predict)
demo.launch()

대화를 통해 정보를 획득하기

from openai import OpenAI
import gradio as gr

client = OpenAI()

def predict(message, history):
    history_openai_format = []
    history_openai_format.append({"role": "user", "content":"지시사항: 주어진 정보가 수집될 때 까지 대화를 요청해줘."})
    history_openai_format.append({"role": "user", "content":"지시사항: 사과와 과일 배의 가격을 알때 까지 대화를 요청해줘."})
    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})

    completion = client.chat.completions.create(
        model='gpt-4o-mini',
        messages= history_openai_format,
        temperature=1.0)

    response = completion.choices[0].message;
    return response.content

with gr.Blocks() as demo:
    gr.Markdown(
    """
    # AI 정보 수집 챗봇
    제시된 질문에 답해 주세요!
    """)
    gr.ChatInterface(predict)
demo.launch()