@ -81,7 +81,7 @@
"outputs": [],
"outputs": [],
"source": [
"source": [
"system_message = \"You are a helpful assistant. \"\n",
"system_message = \"You are a helpful assistant. \"\n",
"system_message += \"Give short, courteous answers. You can check ticket price, availability, and reserve tickets for users. \"\n",
"system_message += \"Give short, courteous answers. You can check ticket price, ticket availability, and reserve tickets for users. \"\n",
"system_message += \"Always be accurate. If you don't know the answer, say so.\""
"system_message += \"Always be accurate. If you don't know the answer, say so.\""
]
]
},
},
@ -151,12 +151,12 @@
" status=\"\"\n",
" status=\"\"\n",
" if availability == 0:\n",
" if availability == 0:\n",
" status=\"Cannot book a ticket, no seat available\\n\"\n",
" status=\"Cannot book a ticket, no seat available\\n\"\n",
" elif int(availability)-int(no_of_tickets) <= 0:\n",
" elif ( int(availability)-int(no_of_tickets)) < 0:\n",
" status=\"Cannot book a ticket, no seat available\\n\"\n",
" status=\"Cannot book a ticket, no seat available\\n\"\n",
" else:\n",
" else:\n",
" print(f\"Tool book_function called for {destination_city}\")\n",
" print(f\"Tool book_function called for {destination_city}\")\n",
" f = open(\"C:/Users/aruna/Desktop/book_status.txt\", \"a\")\n",
" f = open(\"C:/Users/aruna/Desktop/book_status.txt\", \"a\")\n",
" f.write(f\"{no_of_tickets} ticket/s to {destination_city} booked for {price}, currently available - {int(availability)-int(no_of_tickets)}\")\n",
" f.write(f\"{no_of_tickets} ticket/s to {destination_city} booked for {price} x {no_of_tickets} , currently available - {int(availability)-int(no_of_tickets)}\")\n",
" f.write(\"\\n\")\n",
" f.write(\"\\n\")\n",
" f.close()\n",
" f.close()\n",
" ticket_availability[destination_city.lower()]=str(int(availability)-int(no_of_tickets))\n",
" ticket_availability[destination_city.lower()]=str(int(availability)-int(no_of_tickets))\n",
@ -175,9 +175,9 @@
"book_function = {\n",
"book_function = {\n",
" \"name\": \"book_ticket\",\n",
" \"name\": \"book_ticket\",\n",
" \"description\": \"Book the ticket based on the ticket price and/ or availability as requested by the user. For example, when a \\\n",
" \"description\": \"Book the ticket based on the ticket price and/ or availability as requested by the user. For example, when a \\\n",
" c ustom er asks to purchase one or more tickets to Tokyo after getting to know the ticket price and/or the availability, then \\\n",
" user asks to purchase one or more tickets to Tokyo after getting to know the ticket price and/or the availability, then \\\n",
" proceed with this tool call. Please help the customer in booking the ticket/s if tickets are available. But please each time you \\\n",
" proceed with this tool call. Else, request the user to either ask for ticket price or availability first. Please help the customer in booking the ticket/s if tickets are available. But before each time \\\n",
" book, ask confirmation from the user before proceeding with booking\",\n",
" you book, ask confirmation from the user before proceeding with booking. \",\n",
" \"parameters\": {\n",
" \"parameters\": {\n",
" \"type\": \"object\",\n",
" \"type\": \"object\",\n",
" \"properties\": {\n",
" \"properties\": {\n",
@ -397,7 +397,7 @@
" messages.append(message)\n",
" messages.append(message)\n",
" messages.append(response)\n",
" messages.append(response)\n",
" # image = artist(city)\n",
" # image = artist(city)\n",
" response = openai.chat.completions.create(model=gpt_model, messages=messages)\n",
" response = openai.chat.completions.create(model=gpt_model, messages=messages, tools=tools )\n",
" elif name.replace('\"','') == \"get_ticket_price_availability\":\n",
" elif name.replace('\"','') == \"get_ticket_price_availability\":\n",
" price = get_ticket_price(city)\n",
" price = get_ticket_price(city)\n",
" availability = get_ticket_availability(city)\n",
" availability = get_ticket_availability(city)\n",
@ -409,13 +409,13 @@
" messages.append(message)\n",
" messages.append(message)\n",
" messages.append(response)\n",
" messages.append(response)\n",
" print(messages)\n",
" print(messages)\n",
" response = openai.chat.completions.create(model=gpt_model, messages=messages) \n",
" response = openai.chat.completions.create(model=gpt_model, messages=messages, tools=tools ) \n",
" else: \n",
" else: \n",
" response, city = handle_tool_call1(message)\n",
" response, city = handle_tool_call1(message)\n",
" messages.append(message)\n",
" messages.append(message)\n",
" messages.append(response)\n",
" messages.append(response)\n",
" # image = artist(city)\n",
" # image = artist(city)\n",
" response = openai.chat.completions.create(model=gpt_model, messages=messages)\n",
" response = openai.chat.completions.create(model=gpt_model, messages=messages, tools=tools )\n",
" \n",
" \n",
" reply = response.choices[0].message.content\n",
" reply = response.choices[0].message.content\n",
" history += [{\"role\":\"assistant\", \"content\":reply}]\n",
" history += [{\"role\":\"assistant\", \"content\":reply}]\n",
@ -681,42 +681,39 @@
"text": [
"text": [
"{'london': '20', 'paris': '90', 'tokyo': '100', 'berlin': '2'}\n",
"{'london': '20', 'paris': '90', 'tokyo': '100', 'berlin': '2'}\n",
"Speak now...\n",
"Speak now...\n",
"You said: ticket price to London\n",
"You said: price of tickets to Tokyo\n",
"ChatCompletionMessage(content=None, refusal=None, role='assistant', annotations=[], audio=None, function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='call_sLAcmufug2cPxfVZyOuYee4X', function=Function(arguments='{\"destination_city\":\"London\"}', name='get_ticket_price'), type='function')])\n",
"ChatCompletionMessage(content=None, refusal=None, role='assistant', annotations=[], audio=None, function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='call_ddXzm2cPBJ9SOsV8qI4L2FcB', function=Function(arguments='{\"destination_city\":\"Tokyo\"}', name='get_ticket_price'), type='function')])\n",
"Tool get_ticket_price called for Tokyo\n",
"Speak now...\n",
"You said: what is the price of two tickets to London\n",
"ChatCompletionMessage(content=None, refusal=None, role='assistant', annotations=[], audio=None, function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='call_lSNZCwaUdckvk3V0eTBlotRN', function=Function(arguments='{\"destination_city\":\"London\"}', name='get_ticket_price'), type='function')])\n",
"Tool get_ticket_price called for London\n",
"Tool get_ticket_price called for London\n",
"Speak now...\n",
"Speak now...\n",
"You said: can you please resolve two tickets for me to London\n",
"You said: can you please reserve two tickets for me to London\n",
"ChatCompletionMessage(content='First, I need to check the availability for the two tickets to London. Please hold on a moment.', refusal=None, role='assistant', annotations=[], audio=None, function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='call_iA0D9tm2cTMf8J8KJc4gipFn', function=Function(arguments='{\"destination_city\":\"London\"}', name='get_ticket_availability'), type='function')])\n",
"Tool get_ticket_availability called for London\n",
"Speak now...\n",
"Speak now...\n",
"You said: yes please proceed\n",
"You said: yes please proceed\n",
"ChatCompletionMessage(content=None, refusal=None, role='assistant', annotations=[], audio=None, function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='call_gOnuOwDEsE6lUIQZhZ15mSzR ', function=Function(arguments='{\"destination_city\":\"London\",\"price\":\"$799\",\"availability\":\"available\",\"no_of_tickets\":\"2\"}', name='book_ticket'), type='function')])\n",
"ChatCompletionMessage(content=None, refusal=None, role='assistant', annotations=[], audio=None, function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='call_JzJXFWFGhtG1jXiFlKtmZhGi ', function=Function(arguments='{\"destination_city\":\"London\",\"price\":\"$799\",\"availability\":\"20 tickets available\",\"no_of_tickets\":\"2\"}', name='book_ticket'), type='function')])\n",
"Tool get_ticket_price called for London\n",
"Tool get_ticket_price called for London\n",
"Tool get_ticket_availability called for London\n",
"Tool get_ticket_availability called for London\n",
"Tool book_function called for London\n",
"Tool book_function called for London\n",
"Speak now...\n",
"Speak now...\n",
"You said: what is the current ticket availability to\n",
"You said: what is the current availability of tickets to London \n",
"ChatCompletionMessage(content=None, refusal=None, role='assistant', annotations=[], audio=None, function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='call_EYind2wu2Mc1ILAOlzgyO9MT ', function=Function(arguments='{\"destination_city\":\"London\"}', name='get_ticket_availability'), type='function')])\n",
"ChatCompletionMessage(content=None, refusal=None, role='assistant', annotations=[], audio=None, function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='call_eiHPAGAcbaFq3qzDf0a6idzG ', function=Function(arguments='{\"destination_city\":\"London\"}', name='get_ticket_availability'), type='function')])\n",
"Tool get_ticket_availability called for London\n",
"Tool get_ticket_availability called for London\n",
"Speak now...\n",
"Speak now...\n",
"You said: yes can you please reserve 19 tickets for me to London\n",
"You said: can you please reserve the remaining 18 tickets for me to London\n",
"Speak now...\n",
"You said: no I think this is fine for\n",
"Speak now...\n",
"Speak now...\n",
"You said: what is the ticket availability to Ber\n",
"You said: yes I do confirm\n",
"ChatCompletionMessage(content=None, refusal=None, role='assistant', annotations=[], audio=None, function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='call_UvchMEkQjeTZ5ou6uURYmKSz', function=Function(arguments='{\"destination_city\":\"Ber\"}', name='get_ticket_availability'), type='function')])\n",
"ChatCompletionMessage(content=None, refusal=None, role='assistant', annotations=[], audio=None, function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='call_8uCQ91FCOGf4HjQnLNafmSs6', function=Function(arguments='{\"destination_city\":\"London\",\"price\":\"799\",\"availability\":\"18\",\"no_of_tickets\":\"18\"}', name='book_ticket'), type='function')])\n",
"Tool get_ticket_availability called for Ber\n",
"Tool get_ticket_price called for London\n",
"Speak now...\n",
"Tool get_ticket_availability called for London\n",
"You said: ticket availability to Berlin\n",
"Tool book_function called for London\n",
"ChatCompletionMessage(content=None, refusal=None, role='assistant', annotations=[], audio=None, function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='call_4qiigA8seXHWgKhYGZNDeXV8', function=Function(arguments='{\"destination_city\":\"Berlin\"}', name='get_ticket_availability'), type='function')])\n",
"Tool get_ticket_availability called for Berlin\n",
"Speak now...\n",
"You said: I would like to reserve two tickets to Berlin\n",
"Speak now...\n",
"Speak now...\n",
"You said: yes please please proceed\n",
"You said: what is the current availability of tickets to London\n",
"ChatCompletionMessage(content=None, refusal=None, role='assistant', annotations=[], audio=None, function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='call_hlJhpoFCJ1g70ASa62SzCFYV', function=Function(arguments='{\"destination_city\":\"Berlin\",\"price\":\"450\",\"availability\":\"2\",\"no_of_tickets\":\"2\"}', name='book_ticket'), type='function')])\n",
"Tool get_ticket_price called for Berlin\n",
"Tool get_ticket_availability called for Berlin\n",
"Speak now...\n",
"Speak now...\n",
"You said: no that will be fine now thank you \n"
"You said: that will be off thank you very much\n"
]
]
}
}
],
],