You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

417 lines
93 KiB

{
"cells": [
{
"cell_type": "markdown",
"id": "d006b2ea-9dfe-49c7-88a9-a5a0775185fd",
"metadata": {},
"source": [
"# Additional End of week Exercise - week 2\n",
"\n",
"Now use everything you've learned from Week 2 to build a full prototype for the technical question/answerer you built in Week 1 Exercise.\n",
"\n",
"This should include a Gradio UI, streaming, use of the system prompt to add expertise, and the ability to switch between models. Bonus points if you can demonstrate use of a tool!\n",
"\n",
"If you feel bold, see if you can add audio input so you can talk to it, and have it respond with audio. ChatGPT or Claude can help you, or email me if you have questions.\n",
"\n",
"I will publish a full solution here soon - unless someone beats me to it...\n",
"\n",
"There are so many commercial applications for this, from a language tutor, to a company onboarding solution, to a companion AI to a course (like this one!) I can't wait to see your results."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "a07e7793-b8f5-44f4-aded-5562f633271a",
"metadata": {},
"outputs": [],
"source": [
"# imports\n",
"\n",
"import os\n",
"import json\n",
"from dotenv import load_dotenv\n",
"from openai import OpenAI\n",
"import gradio as gr\n",
"import base64\n",
"from io import BytesIO\n",
"from PIL import Image\n",
"from IPython.display import Audio, display"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "9e2315a3-f80c-4d3f-8073-f5b61d709564",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"OpenAI API Key exists and begins sk-proj-\n"
]
}
],
"source": [
"# Initialization\n",
"\n",
"load_dotenv(override=True)\n",
"\n",
"openai_api_key = os.getenv('OPENAI_API_KEY')\n",
"if openai_api_key:\n",
" print(f\"OpenAI API Key exists and begins {openai_api_key[:8]}\")\n",
"else:\n",
" print(\"OpenAI API Key not set\")\n",
" \n",
"MODEL = \"gpt-4o-mini\"\n",
"openai = OpenAI()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "40da9de1-b350-49de-8acd-052f40ce5611",
"metadata": {},
"outputs": [],
"source": [
"system_message = \"You are a helpful assistant for an Airline called FlightAI. \"\n",
"system_message += \"Give short, courteous answers, no more than 1 sentence. \"\n",
"system_message += \"Always be accurate. If you don't know the answer, say so.\""
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "5537635c-a60d-4983-8018-375c6a912e19",
"metadata": {},
"outputs": [],
"source": [
"# Let's start by making a useful function\n",
"\n",
"ticket_prices = {\"london\": \"$799\", \"paris\": \"$899\", \"tokyo\": \"$1400\", \"berlin\": \"$499\"}\n",
"\n",
"def get_ticket_price(destination_city):\n",
" print(f\"Tool get_ticket_price called for {destination_city}\")\n",
" city = destination_city.lower()\n",
" return ticket_prices.get(city, \"Unknown\")"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "c7132dd0-8788-4885-a415-d59664f68fd8",
"metadata": {},
"outputs": [],
"source": [
"# There's a particular dictionary structure that's required to describe our function:\n",
"\n",
"price_function = {\n",
" \"name\": \"get_ticket_price\",\n",
" \"description\": \"Get the price of a return ticket to the destination city. Call this whenever you need to know the ticket price, for example when a customer asks 'How much is a ticket to this city'\",\n",
" \"parameters\": {\n",
" \"type\": \"object\",\n",
" \"properties\": {\n",
" \"destination_city\": {\n",
" \"type\": \"string\",\n",
" \"description\": \"The city that the customer wants to travel to\",\n",
" },\n",
" },\n",
" \"required\": [\"destination_city\"],\n",
" \"additionalProperties\": False\n",
" }\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "7703ca0c-5da4-4641-bcb1-7727d1b2f2bf",
"metadata": {},
"outputs": [],
"source": [
"# And this is included in a list of tools:\n",
"\n",
"tools = [{\"type\": \"function\", \"function\": price_function}]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "29ce724b-d998-4c3f-bc40-6b8576c0fd34",
"metadata": {},
"outputs": [],
"source": [
"# We have to write that function handle_tool_call:\n",
"\n",
"def handle_tool_call(message):\n",
" tool_call = message.tool_calls[0]\n",
" arguments = json.loads(tool_call.function.arguments)\n",
" city = arguments.get('destination_city')\n",
" price = get_ticket_price(city)\n",
" response = {\n",
" \"role\": \"tool\",\n",
" \"content\": json.dumps({\"destination_city\": city,\"price\": price}),\n",
" \"tool_call_id\": tool_call.id\n",
" }\n",
" return response, city"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "931d0565-b01d-4aa8-bd18-72bafff8fb3b",
"metadata": {},
"outputs": [],
"source": [
"def artist(city):\n",
" image_response = openai.images.generate(\n",
" model=\"dall-e-3\",\n",
" prompt=f\"An image representing a vacation in {city}, showing tourist spots and everything unique about {city}, in a vibrant pop-art style\",\n",
" size=\"1024x1024\",\n",
" n=1,\n",
" response_format=\"b64_json\",\n",
" )\n",
" image_base64 = image_response.data[0].b64_json\n",
" image_data = base64.b64decode(image_base64)\n",
" return Image.open(BytesIO(image_data))"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "fa165f7f-9796-4513-b923-2fa0b0b9ddd8",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <audio controls=\"controls\" autoplay=\"autoplay\">\n",
" <source src=\"data:audio/mpeg;base64,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\" type=\"audio/mpeg\" />\n",
" Your browser does not support the audio element.\n",
" </audio>\n",
" "
],
"text/plain": [
"<IPython.lib.display.Audio object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import base64\n",
"from io import BytesIO\n",
"from PIL import Image\n",
"from IPython.display import Audio, display\n",
"\n",
"def talker(message):\n",
" response = openai.audio.speech.create(\n",
" model=\"tts-1\",\n",
" voice=\"onyx\",\n",
" input=message)\n",
"\n",
" audio_stream = BytesIO(response.content)\n",
" output_filename = \"output_audio.mp3\"\n",
" with open(output_filename, \"wb\") as f:\n",
" f.write(audio_stream.read())\n",
"\n",
" # Play the generated audio\n",
" display(Audio(output_filename, autoplay=True))\n",
"\n",
"talker(\"Well, hi there\")"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "b512d4ff-0f7b-4148-b161-4ee0ebf14776",
"metadata": {},
"outputs": [],
"source": [
"def transcribe_audio(audio_file):\n",
" with open(audio_file, \"rb\") as f:\n",
" transcript = openai.audio.transcriptions.create(\n",
" model=\"whisper-1\",\n",
" file=f\n",
" )\n",
" return transcript.text"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "c3852570-fb26-4507-a001-f50fd94b7655",
"metadata": {},
"outputs": [],
"source": [
"# Translate between languages using GPT\n",
"def translate(text, source_lang, target_lang):\n",
" translation_prompt = (\n",
" f\"Translate the following text from {source_lang} to {target_lang}:\\n\\n{text}\"\n",
" )\n",
" response = openai.chat.completions.create(\n",
" model=\"gpt-3.5-turbo\",\n",
" messages=[{\"role\": \"user\", \"content\": translation_prompt}]\n",
" )\n",
" return response.choices[0].message.content.strip()"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "3d75abc2-870e-48af-a8fe-8dd463418b3d",
"metadata": {},
"outputs": [],
"source": [
"# Chatbot logic: handle both text and audio input\n",
"def chatbot_dual(history):\n",
" messages = [{\"role\": \"system\", \"content\": system_message}] + history\n",
" response = openai.chat.completions.create(model=MODEL, messages=messages, tools=tools)\n",
" image = None\n",
" \n",
" if response.choices[0].finish_reason==\"tool_calls\":\n",
" message = response.choices[0].message\n",
" response, city = handle_tool_call(message)\n",
" messages.append(message)\n",
" messages.append(response)\n",
" image = None\n",
" # image = artist(city)\n",
" response = openai.chat.completions.create(model=MODEL, messages=messages)\n",
" \n",
" reply = response.choices[0].message.content\n",
" history += [{\"role\":\"assistant\", \"content\":reply}]\n",
"\n",
" # Comment out or delete the next line if you'd rather skip Audio for now..\n",
" # audio_response = talker(reply)\n",
" talker(reply)\n",
" return history, image# Chatbot logic here — replace with real logic"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "512fec09-c2f7-4847-817b-bc20f8b30319",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* Running on local URL: http://127.0.0.1:7880\n",
"\n",
"To create a public link, set `share=True` in `launch()`.\n"
]
},
{
"data": {
"text/html": [
"<div><iframe src=\"http://127.0.0.1:7880/\" width=\"100%\" height=\"500\" allow=\"autoplay; camera; microphone; clipboard-read; clipboard-write;\" frameborder=\"0\" allowfullscreen></iframe></div>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": []
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Tool get_ticket_price called for London\n"
]
},
{
"data": {
"text/html": [
"\n",
" <audio controls=\"controls\" autoplay=\"autoplay\">\n",
" <source src=\"data:audio/mpeg;base64,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VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//PkxAAYgHAAAPe8SDPfRgMzxMUyfVCjGUUzMGVTgxGVGzKCSQNHcrM2qhIzfAZNNseGo0+pRTMNmWMNCaUyCpdDQvjTNn5v44n0IzjJQMN2xyc094RDLUifMLmKwxz4gzOWgKNUFts2glEDXyAmTEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\" type=\"audio/mpeg\" />\n",
" Your browser does not support the audio element.\n",
" </audio>\n",
" "
],
"text/plain": [
"<IPython.lib.display.Audio object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# More involved Gradio code as we're not using the preset Chat interface!\n",
"# Passing in inbrowser=True in the last line will cause a Gradio window to pop up immediately.\n",
"\n",
"with gr.Blocks() as ui:\n",
" with gr.Row():\n",
" chatbot = gr.Chatbot(height=500, type=\"messages\")\n",
" image_output = gr.Image(height=500)\n",
"\n",
" with gr.Row():\n",
" text_input = gr.Textbox(label=\"Chat with our AI Assistant:\")\n",
" audio_input = gr.Audio(sources=\"microphone\", type=\"filepath\", label=\"Or speak to the assistant\")\n",
"\n",
" with gr.Row():\n",
" # voice_output = gr.Audio(label=\"Bot Voice Reply\", autoplay=True)\n",
" clear = gr.Button(\"Clear\")\n",
"\n",
" def do_entry(message, audio, history):\n",
" if message:\n",
" history += [{\"role\":\"user\", \"content\":message}]\n",
" if audio:\n",
" history += [{\"role\":\"user\", \"content\":transcribe_audio(audio)}]\n",
" return \"\", None, history\n",
"\n",
" text_input.submit(do_entry, inputs=[text_input, audio_input, chatbot], outputs=[text_input, audio_input, chatbot]).then(chatbot_dual, inputs=chatbot, outputs=[chatbot, image_output]\n",
" )\n",
"\n",
" audio_input.change(do_entry, inputs=[text_input, audio_input, chatbot], outputs=[text_input, audio_input, chatbot]).then(chatbot_dual, inputs=chatbot, outputs=[chatbot, image_output]\n",
" )\n",
"\n",
" clear.click(lambda: None, inputs=None, outputs=chatbot, queue=False)\n",
"\n",
"ui.launch(inbrowser=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3e1294e2-caf0-4f0f-b09e-b0d52c8ca6ec",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.11"
}
},
"nbformat": 4,
"nbformat_minor": 5
}