멀티턴 대화 기초
실행 준비
!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()