회의실 예약 기능 보완하기
실행 준비
!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":"지시사항: 회의실 예약을 위해 주어진 정보가 수집될 때 까지 대화를 요청해줘."})
history_openai_format.append({"role": "user", "content":"지시사항: 회의실이름, 예약날짜, 예약시간, 예약자이름을 알때 까지 대화를 요청해줘."})
history_openai_format.append({"role": "user", "content":"지시사항: 회의실이름은 A룸, B룸, C룸이 있어."})
history_openai_format.append({"role": "user", "content":"지시사항: 사용자가 회의실 예약을 요청한 경우, A룸, B룸, C룸 중에서 어느 룸으로 할 지 물어봐줘."})
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":"지시사항: 회의실이름은 A룸, B룸, C룸이 있어."})
history_openai_format.append({"role": "user", "content":"지시사항: 사용자가 회의실 예약을 요청한 경우, A룸, B룸, C룸 중에서 어느 룸으로 할 지 물어봐줘."})
history_openai_format.append({"role": "user", "content":"지시사항: 회의실이름, 예약날짜, 예약시간, 예약자이름을 모두 알면 meeting_reservation 함수를 호출해 주고, 그렇지 않으면 계속 질문해줘."})
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,
functions=[
{
"name": "meeting_reservation",
"description": "회의실 예약을 처리하는 함수",
"parameters": {
"type": "object",
"properties": {
"room_name": {
"type": "string",
"description": "회의실 이름",
},
"reserv_date": {
"type": "string",
"description": "회의실 예약 날짜",
},
"reserv_time": {
"type": "string",
"description": "회의실 예약 시간",
},
"reserv_name": {
"type": "string",
"description": "회의실 예약자 이름",
}
},
"required": ["room_name", "reserv_date", "reserv_time", "reserv_name"]
}
}
]
)
response = completion.choices[0].message;
print(response)
if completion.choices[0].message.function_call:
arguments = completion.choices[0].message.function_call.arguments
function_name = completion.choices[0].message.function_call.name
return arguments
else:
return response.content
with gr.Blocks() as demo:
gr.Markdown(
"""
# AI 정보 수집 챗봇
제시된 질문에 답해 주세요!
""")
gr.ChatInterface(predict)
demo.launch()
함수 호출 내역 확인하기
from openai import OpenAI
import gradio as gr
import json
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":"지시사항: 회의실이름은 A룸, B룸, C룸이 있어."})
history_openai_format.append({"role": "user", "content":"지시사항: 사용자가 회의실 예약을 요청한 경우, A룸, B룸, C룸 중에서 어느 룸으로 할 지 물어봐줘."})
history_openai_format.append({"role": "user", "content":"지시사항: 회의실이름, 예약날짜, 예약시간, 예약자이름을 모두 알면 meeting_reservation 함수를 호출해 주고, 그렇지 않으면 계속 질문해줘."})
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,
functions=[
{
"name": "meeting_reservation",
"description": "회의실 예약을 처리하는 함수",
"parameters": {
"type": "object",
"properties": {
"room_name": {
"type": "string",
"description": "회의실 이름",
},
"reserv_date": {
"type": "string",
"description": "회의실 예약 날짜",
},
"reserv_time": {
"type": "string",
"description": "회의실 예약 시간",
},
"reserv_name": {
"type": "string",
"description": "회의실 예약자 이름",
}
},
"required": ["room_name", "reserv_date", "reserv_time", "reserv_name"]
}
}
]
)
response = completion.choices[0].message;
print(response)
if completion.choices[0].message.function_call:
arguments = completion.choices[0].message.function_call.arguments
function_name = completion.choices[0].message.function_call.name
if function_name == "meeting_reservation":
arguments_obj = json.loads(arguments)
room_name = arguments_obj.get('room_name')
reserv_date = arguments_obj.get('reserv_date')
reserv_time = arguments_obj.get('reserv_time')
reserv_name = arguments_obj.get('reserv_name')
return "시스템 예약 정보: " + room_name + " / " + reserv_date+ " / " + reserv_time+ " / " + reserv_name
else:
return response.content
with gr.Blocks() as demo:
gr.Markdown(
"""
# AI 정보 수집 챗봇
제시된 질문에 답해 주세요!
""")
gr.ChatInterface(predict)
demo.launch()