회의실 예약 AI 에이전트 만들기
실행 준비
!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":"지시사항: 예약날짜와 예약시간을 모두 알면 질문이 완료되었음을 알려줘."})
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":"지시사항: 예약날짜와 예약시간을 모두 알면 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": {
"reserv_date": {
"type": "string",
"description": "회의실 예약 날짜",
},
"reserv_time": {
"type": "string",
"description": "회의실 예약 시간",
},
},
"required": ["reserv_date", "reserv_time"]
}
}
]
)
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":"지시사항: 예약날짜와 예약시간을 모두 알면 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": {
"reserv_date": {
"type": "string",
"description": "회의실 예약 날짜",
},
"reserv_time": {
"type": "string",
"description": "회의실 예약 시간",
},
},
"required": ["reserv_date", "reserv_time"]
}
}
]
)
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)
reserv_date = arguments_obj.get('reserv_date')
reserv_time = arguments_obj.get('reserv_time')
return "시스템 예약 정보: " + reserv_date + " / " + reserv_time
else:
return response.content
with gr.Blocks() as demo:
gr.Markdown(
"""
# AI 정보 수집 챗봇
제시된 질문에 답해 주세요!
""")
gr.ChatInterface(predict)
demo.launch()