diff --git a/examples/multimodal/image_understanding_with_rag.ipynb b/examples/multimodal/image_understanding_with_rag.ipynb
index 97473732f1..70353ecd82 100644
--- a/examples/multimodal/image_understanding_with_rag.ipynb
+++ b/examples/multimodal/image_understanding_with_rag.ipynb
@@ -6,7 +6,7 @@
"source": [
"# Image Understanding with RAG using OpenAI's Vision & Responses APIs\n",
"\n",
- "Welcome! This notebook demonstrates how to build a Retrieval-Augmented Generation (RAG) system using OpenAI’s Vision and Responses APIs. It focuses on multimodal data, combining image and text inputs to analyze customer experiences. The system leverages GPT-4.1 and integrates image understanding with file search to provide context-aware responses.\n",
+ "Welcome! This notebook demonstrates how to build a Retrieval-Augmented Generation (RAG) system using OpenAI’s Vision and Responses APIs. It focuses on multimodal data, combining image and text inputs to analyze customer experiences. The system leverages GPT-5 and integrates image understanding with file search to provide context-aware responses.\n",
"\n",
"Multimodal datasets are increasingly common, particularly in domains like healthcare, where records often contain both visual data (e.g. radiology scans) and accompanying text (e.g. clinical notes). Real-world datasets also tend to be noisy, with incomplete or missing information, making it critical to analyze multiple modalities in tandem.\n",
"\n",
@@ -115,9 +115,17 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Order arrived 10 minutes early, food was hot and packaged securely. Tacos were fresh, well-seasoned, and the salsa tasted homemade. Driver was friendly, followed instructions, and left it at the door. Will definitely order again.\n"
+ ]
+ }
+ ],
"source": [
"def generate_food_delivery_review(sentiment: str = 'positive') -> str:\n",
" \"\"\"\n",
@@ -133,7 +141,8 @@
" prompt += f\" The review should reflect a {sentiment} experience.\"\n",
" \n",
" response = client.responses.create(\n",
- " model=\"gpt-4.1\",\n",
+ " model=\"gpt-5\",\n",
+ " reasoning={\"effort\": \"minimal\"},\n",
" input=[{\"role\": \"user\", \"content\": prompt}]\n",
" )\n",
" return response.output_text\n",
@@ -174,7 +183,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
@@ -188,7 +197,8 @@
" \"\"\"Analyze food delivery image and return sentiment analysis.\"\"\"\n",
" base64_image = encode_image(image_path)\n",
" response = client.responses.create(\n",
- " model=\"gpt-4.1\",\n",
+ " model=\"gpt-5\",\n",
+ " reasoning={\"effort\": \"minimal\"},\n",
" input=[{\n",
" \"role\": \"user\",\n",
" \"content\": [\n",
@@ -202,8 +212,6 @@
" },\n",
" ],\n",
" }],\n",
- " max_output_tokens=50,\n",
- " temperature=0.2\n",
" )\n",
" return response.output_text.strip()"
]
@@ -232,9 +240,122 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " id \n",
+ " month \n",
+ " text \n",
+ " image_path \n",
+ " label \n",
+ " full_sentiment \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 1 \n",
+ " june \n",
+ " Absolutely delicious! The sushi was fresh, beautifully packed, and arrived right on time. Will d... \n",
+ " NaN \n",
+ " positive \n",
+ " Absolutely delicious! The sushi was fresh, beautifully packed, and arrived right on time. Will d... \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 2 \n",
+ " july \n",
+ " Half my order was missing and the burger looked thrown together. Not worth the money. \n",
+ " NaN \n",
+ " negative \n",
+ " Half my order was missing and the burger looked thrown together. Not worth the money. \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 3 \n",
+ " july \n",
+ " Packaging was leaking sauce everywhere. Presentation was a mess. Tasted like leftovers. \n",
+ " NaN \n",
+ " negative \n",
+ " Packaging was leaking sauce everywhere. Presentation was a mess. Tasted like leftovers. \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 4 \n",
+ " july \n",
+ " Burger was hot, fries were still crispy, and the milkshake wasn’t melted at all. Fantastic deliv... \n",
+ " 3.png \n",
+ " positive \n",
+ " Burger was hot, fries were still crispy, and the milkshake wasn’t melted at all. Fantastic deliv... \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " 5 \n",
+ " june \n",
+ " Received the wrong items. I ordered vegetarian and got meat. Totally unacceptable. \n",
+ " NaN \n",
+ " negative \n",
+ " Received the wrong items. I ordered vegetarian and got meat. Totally unacceptable. \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " id month \\\n",
+ "0 1 june \n",
+ "1 2 july \n",
+ "2 3 july \n",
+ "3 4 july \n",
+ "4 5 june \n",
+ "\n",
+ " text \\\n",
+ "0 Absolutely delicious! The sushi was fresh, beautifully packed, and arrived right on time. Will d... \n",
+ "1 Half my order was missing and the burger looked thrown together. Not worth the money. \n",
+ "2 Packaging was leaking sauce everywhere. Presentation was a mess. Tasted like leftovers. \n",
+ "3 Burger was hot, fries were still crispy, and the milkshake wasn’t melted at all. Fantastic deliv... \n",
+ "4 Received the wrong items. I ordered vegetarian and got meat. Totally unacceptable. \n",
+ "\n",
+ " image_path label \\\n",
+ "0 NaN positive \n",
+ "1 NaN negative \n",
+ "2 NaN negative \n",
+ "3 3.png positive \n",
+ "4 NaN negative \n",
+ "\n",
+ " full_sentiment \n",
+ "0 Absolutely delicious! The sushi was fresh, beautifully packed, and arrived right on time. Will d... \n",
+ "1 Half my order was missing and the burger looked thrown together. Not worth the money. \n",
+ "2 Packaging was leaking sauce everywhere. Presentation was a mess. Tasted like leftovers. \n",
+ "3 Burger was hot, fries were still crispy, and the milkshake wasn’t melted at all. Fantastic deliv... \n",
+ "4 Received the wrong items. I ordered vegetarian and got meat. Totally unacceptable. "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
"pd.set_option('display.max_colwidth', 100) # Increase from default (50) to view full sentiment\n",
"display(df.head())"
@@ -287,7 +408,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
@@ -339,9 +460,21 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "🔍 Query: Where there any comments about the 'spaghetti'?\n",
+ "\n",
+ "📝 Response:\n",
+ "----------------------------------------\n",
+ "I couldn’t find any comments that explicitly mention “spaghetti.” The closest related note says “Pasta was overcooked” in context_9_july.txt . If you have a specific date or file in mind, I can check that directly.\n"
+ ]
+ }
+ ],
"source": [
"# Query the vector store for spaghetti reviews in July\n",
"query = \"Where there any comments about the 'spaghetti'?\"\n",
@@ -349,7 +482,7 @@
"\n",
"# Execute the search with filtering\n",
"response = client.responses.create(\n",
- " model=\"gpt-4.1\",\n",
+ " model=\"gpt-5\",\n",
" input=query,\n",
" tools=[{\n",
" \"type\": \"file_search\",\n",
@@ -370,15 +503,27 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "🔍 Query: Where there any comments about the 'spaghetti'?\n",
+ "\n",
+ "📝 Response:\n",
+ "----------------------------------------\n",
+ "Yes. There’s a positive note describing “a neatly plated spaghetti in tomato sauce with parsley, served alongside arugula, garlic bread, and grated cheese.” \n"
+ ]
+ }
+ ],
"source": [
"query = \"Where there any comments about the 'spaghetti'?\"\n",
"print(f\"🔍 Query: {query}\\n\")\n",
"\n",
"response = client.responses.create(\n",
- " model=\"gpt-4.1\",\n",
+ " model=\"gpt-5\",\n",
" input=query,\n",
" tools=[{\n",
" \"type\": \"file_search\",\n",
@@ -430,7 +575,7 @@
" \"\"\"\n",
" # Get the annotations from the response\n",
" try:\n",
- " annotations = response.output[1].content[0].annotations\n",
+ " annotations = response.output[3].content[0].annotations\n",
" retrieved_files = {result.filename for result in annotations}\n",
" except (AttributeError, IndexError):\n",
" print(\"No search results found in the response.\")\n",
@@ -461,15 +606,27 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "🔍 Query: Were there any negative reviews for pizza, and if so, was the pizza burnt?\n",
+ "\n",
+ "📝 Response:\n",
+ "----------------------------------------\n",
+ "Yes. One review explicitly describes a “burnt pepperoni pizza with charred crust and grease stains in the box” and is marked as negative sentiment .\n"
+ ]
+ }
+ ],
"source": [
"query = \"Were there any negative reviews for pizza, and if so, was the pizza burnt?\"\n",
"print(f\"🔍 Query: {query}\\n\")\n",
"\n",
"response = client.responses.create(\n",
- " model=\"gpt-4.1\",\n",
+ " model=\"gpt-5\",\n",
" input=query,\n",
" tools=[{\n",
" \"type\": \"file_search\",\n",
@@ -520,16 +677,10 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
- "def prepare_evaluation_data(df, text_col=\"full_sentiment\", label_col=\"label\"):\n",
- " \"\"\"Prepare data items for evaluation from DataFrame.\"\"\"\n",
- " return [{\"item\": {\"input\": str(row[text_col]), \"ground_truth\": row[label_col]}} \n",
- " for _, row in df.iterrows()]\n",
- "\n",
- "\n",
"def prepare_evaluation_data(\n",
" df: pd.DataFrame,\n",
" text_col: str = \"full_sentiment\",\n",
@@ -564,7 +715,7 @@
" \"\"\"\n",
" eval_config = {\n",
" \"type\": \"completions\",\n",
- " \"model\": \"gpt-4.1\",\n",
+ " \"model\": \"gpt-5\",\n",
" \"input_messages\": {\n",
" \"type\": \"template\",\n",
" \"template\": [\n",
@@ -656,7 +807,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
@@ -675,9 +826,20 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
+ "execution_count": 25,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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gzfffNP0IrJot/NGjRpJ2rRpzT56QdDgUP39999m4uQMGTKY6nWt/tYA0qIXEu1KrlO06GurQfeZM2ect2sPJG3EqrdrN/N33303TO0cACAs9Fr2zTffmGueZu40kWB56aWXpHXr1m776/dO+vTpTWJA6XeCXuP02qc9KMeNG2cyXSFVUep1Tq+zuuh1Uem1zdqmjfH1GqrXY83SjRkzxnlfPa5eb7XWysqqqRs3bpiZEXRgXh2ORq/XX3/9dZifg8iUKThffPGFuWavXbvWrB88eFAaNGggKVKkMMmUV155Ra5fv+52Xm+//ba5vltlcZ0xQq/5uq7f71oGDb51f8TyDhU6Jox+ULR9XNGiRc02DdL014Q1h5tF3zghTethbQ/cJi+0+2jbv2HDhklcpMGYXjS0h49WZefOnVtOnTplgjv9EGr7RqUZPv3Vt2nTJnOB09G/9UOsBg0aZNZ/+uknc0HUbuX//POP8yKpVeI6FtBvv/1mpmX58MMPTQZx//795vXVi4hebGfPnm2ysrqukzdb2VogronJ9rthkTN5TpleebrcvXo3yLfGxYCYHe5h18WL4b7PikUrJHve7BKQMkDKNygvY4eOlbod6prAqVz9cvJet/fk+PE7kjz5f9e0NWt+lrt370mFCs1EH65fvz6yadMWmT17hWTIkEk++2yw7N69R/LlK2luD82VK//9q+Pc6r779+82P3b79BkqjRu3ll27tsr7778p8eOnk9atO8qUKUulbt0S0q5dV2nXrou5r97v0qX7kj9/GenUqb+kTJlK1q790QRQqVLllVKlypn9NDGnv8mjukxKZ5zT/IvuP3XqKLMsWPCLFC5cTg4fvik1atSStm1fkwEDxsn9+//IRx/1lyZNWsmSJeucZZs790vp2rWPrFjxu5w6tc00FdLv/Lp168p3331ngmZtX69Bpn5f//HHH+F+reFlwZ0GDxr5b968OcYfW6skre7P6sKFC0HmpbMb/ZWkv7h+/vlnU1Xh+gtUf7VpAPb66687g7tz586Z7t36a1HlyZPHub/eVqpUKefEyXp/i/5a1sBdf+VZv0A1q6cB+4YNG0wbS61G19fAakupbSW1XAAQFb7/+ntp0LyB+btizYpyp88d2bNtj5SpVEYq1KggSZMllZ9+WiYvvviK2Wf58oVSr15jSZEipdy5EyBLlnwp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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
"# Calculate passed and total for text_only_run\n",
"text_only_data = text_only_run_output_items.to_dict()['data']\n",
@@ -726,9 +888,62 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " \n",
+ " Input \n",
+ " Model Output \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " [{'content': 'Classify the sentiment of this food delivery review: The food came looking like this... Categorize the request into one of \"positive\", \"negative\" or \"unclear\". Respond with only one of those words.', 'role': 'user'}] \n",
+ " [{'content': 'negative', 'role': 'assistant'}] \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " [{'content': 'Classify the sentiment of this food delivery review: nan. Categorize the request into one of \"positive\", \"negative\" or \"unclear\". Respond with only one of those words.', 'role': 'user'}] \n",
+ " [{'content': 'unclear', 'role': 'assistant'}] \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " [{'content': 'Classify the sentiment of this food delivery review: nan. Categorize the request into one of \"positive\", \"negative\" or \"unclear\". Respond with only one of those words.', 'role': 'user'}] \n",
+ " [{'content': 'unclear', 'role': 'assistant'}] \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " [{'content': 'Classify the sentiment of this food delivery review: nan. Categorize the request into one of \"positive\", \"negative\" or \"unclear\". Respond with only one of those words.', 'role': 'user'}] \n",
+ " [{'content': 'unclear', 'role': 'assistant'}] \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " [{'content': 'Classify the sentiment of this food delivery review: Wow look at this pizza!. Categorize the request into one of \"positive\", \"negative\" or \"unclear\". Respond with only one of those words.', 'role': 'user'}] \n",
+ " [{'content': 'positive', 'role': 'assistant'}] \n",
+ " \n",
+ " \n",
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
"failed_samples = [\n",
" {\n",
@@ -787,7 +1002,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.11.8"
+ "version": "3.12.9"
}
},
"nbformat": 4,