Abid Ali Awan commited on
Commit
bfad75d
·
1 Parent(s): 4569df2

refactor(notebook): update execution counts, clean up unused imports, and enhance markdown report structure

Browse files
research/multi_agent_research_assistant_openai_agents_olostep.ipynb CHANGED
@@ -27,12 +27,12 @@
27
  },
28
  {
29
  "cell_type": "code",
30
- "execution_count": 12,
31
  "id": "305edf05",
32
  "metadata": {},
33
  "outputs": [],
34
  "source": [
35
- "# %pip install -q -U openai-agents olostep python-dotenv pydantic"
36
  ]
37
  },
38
  {
@@ -52,16 +52,13 @@
52
  },
53
  {
54
  "cell_type": "code",
55
- "execution_count": 13,
56
  "id": "65c55df2",
57
  "metadata": {},
58
  "outputs": [],
59
  "source": [
60
- "import importlib.metadata\n",
61
  "import json\n",
62
  "import os\n",
63
- "import textwrap\n",
64
- "import warnings\n",
65
  "from datetime import datetime\n",
66
  "from typing import Any\n",
67
  "\n",
@@ -86,47 +83,6 @@
86
  "OLOSTEP_API_KEY = os.getenv(\"OLOSTEP_API_KEY\")"
87
  ]
88
  },
89
- {
90
- "cell_type": "markdown",
91
- "id": "6eeb39f9",
92
- "metadata": {},
93
- "source": [
94
- "## Olostep SDK Search With Scrape Demo\n",
95
- "\n",
96
- "This standalone cell uses the exact SDK style requested.\n"
97
- ]
98
- },
99
- {
100
- "cell_type": "code",
101
- "execution_count": 14,
102
- "id": "d2b663f0",
103
- "metadata": {},
104
- "outputs": [
105
- {
106
- "name": "stdout",
107
- "output_type": "stream",
108
- "text": [
109
- "https://www.bcg.com/capabilities/artificial-intelligence/ai-agents - 28638 chars\n",
110
- "https://company.g2.com/news/2025-ai-agent-report - 14118 chars\n",
111
- "https://www.grandviewresearch.com/industry-analysis/ai-agents-market-report - 28563 chars\n",
112
- "https://mitsloan.mit.edu/ideas-made-to-matter/4-new-studies-about-agentic-ai-mit-initiative-digital-economy - 21678 chars\n",
113
- "https://www.capgemini.com/insights/research-library/ai-agents/ - 49027 chars\n"
114
- ]
115
- }
116
- ],
117
- "source": [
118
- "client = Olostep(api_key=OLOSTEP_API_KEY)\n",
119
- "\n",
120
- "search = client.searches.create(\n",
121
- " query=\"What are the most important recent developments in AI agents for business research?\",\n",
122
- " limit=5,\n",
123
- " scrape_options={\"formats\": [\"markdown\"], \"timeout\": 25},\n",
124
- ")\n",
125
- "\n",
126
- "for link in search.links:\n",
127
- " print(link[\"url\"], \"-\", len(link.get(\"markdown_content\") or \"\"), \"chars\")\n"
128
- ]
129
- },
130
  {
131
  "cell_type": "markdown",
132
  "id": "3d86e6e2",
@@ -141,7 +97,7 @@
141
  },
142
  {
143
  "cell_type": "code",
144
- "execution_count": 15,
145
  "id": "e1cb38e5",
146
  "metadata": {},
147
  "outputs": [],
@@ -179,6 +135,10 @@
179
  " return text[:max_chars] + \"\\n... [truncated]\"\n",
180
  "\n",
181
  "\n",
 
 
 
 
182
  "def current_year_context() -> str:\n",
183
  " return str(datetime.now().year)\n",
184
  "\n",
@@ -208,12 +168,12 @@
208
  "source": [
209
  "## Pydantic Structured Outputs\n",
210
  "\n",
211
- "These models make the judge output and final research report predictable.\n"
212
  ]
213
  },
214
  {
215
  "cell_type": "code",
216
- "execution_count": 16,
217
  "id": "8924e811",
218
  "metadata": {},
219
  "outputs": [],
@@ -230,17 +190,9 @@
230
  "\n",
231
  "\n",
232
  "class MarkdownResearchReport(BaseModel):\n",
233
- " title: str = Field(description=\"Research report title.\")\n",
234
- " executive_summary: str = Field(description=\"Short answer-first summary.\")\n",
235
- " key_findings: list[str] = Field(description=\"Most important findings.\")\n",
236
  " markdown_report: str = Field(\n",
237
  " description=\"Complete Markdown report with polished headings, clear analysis, reader-friendly structure, and citations.\"\n",
238
- " )\n",
239
- " citations: list[str] = Field(\n",
240
- " default_factory=list, description=\"Source URLs used in the report.\"\n",
241
- " )\n",
242
- " confidence: str = Field(description=\"Low, medium, or high confidence.\")\n",
243
- " method_used: str = Field(description=\"Retrieval path used by the manager agent.\")\n"
244
  ]
245
  },
246
  {
@@ -255,7 +207,7 @@
255
  },
256
  {
257
  "cell_type": "code",
258
- "execution_count": 17,
259
  "id": "ed55def1",
260
  "metadata": {},
261
  "outputs": [],
@@ -291,7 +243,6 @@
291
  " data.get(\"links\", []),\n",
292
  " limit=limit,\n",
293
  " ),\n",
294
- " \"raw\": data,\n",
295
  " }\n",
296
  " )\n",
297
  "\n",
@@ -331,7 +282,6 @@
331
  " data.get(\"links\", []),\n",
332
  " limit=limit,\n",
333
  " ),\n",
334
- " \"raw\": data,\n",
335
  " },\n",
336
  " max_chars=12000,\n",
337
  " )\n",
@@ -382,7 +332,7 @@
382
  },
383
  {
384
  "cell_type": "code",
385
- "execution_count": 18,
386
  "id": "ec7b6da3",
387
  "metadata": {},
388
  "outputs": [],
@@ -443,7 +393,7 @@
443
  },
444
  {
445
  "cell_type": "code",
446
- "execution_count": 19,
447
  "id": "10af3569",
448
  "metadata": {},
449
  "outputs": [],
@@ -462,12 +412,10 @@
462
  " name=\"Manager research agent\",\n",
463
  " model=MODEL,\n",
464
  " instructions=(\n",
 
 
465
  " \"You are the orchestrator for a multi-agent research assistant. You must manage the workflow, \"\n",
466
- " \"not answer from your own memory. For current, recent, latest, ongoing, or time-sensitive \"\n",
467
- " \"topics, if the user query does not mention a year, add the current year \"\n",
468
- " f\"({current_year_context()}) to the answer_query, search_with_scrape, and search_web query text \"\n",
469
- " \"so the tools look for recent results. If the user already mentions a year, preserve that year. \"\n",
470
- " \"Do not treat older sources as sufficient when newer coverage is needed. Follow this policy exactly:\\n\"\n",
471
  " \"1. Always call answer_query first to get a simple initial answer for the user's question.\\n\"\n",
472
  " \"2. Immediately call judge_answer_quality on the original question plus the answer_query result. \"\n",
473
  " \"If the judge returns is_good_enough=true and score >= 0.85, stop researching and call \"\n",
@@ -484,7 +432,14 @@
484
  " \"search result, and scraped page. The analyst must produce the final MarkdownResearchReport.\\n\"\n",
485
  " \"6. Return only the final MarkdownResearchReport. Do not return a casual chat answer, tool transcript, or plan.\"\n",
486
  " ),\n",
487
- " tools=[answer_query, judge_tool, search_with_scrape, search_web, scrape_url, analyst_tool],\n",
 
 
 
 
 
 
 
488
  " output_type=MarkdownResearchReport,\n",
489
  ")\n"
490
  ]
@@ -501,7 +456,7 @@
501
  },
502
  {
503
  "cell_type": "code",
504
- "execution_count": 20,
505
  "id": "15e75b26",
506
  "metadata": {},
507
  "outputs": [],
@@ -521,7 +476,15 @@
521
  " print(\"OpenAI trace ID:\", trace_id)\n",
522
  " print(\"OpenAI trace URL:\", openai_trace_url(trace_id))\n",
523
  "\n",
 
 
524
  " prompt = f\"\"\"\n",
 
 
 
 
 
 
525
  "Research question:\n",
526
  "{query}\n",
527
  "\n",
@@ -561,7 +524,7 @@
561
  },
562
  {
563
  "cell_type": "code",
564
- "execution_count": 21,
565
  "id": "babeecbc",
566
  "metadata": {},
567
  "outputs": [
@@ -569,58 +532,105 @@
569
  "name": "stdout",
570
  "output_type": "stream",
571
  "text": [
572
- "OpenAI trace ID: trace_45f3333363da420dbcefc8bb8819224c\n",
573
- "OpenAI trace URL: https://platform.openai.com/logs/trace?trace_id=trace_45f3333363da420dbcefc8bb8819224c\n",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
574
  "Trace flushed. Open the URL above to inspect manager, specialist agents, tools, and Olostep spans.\n"
575
  ]
576
  },
577
  {
578
  "data": {
579
  "text/markdown": [
580
- "## Executive Summary\n",
 
 
 
 
 
 
 
 
 
 
 
 
581
  "\n",
582
- "OpenAI is shutting down Sora as a product line in phases. According to OpenAI’s Help Center, the Sora web and app experiences were discontinued on April 26, 2026, and the Sora API is scheduled to be discontinued on September 24, 2026. OpenAI also posted guidance for exporting content and handling account-related issues, which suggests a managed wind-down rather than an emergency outage. [OpenAI Help Center](https://help.openai.com/)\n",
583
  "\n",
584
- "Independent reporting from the Los Angeles Times and The New York Times corroborates the shutdown and frames it as part of a broader strategic shift. The coverage connects the move to business and partnership realities, including reporting about a Disney-related arrangement. [Los Angeles Times](https://www.latimes.com/) [The New York Times](https://www.nytimes.com/)\n",
585
  "\n",
586
- "## What’s happening\n",
587
  "\n",
588
- "Sora is OpenAI’s text-to-video generation product. The current issue is not speculation: OpenAI has announced a staged retirement of the service.\n",
589
  "\n",
590
- "The timing is important:\n",
591
  "\n",
592
- "| Milestone | Date | Meaning |\n",
593
- "|---|---:|---|\n",
594
- "| Web/app shutdown | Apr. 26, 2026 | Consumer access ended |\n",
595
- "| API shutdown | Sep. 24, 2026 | Developer access ends later |\n",
596
  "\n",
597
- "That split timeline usually means a company is reducing product surface area while giving users and developers time to migrate or export data. [OpenAI Help Center](https://help.openai.com/)\n",
598
  "\n",
599
- "## Why it’s being shut down\n",
600
  "\n",
601
- "OpenAI’s own notice focuses on the discontinuation process and what users should do next. Outside reporting adds the broader context:\n",
602
  "\n",
603
- "- the product’s commercial viability was in question,\n",
604
- "- the company appears to be refocusing resources,\n",
605
- "- and a Disney-related partnership backdrop is part of the story. [Los Angeles Times](https://www.latimes.com/) [The New York Times](https://www.nytimes.com/)\n",
606
  "\n",
607
- "So the best read is: this is a strategic wind-down, not a surprise technical failure.\n",
608
  "\n",
609
- "## What users should take from it\n",
610
  "\n",
611
- "- Sora is no longer a stable consumer product.\n",
612
- "- If you have content in Sora, export it as soon as possible.\n",
613
- "- If you depend on the API, the key deadline is September 24, 2026.\n",
614
  "\n",
615
- "## Bottom line\n",
 
 
 
616
  "\n",
617
- "OpenAI is discontinuing Sora in an orderly, phased shutdown. The service is already gone from the web/app side, and the API has a later retirement date. The move appears to reflect strategic and business considerations more than any single technical issue.\n",
618
  "\n",
619
- "## References\n",
620
  "\n",
621
- "- OpenAI Help Center — https://help.openai.com/en/articles/20001152-what-to-know-about-the-sora-discontinuation\n",
622
- "- Los Angeles Times — https://www.latimes.com/entertainment-arts/business/story/2026-03-24/openai-will-shut-down-sora-why-what-to-know\n",
623
- "- The New York Times https://www.nytimes.com/2026/03/24/technology/openai-shutting-down-sora.html"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
624
  ],
625
  "text/plain": [
626
  "<IPython.core.display.Markdown object>"
@@ -637,14 +647,6 @@
637
  "display(Markdown(report.markdown_report))\n"
638
  ]
639
  },
640
- {
641
- "cell_type": "markdown",
642
- "id": "06770c28",
643
- "metadata": {},
644
- "source": [
645
- "![image_1.png](image_1.png)"
646
- ]
647
- },
648
  {
649
  "cell_type": "markdown",
650
  "id": "5ec73253",
@@ -657,7 +659,7 @@
657
  },
658
  {
659
  "cell_type": "code",
660
- "execution_count": 22,
661
  "id": "17a66fce",
662
  "metadata": {},
663
  "outputs": [
 
27
  },
28
  {
29
  "cell_type": "code",
30
+ "execution_count": null,
31
  "id": "305edf05",
32
  "metadata": {},
33
  "outputs": [],
34
  "source": [
35
+ "%pip install -q -U openai-agents olostep python-dotenv pydantic"
36
  ]
37
  },
38
  {
 
52
  },
53
  {
54
  "cell_type": "code",
55
+ "execution_count": 2,
56
  "id": "65c55df2",
57
  "metadata": {},
58
  "outputs": [],
59
  "source": [
 
60
  "import json\n",
61
  "import os\n",
 
 
62
  "from datetime import datetime\n",
63
  "from typing import Any\n",
64
  "\n",
 
83
  "OLOSTEP_API_KEY = os.getenv(\"OLOSTEP_API_KEY\")"
84
  ]
85
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  {
87
  "cell_type": "markdown",
88
  "id": "3d86e6e2",
 
97
  },
98
  {
99
  "cell_type": "code",
100
+ "execution_count": 3,
101
  "id": "e1cb38e5",
102
  "metadata": {},
103
  "outputs": [],
 
135
  " return text[:max_chars] + \"\\n... [truncated]\"\n",
136
  "\n",
137
  "\n",
138
+ "def current_date_context() -> str:\n",
139
+ " return datetime.now().strftime(\"%B %d, %Y\")\n",
140
+ "\n",
141
+ "\n",
142
  "def current_year_context() -> str:\n",
143
  " return str(datetime.now().year)\n",
144
  "\n",
 
168
  "source": [
169
  "## Pydantic Structured Outputs\n",
170
  "\n",
171
+ "These models make the judge output predictable and keep the final report focused on rendered Markdown.\n"
172
  ]
173
  },
174
  {
175
  "cell_type": "code",
176
+ "execution_count": 4,
177
  "id": "8924e811",
178
  "metadata": {},
179
  "outputs": [],
 
190
  "\n",
191
  "\n",
192
  "class MarkdownResearchReport(BaseModel):\n",
 
 
 
193
  " markdown_report: str = Field(\n",
194
  " description=\"Complete Markdown report with polished headings, clear analysis, reader-friendly structure, and citations.\"\n",
195
+ " )\n"
 
 
 
 
 
196
  ]
197
  },
198
  {
 
207
  },
208
  {
209
  "cell_type": "code",
210
+ "execution_count": 5,
211
  "id": "ed55def1",
212
  "metadata": {},
213
  "outputs": [],
 
243
  " data.get(\"links\", []),\n",
244
  " limit=limit,\n",
245
  " ),\n",
 
246
  " }\n",
247
  " )\n",
248
  "\n",
 
282
  " data.get(\"links\", []),\n",
283
  " limit=limit,\n",
284
  " ),\n",
 
285
  " },\n",
286
  " max_chars=12000,\n",
287
  " )\n",
 
332
  },
333
  {
334
  "cell_type": "code",
335
+ "execution_count": 6,
336
  "id": "ec7b6da3",
337
  "metadata": {},
338
  "outputs": [],
 
393
  },
394
  {
395
  "cell_type": "code",
396
+ "execution_count": 7,
397
  "id": "10af3569",
398
  "metadata": {},
399
  "outputs": [],
 
412
  " name=\"Manager research agent\",\n",
413
  " model=MODEL,\n",
414
  " instructions=(\n",
415
+ " f\"Current date: {current_date_context()}\\n\"\n",
416
+ " f\"Current year: {current_year_context()}\\n\\n\"\n",
417
  " \"You are the orchestrator for a multi-agent research assistant. You must manage the workflow, \"\n",
418
+ " \"not answer from your own memory. Follow this policy exactly:\\n\"\n",
 
 
 
 
419
  " \"1. Always call answer_query first to get a simple initial answer for the user's question.\\n\"\n",
420
  " \"2. Immediately call judge_answer_quality on the original question plus the answer_query result. \"\n",
421
  " \"If the judge returns is_good_enough=true and score >= 0.85, stop researching and call \"\n",
 
432
  " \"search result, and scraped page. The analyst must produce the final MarkdownResearchReport.\\n\"\n",
433
  " \"6. Return only the final MarkdownResearchReport. Do not return a casual chat answer, tool transcript, or plan.\"\n",
434
  " ),\n",
435
+ " tools=[\n",
436
+ " answer_query,\n",
437
+ " judge_tool,\n",
438
+ " search_with_scrape,\n",
439
+ " search_web,\n",
440
+ " scrape_url,\n",
441
+ " analyst_tool,\n",
442
+ " ],\n",
443
  " output_type=MarkdownResearchReport,\n",
444
  ")\n"
445
  ]
 
456
  },
457
  {
458
  "cell_type": "code",
459
+ "execution_count": 8,
460
  "id": "15e75b26",
461
  "metadata": {},
462
  "outputs": [],
 
476
  " print(\"OpenAI trace ID:\", trace_id)\n",
477
  " print(\"OpenAI trace URL:\", openai_trace_url(trace_id))\n",
478
  "\n",
479
+ " current_date = current_date_context()\n",
480
+ " current_year = current_year_context()\n",
481
  " prompt = f\"\"\"\n",
482
+ "Current date:\n",
483
+ "{current_date}\n",
484
+ "\n",
485
+ "Current year:\n",
486
+ "{current_year}\n",
487
+ "\n",
488
  "Research question:\n",
489
  "{query}\n",
490
  "\n",
 
524
  },
525
  {
526
  "cell_type": "code",
527
+ "execution_count": 9,
528
  "id": "babeecbc",
529
  "metadata": {},
530
  "outputs": [
 
532
  "name": "stdout",
533
  "output_type": "stream",
534
  "text": [
535
+ "OpenAI trace ID: trace_e98cddae633644a2acb5d568072db008\n",
536
+ "OpenAI trace URL: https://platform.openai.com/logs/trace?trace_id=trace_e98cddae633644a2acb5d568072db008\n"
537
+ ]
538
+ },
539
+ {
540
+ "name": "stderr",
541
+ "output_type": "stream",
542
+ "text": [
543
+ "C:\\Users\\abida\\AppData\\Roaming\\Python\\Python313\\site-packages\\olostep\\backend\\caller.py:491: UserWarning: The API response from 'Create Scrape' contains 1 extra field(s) not defined in the SDK model: cost_usd. This may indicate new API features. Please check for a newer SDK version on Slack (best place to ask), PyPI or Github. (current: 1.0.4). Visit https://docs.olostep.com/sdks/python for updates.\n",
544
+ " return await self._invoke(\n"
545
+ ]
546
+ },
547
+ {
548
+ "name": "stdout",
549
+ "output_type": "stream",
550
+ "text": [
551
  "Trace flushed. Open the URL above to inspect manager, specialist agents, tools, and Olostep spans.\n"
552
  ]
553
  },
554
  {
555
  "data": {
556
  "text/markdown": [
557
+ "# Executive Summary\n",
558
+ "\n",
559
+ "OpenAI is not “shutting down Sora” in the sense of abandoning the project entirely, but it is discontinuing the consumer-facing Sora web and app experiences and retiring the Sora API on a later date. OpenAI’s Help Center says the Sora web and app were discontinued on April 26, 2026, and the API will be discontinued on September 24, 2026, with users urged to export content before deletion follows later. [OpenAI Help Center](https://help.openai.com/)\n",
560
+ "\n",
561
+ "The shift appears to reflect a strategic reprioritization: reporting from Reuters and BBC says OpenAI is focusing more on core models, coding tools, enterprise customers, robotics, and broader platform ambitions. Reuters also reports the move startled Disney and that the previously reported $1 billion Disney partnership never closed and no money changed hands. [Reuters](https://www.reuters.com/) [BBC](https://www.bbc.com/news)\n",
562
+ "\n",
563
+ "# Key Findings\n",
564
+ "\n",
565
+ "- **Consumer Sora is gone:** OpenAI ended the Sora web and app experiences on April 26, 2026. [OpenAI Help Center](https://help.openai.com/)\n",
566
+ "- **The API stays up briefly longer:** OpenAI says Sora API access ends on September 24, 2026. [OpenAI Help Center](https://help.openai.com/)\n",
567
+ "- **The main reason is strategic refocusing:** Reporting says OpenAI is shifting attention toward coding, enterprise usage, AGI-related work, robotics, and a broader “super-app” direction. [Reuters](https://www.reuters.com/) [BBC](https://www.bbc.com/news)\n",
568
+ "- **Commercial performance and safety concerns mattered:** BBC reporting cites weak monetization, plus concerns about misinformation and copyright infringement. [BBC](https://www.bbc.com/news)\n",
569
+ "- **The Disney story is real, but incomplete in many headlines:** Reuters says the reported $1 billion Disney deal did not close and no money changed hands, though Disney had explored licensing use of its IP. [Reuters](https://www.reuters.com/)\n",
570
  "\n",
571
+ "# Context\n",
572
  "\n",
573
+ "Sora was OpenAI’s generative video product, aimed at creating short video content from prompts. Its shutdown has been widely framed as a surprise because it followed heavy outside attention and high-profile industry interest. But the practical change is narrower than “OpenAI killed Sora entirely”: the consumer product is discontinued now, while the API has a later retirement date. [OpenAI Help Center](https://help.openai.com/)\n",
574
  "\n",
575
+ "The timing matters. OpenAI is asking users to save their material now, because the company says content will later be deleted after the service wind-down. That makes this a managed product retirement rather than an abrupt outage. [OpenAI Help Center](https://help.openai.com/)\n",
576
  "\n",
577
+ "# Evidence Review\n",
578
  "\n",
579
+ "**Primary source:** OpenAI’s Help Center provides the clearest confirmation of status and dates. It explicitly states the Sora web and app are discontinued and gives the API retirement date. This is the strongest evidence for what actually happened operationally. [OpenAI Help Center](https://help.openai.com/)\n",
580
  "\n",
581
+ "**Reuters:** Reuters reports that OpenAI dropped Sora, that the decision surprised Disney, and that the earlier reported $1 billion deal did not close. Reuters also places the move inside a broader strategic shift toward coding tools, corporate customers, AGI, robotics, and a larger platform strategy. [Reuters](https://www.reuters.com/)\n",
 
 
 
582
  "\n",
583
+ "**BBC:** BBC reporting reinforces the strategic story and adds commercial and policy context, including low reported in-app revenue, plus misinformation and copyright concerns. It also notes the consumer app and web platform were closed. [BBC](https://www.bbc.com/news)\n",
584
  "\n",
585
+ "**Other major outlets:** Coverage from CNN, CNBC, the New York Times, and the Los Angeles Times broadly aligns with the same framing: Sora was pulled from consumer use, while OpenAI appears to be reallocating attention toward higher-priority products and infrastructure. [CNN](https://www.cnn.com/) [CNBC](https://www.cnbc.com/) [New York Times](https://www.nytimes.com/) [Los Angeles Times](https://www.latimes.com/)\n",
586
  "\n",
587
+ "# Detailed Analysis\n",
588
  "\n",
589
+ "## What happened\n",
 
 
590
  "\n",
591
+ "OpenAI has discontinued the consumer Sora experience and set a later end date for the API. In practical terms, users can no longer rely on Sora as an active consumer app/web product, and developers have a defined sunset window before the API is retired. [OpenAI Help Center](https://help.openai.com/)\n",
592
  "\n",
593
+ "## Why OpenAI says it did this\n",
594
  "\n",
595
+ "The reporting points to a combination of business and strategy factors:\n",
 
 
596
  "\n",
597
+ "- **Resource allocation:** OpenAI is concentrating on products and markets that better align with its near-term priorities.\n",
598
+ "- **Strategic focus:** Reuters says the company is emphasizing coding tools, corporate customers, AGI work, robotics, and a broader platform vision. [Reuters](https://www.reuters.com/)\n",
599
+ "- **Monetization:** BBC reports Sora’s in-app revenue was comparatively weak relative to ChatGPT, suggesting limited commercial traction. [BBC](https://www.bbc.com/news)\n",
600
+ "- **Safety and rights issues:** BBC also cites concerns about misinformation and copyright infringement, which are especially sensitive for generative video. [BBC](https://www.bbc.com/news)\n",
601
  "\n",
602
+ "## The Disney context\n",
603
  "\n",
604
+ "The Disney angle is less about a signed, paid partnership and more about a deal that reportedly never closed. Reuters says OpenAI’s move “startled Disney,” but also that the reported $1 billion transaction did not finalize and no money changed hands. That distinction is important: Disney may have been involved in licensing discussions, but the deal was not a completed commercial commitment. [Reuters](https://www.reuters.com/)\n",
605
  "\n",
606
+ "## Compact comparison\n",
607
+ "\n",
608
+ "| Topic | Consumer Sora | Sora API |\n",
609
+ "|---|---:|---:|\n",
610
+ "| Status | Discontinued | Scheduled for retirement |\n",
611
+ "| OpenAI date | April 26, 2026 | September 24, 2026 |\n",
612
+ "| User impact | Consumer access ended | Developer access ends later |\n",
613
+ "| Source | OpenAI Help Center | OpenAI Help Center |\n",
614
+ "\n",
615
+ "# Implications\n",
616
+ "\n",
617
+ "For users, the immediate implication is simple: Sora is no longer available as a consumer web/app product, and any content stored there should be exported promptly. For developers, the API sunset means any integrations need to be considered against the September retirement date. [OpenAI Help Center](https://help.openai.com/)\n",
618
+ "\n",
619
+ "More broadly, the move suggests OpenAI is being selective about where it deploys compute, product attention, and brand risk. The decision also highlights a recurring issue in generative media: even technically impressive tools can face pressure from cost, monetization, copyright, and trust/safety concerns. [Reuters](https://www.reuters.com/) [BBC](https://www.bbc.com/news)\n",
620
+ "\n",
621
+ "# Source Notes\n",
622
+ "\n",
623
+ "The clearest status information comes from OpenAI itself, which is the authoritative source for product availability and retirement dates. Reuters provides the strongest high-level reporting on the strategic and Disney-related context. BBC adds useful detail on monetization and policy concerns. The other major outlets are consistent with the same general picture, though the Reuters and OpenAI sources are the most central here. [OpenAI Help Center](https://help.openai.com/) [Reuters](https://www.reuters.com/) [BBC](https://www.bbc.com/news)\n",
624
+ "\n",
625
+ "# References\n",
626
+ "\n",
627
+ "- OpenAI Help Center — https://help.openai.com/\n",
628
+ "- Reuters — https://www.reuters.com/\n",
629
+ "- BBC News — https://www.bbc.com/news\n",
630
+ "- CNN — https://www.cnn.com/\n",
631
+ "- CNBC — https://www.cnbc.com/\n",
632
+ "- The New York Times — https://www.nytimes.com/\n",
633
+ "- Los Angeles Times — https://www.latimes.com/"
634
  ],
635
  "text/plain": [
636
  "<IPython.core.display.Markdown object>"
 
647
  "display(Markdown(report.markdown_report))\n"
648
  ]
649
  },
 
 
 
 
 
 
 
 
650
  {
651
  "cell_type": "markdown",
652
  "id": "5ec73253",
 
659
  },
660
  {
661
  "cell_type": "code",
662
+ "execution_count": 10,
663
  "id": "17a66fce",
664
  "metadata": {},
665
  "outputs": [