<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: openai</title>
    <description>The latest articles tagged 'openai' on DEV Community.</description>
    <link>https://dev.to/t/openai</link>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tag/openai"/>
    <language>en</language>
    <item>
      <title>AI Reasoning Breakthroughs: DeepSeek-R1 and OpenAI's Path to Logic</title>
      <dc:creator>trillioniar s</dc:creator>
      <pubDate>Wed, 14 Oct 2026 14:34:37 +0000</pubDate>
      <link>https://dev.to/trillioniar_s_14a3c313e14/ai-reasoning-breakthroughs-deepseek-r1-and-openais-path-to-logic-256o</link>
      <guid>https://dev.to/trillioniar_s_14a3c313e14/ai-reasoning-breakthroughs-deepseek-r1-and-openais-path-to-logic-256o</guid>
      <description>&lt;p&gt;Today's AI landscape is shifting from probabilistic word prediction to structured logical reasoning. New models are utilizing reinforcement learning to "think" before they speak, drastically improving performance in math and coding.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Rise of Reasoning Models
&lt;/h2&gt;

&lt;h3&gt;
  
  
  OpenAI's Learning to Reason
&lt;/h3&gt;

&lt;p&gt;OpenAI has introduced new methodologies for LLMs to reason through complex problems. By integrating chain-of-thought processing, models can now self-correct and explore multiple paths to a solution. This reduces hallucinations in technical domains.&lt;br&gt;
Source: &lt;a href="https://openai.com/index/learning-to-reason-with-llms/" rel="noopener noreferrer"&gt;OpenAI&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  DeepSeek-R1 and RL
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Incentivizing Logic via Reinforcement Learning
&lt;/h3&gt;

&lt;p&gt;DeepSeek-R1 demonstrates that reasoning capabilities can be incentivized through specialized RL. The model shows a marked improvement in mathematical reasoning by rewarding the process of derivation rather than just the final answer.&lt;br&gt;
Source: &lt;a href="https://arxiv.org/abs/2501.12948" rel="noopener noreferrer"&gt;arXiv&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Philosophical Shift
&lt;/h2&gt;

&lt;h3&gt;
  
  
  LLM Inevitabilism
&lt;/h3&gt;

&lt;p&gt;The concept of "LLM Inevitabilism" suggests that the integration of these models into every layer of software is unavoidable. As reasoning capabilities stabilize, LLMs move from being "chatbots" to becoming the core operating system for digital tasks.&lt;br&gt;
Source: &lt;a href="https://tomrenner.com/posts/llm-inevitabilism/" rel="noopener noreferrer"&gt;Tom Renner&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Open Source and Accessibility
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Meta's Open Source Push
&lt;/h3&gt;

&lt;p&gt;Meta continues to advocate for open-source AI as the only viable path to prevent corporate monopolies. By releasing high-performance weights, they enable a global ecosystem of fine-tuning and safety research.&lt;br&gt;
Source: &lt;a href="https://about.fb.com/news/2024/07/open-source-ai-is-the-path-forward/" rel="noopener noreferrer"&gt;Meta&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Infrastructure for Scale
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Google DeepMind's Gemini Evolution
&lt;/h3&gt;

&lt;p&gt;Gemini continues to iterate on multi-modal reasoning, integrating native audio and video processing into the reasoning loop. This allows the model to reason about physical space and temporal events more accurately.&lt;br&gt;
Source: &lt;a href="https://deepmind.google/technologies/gemini/" rel="noopener noreferrer"&gt;Google DeepMind&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is Chain-of-Thought processing?
&lt;/h3&gt;

&lt;p&gt;It is a technique where the model generates intermediate reasoning steps before providing the final answer.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does DeepSeek-R1 differ from standard LLMs?
&lt;/h3&gt;

&lt;p&gt;DeepSeek-R1 uses reinforcement learning to specifically reward the reasoning process, not just the output.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why is open-source AI important for reasoning?
&lt;/h3&gt;

&lt;p&gt;Open weights allow researchers to inspect the "hidden" reasoning chains to ensure safety and transparency.&lt;/p&gt;

&lt;h3&gt;
  
  
  Will reasoning models replace traditional coding?
&lt;/h3&gt;

&lt;p&gt;They will likely augment coding by handling architectural logic, while humans focus on high-level design.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do these models reduce hallucinations?
&lt;/h3&gt;

&lt;p&gt;By verifying internal steps of a logic chain, models can spot contradictions before finalizing a response.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>coding</category>
      <category>openai</category>
    </item>
    <item>
      <title>Claude vs Gemini vs GPT: What a 2026 Study of 26 AI Models Reveals About Long Context</title>
      <dc:creator>Egor</dc:creator>
      <pubDate>Wed, 14 Oct 2026 14:28:14 +0000</pubDate>
      <link>https://dev.to/coffee1337/claude-vs-gemini-vs-gpt-what-a-2026-study-of-26-ai-models-reveals-about-long-context-57i</link>
      <guid>https://dev.to/coffee1337/claude-vs-gemini-vs-gpt-what-a-2026-study-of-26-ai-models-reveals-about-long-context-57i</guid>
      <description>&lt;p&gt;&lt;em&gt;26 AI models. 6,438 evaluation instances. Contexts up to 1 million tokens. The results challenge how we compare modern language models.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Imagine giving an AI assistant an entire software repository.&lt;/p&gt;

&lt;p&gt;Thousands of files. Hundreds of modules. API documentation, database schemas, and years of development history.&lt;/p&gt;

&lt;p&gt;The model accepts everything without complaining.&lt;/p&gt;

&lt;p&gt;You ask it to identify a subtle architectural problem.&lt;/p&gt;

&lt;p&gt;It confidently provides an answer.&lt;/p&gt;

&lt;p&gt;But is that answer actually reliable?&lt;/p&gt;

&lt;p&gt;In 2026, the question is no longer simply whether a language model can accept a million tokens.&lt;/p&gt;

&lt;p&gt;The more interesting question is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much of that context can the model actually use correctly?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A recent research paper, &lt;em&gt;ATLAS: All-round Testing of Long-context Abilities across Scales&lt;/em&gt;, provides some surprising answers.&lt;/p&gt;

&lt;p&gt;The researchers evaluated 26 models on 6,438 instances across eight capability dimensions, considering input lengths from 8K to 1M tokens.&lt;/p&gt;

&lt;p&gt;One finding stands out:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemini 3.1 Pro Preview led at 128K, but Claude Opus 4.6 led at 1M.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The best model depends on how you measure it.&lt;/p&gt;

&lt;p&gt;Let's examine what the researchers tested, what their results actually mean, and why these findings matter for developers building real AI systems.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Research note: This article analyzes published 2026 research. It is not an independent benchmark, and it does not claim that the author personally tested all 26 models.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  1. The Problem With AI Benchmarks
&lt;/h2&gt;

&lt;p&gt;When comparing language models, we often see a familiar table:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Context window&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Model A&lt;/td&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model B&lt;/td&gt;
&lt;td&gt;256K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model C&lt;/td&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The implication seems obvious.&lt;/p&gt;

&lt;p&gt;Model C can process more information, so it must be better at large-document tasks.&lt;/p&gt;

&lt;p&gt;But this reasoning contains a hidden assumption:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That accepting more information means using that information effectively.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Consider two different tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Task A: Simple retrieval&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A document contains the sentence:&lt;/p&gt;

&lt;p&gt;"The deployment identifier is QZ-7194."&lt;/p&gt;

&lt;p&gt;The model is asked to retrieve that identifier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Task B: Complex reasoning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A repository contains dozens of service definitions, configuration files, and dependency relationships.&lt;/p&gt;

&lt;p&gt;The model must identify which changes could introduce a security regression.&lt;/p&gt;

&lt;p&gt;The second task requires much more than finding one string.&lt;/p&gt;

&lt;p&gt;It may involve combining evidence from many locations, resolving contradictions, and understanding dependencies.&lt;/p&gt;

&lt;p&gt;A model that performs well on Task A might struggle on Task B.&lt;/p&gt;

&lt;p&gt;That's exactly why evaluating long-context AI requires more than a single benchmark number.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. ATLAS: A Different Way to Measure Long-Context Intelligence
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Research:&lt;/strong&gt; &lt;em&gt;ATLAS: All-round Testing of Long-context Abilities across Scales&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authors:&lt;/strong&gt; Deli Huang and colleagues&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; May 27, 2026&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paper:&lt;/strong&gt; &lt;a href="https://arxiv.org/abs/2605.28079" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2605.28079&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The ATLAS researchers investigated two major weaknesses in traditional long-context evaluation.&lt;/p&gt;

&lt;p&gt;First, model performance can deteriorate as input length increases.&lt;/p&gt;

&lt;p&gt;Second, success on foundational tasks such as retrieval does not necessarily transfer to more complex application workloads.&lt;/p&gt;

&lt;p&gt;Their framework introduces several methodological improvements.&lt;/p&gt;

&lt;h3&gt;
  
  
  Evaluating across context lengths
&lt;/h3&gt;

&lt;p&gt;Instead of measuring performance at only one input size, ATLAS considers scores across a predefined context-length grid, from 8K to 1M tokens.&lt;/p&gt;

&lt;p&gt;This makes it possible to analyze how performance changes as more information enters the prompt.&lt;/p&gt;

&lt;p&gt;A model that performs exceptionally well at 128K may deteriorate more sharply than another model at longer lengths.&lt;/p&gt;

&lt;h3&gt;
  
  
  Separating foundational abilities from applications
&lt;/h3&gt;

&lt;p&gt;ATLAS distinguishes foundational operations from downstream workloads.&lt;/p&gt;

&lt;p&gt;This matters because retrieving information and applying it correctly are different capabilities.&lt;/p&gt;

&lt;p&gt;For instance, a model may identify relevant functions in a repository without understanding how they interact.&lt;/p&gt;

&lt;h3&gt;
  
  
  Measuring balanced performance
&lt;/h3&gt;

&lt;p&gt;The researchers introduce ATLAScore, a harmonic-mean-based aggregate across capability categories.&lt;/p&gt;

&lt;p&gt;This is intended to penalize highly imbalanced capability profiles.&lt;/p&gt;

&lt;p&gt;A model that dominates one task but struggles on others should not automatically receive the strongest overall evaluation.&lt;/p&gt;

&lt;p&gt;The framework also includes uncertainty propagation when computing its final aggregate scores.&lt;/p&gt;

&lt;p&gt;Together, these changes provide a more nuanced picture than a single retrieval accuracy number.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. The Result: The Leader Changes at 1 Million Tokens
&lt;/h2&gt;

&lt;p&gt;One of the most interesting findings concerns model rankings.&lt;/p&gt;

&lt;p&gt;According to the ATLAS paper:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Evaluation scope&lt;/th&gt;
&lt;th&gt;Leading model&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Up to 128K tokens&lt;/td&gt;
&lt;td&gt;Gemini 3.1 Pro Preview&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Up to 1M tokens&lt;/td&gt;
&lt;td&gt;Claude Opus 4.6&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7130pcshtryuxn2a7cjh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7130pcshtryuxn2a7cjh.png" alt="ATLAS 2026: Claude vs Gemini long-context benchmark" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This does not mean Claude is universally better than Gemini.&lt;/p&gt;

&lt;p&gt;Nor does it mean Gemini is inherently unreliable.&lt;/p&gt;

&lt;p&gt;It means the relative ranking changes under the specific evaluation conditions used by ATLAS.&lt;/p&gt;

&lt;p&gt;The researchers also reported that &lt;strong&gt;seven models changed position by at least two ranking places&lt;/strong&gt; when the evaluation expanded from the 8K–128K range to the 8K–1M range.&lt;/p&gt;

&lt;p&gt;That's important.&lt;/p&gt;

&lt;p&gt;Imagine selecting a model for your application after reviewing results obtained only at 128K.&lt;/p&gt;

&lt;p&gt;Your production workload, however, frequently processes 600K-token documents.&lt;/p&gt;

&lt;p&gt;The benchmark you used may not reflect your actual operating conditions.&lt;/p&gt;

&lt;p&gt;And if models deteriorate at different rates, their relative performance at 600K may differ from their relative performance at 128K.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The key insight: model quality is not independent of context length.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A useful benchmark should measure the range your application actually uses.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Why Context Length Changes the Difficulty
&lt;/h2&gt;

&lt;p&gt;Let's examine a simplified example.&lt;/p&gt;

&lt;p&gt;Imagine this information appears inside a long repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;service_a.py:
Service A sends requests to Service B.

service_b.py:
Service B uses Database C.

config.yaml:
Database C has public network access enabled.

security_policy.md:
Production databases must not expose public access.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now ask:&lt;/p&gt;

&lt;p&gt;"Does Service A indirectly depend on a database with a potentially unsafe network configuration?"&lt;/p&gt;

&lt;p&gt;Answering correctly requires several steps.&lt;/p&gt;

&lt;p&gt;First, identify the dependency between Service A and Service B.&lt;/p&gt;

&lt;p&gt;Second, identify Service B's database.&lt;/p&gt;

&lt;p&gt;Third, find Database C's configuration.&lt;/p&gt;

&lt;p&gt;Finally, compare that configuration with the security policy.&lt;/p&gt;

&lt;p&gt;No single sentence contains the entire answer.&lt;/p&gt;

&lt;p&gt;As the context grows, the model must identify relevant information among more irrelevant material while preserving the connections between different pieces of evidence.&lt;/p&gt;

&lt;p&gt;This creates distinct possible failure modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Missing one of the necessary pieces of evidence&lt;/li&gt;
&lt;li&gt;Retrieving a similar but incorrect detail&lt;/li&gt;
&lt;li&gt;Correctly retrieving the evidence but connecting it incorrectly&lt;/li&gt;
&lt;li&gt;Producing a plausible conclusion unsupported by the source material&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The example is illustrative, not an ATLAS test case.&lt;/p&gt;

&lt;p&gt;But it demonstrates why longer context can increase difficulty even when every relevant document fits into the model's advertised context window.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Another 2026 Study Reveals a Deeper Problem
&lt;/h2&gt;

&lt;p&gt;ATLAS evaluates long-context capabilities across models and scales.&lt;/p&gt;

&lt;p&gt;A separate 2026 study, &lt;em&gt;CorpusQA: A 10 Million Token Benchmark for Corpus-Level Analysis and Reasoning&lt;/em&gt;, investigates a different question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can AI systems analyze entire collections of documents when the evidence is distributed throughout the collection?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authors:&lt;/strong&gt; Zhiyuan Lu and colleagues&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Originally published:&lt;/strong&gt; January 21, 2026&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Revised:&lt;/strong&gt; April 25, 2026&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paper:&lt;/strong&gt; &lt;a href="https://arxiv.org/abs/2601.14952" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2601.14952&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CorpusQA includes tasks involving financial, educational, and real-estate documents.&lt;/p&gt;

&lt;p&gt;Some questions require aggregating numerical information from many documents.&lt;/p&gt;

&lt;p&gt;For example, imagine analyzing hundreds of financial reports to identify every company satisfying several accounting conditions.&lt;/p&gt;

&lt;p&gt;A traditional retrieval system might find a few relevant documents.&lt;/p&gt;

&lt;p&gt;But if answering the question requires analyzing every company, retrieving only five documents is insufficient.&lt;/p&gt;

&lt;p&gt;This is a fundamentally different problem from finding one answer-bearing passage.&lt;/p&gt;

&lt;h3&gt;
  
  
  The published results
&lt;/h3&gt;

&lt;p&gt;CorpusQA evaluated several models at different context lengths.&lt;/p&gt;

&lt;p&gt;For Gemini 2.5 Pro, the authors reported:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Context length&lt;/th&gt;
&lt;th&gt;Overall accuracy&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;td&gt;80.19%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;td&gt;50.73%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5z0yyj2ny1jxtfw2x5tq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5z0yyj2ny1jxtfw2x5tq.png" alt="CorpusQA 2026: Gemini 2.5 Pro accuracy decline from 128K to 1M tokens" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These results show a decline of 29.46 percentage points under the study's conditions.&lt;/p&gt;

&lt;p&gt;Importantly, CorpusQA evaluated Gemini 2.5 Pro, not Gemini 3.1 Pro.&lt;/p&gt;

&lt;p&gt;Its results cannot be directly substituted for the newer model's performance.&lt;/p&gt;

&lt;p&gt;But they illustrate how difficult corpus-level analysis can remain, even when a model supports very long inputs.&lt;/p&gt;

&lt;p&gt;The study also found that conventional retrieval-augmented generation performed poorly on tasks requiring globally distributed evidence.&lt;/p&gt;

&lt;p&gt;The lesson isn't that RAG is useless.&lt;/p&gt;

&lt;p&gt;It's that &lt;strong&gt;retrieving a handful of relevant chunks is not the same as analyzing an entire document collection.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Why Traditional RAG Can Fail on Global Questions
&lt;/h2&gt;

&lt;p&gt;A typical RAG pipeline looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User question
      |
      v
Vector search
      |
      v
Top-K relevant chunks
      |
      v
LLM
      |
      v
Generated answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This works well when a question can be answered using a relatively small number of relevant passages.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;"What is the API rate limit?"&lt;/p&gt;

&lt;p&gt;A good retrieval system can locate the appropriate documentation paragraph and pass it to the model.&lt;/p&gt;

&lt;p&gt;Now consider another question:&lt;/p&gt;

&lt;p&gt;"Across all customer reports from the last year, which failure category increased the most?"&lt;/p&gt;

&lt;p&gt;The answer requires a global aggregation.&lt;/p&gt;

&lt;p&gt;Retrieving only the most semantically similar documents may exclude a large part of the dataset.&lt;/p&gt;

&lt;p&gt;No matter how capable the LLM is, it cannot correctly aggregate information it never receives.&lt;/p&gt;

&lt;p&gt;This is an information-coverage problem, not merely a language-model problem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft0ymoxqlhpeclumpzyu0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft0ymoxqlhpeclumpzyu0.png" alt="CorpusQA 2026: RAG vs Memory Agent performance at 1M tokens" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the CorpusQA evaluation at 1M tokens, standard RAG achieved 17.38% accuracy, compared with 44.95% for the Memory Agent approach using Gemini 2.5 Pro.&lt;/p&gt;

&lt;p&gt;This illustrates how different approaches to managing large document collections can significantly affect performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  A better architecture for some analytical tasks
&lt;/h3&gt;

&lt;p&gt;For questions requiring exact aggregation, a structured processing pipeline may be more appropriate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Document collection
        |
        v
Information extraction
        |
        v
Structured records
        |
        v
SQL / analytical computation
        |
        v
Evidence verification
        |
        v
LLM-generated explanation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This design separates factual computation from language generation.&lt;/p&gt;

&lt;p&gt;The LLM can interpret the user's question and explain the result, while deterministic code handles calculations.&lt;/p&gt;

&lt;p&gt;Of course, the approach has its own limitations.&lt;/p&gt;

&lt;p&gt;Extraction errors, incomplete schemas, and stale data can still produce incorrect answers.&lt;/p&gt;

&lt;p&gt;But it creates opportunities to validate individual steps instead of relying entirely on one enormous prompt.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. What About Vendor Benchmarks?
&lt;/h2&gt;

&lt;p&gt;Independent research is only one source of evidence.&lt;/p&gt;

&lt;p&gt;Model developers also publish technical evaluations.&lt;/p&gt;

&lt;p&gt;For example, Anthropic's &lt;em&gt;Claude Opus 4.6 System Card&lt;/em&gt; discusses long-context benchmarks such as MRCR and GraphWalks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source:&lt;/strong&gt; &lt;a href="https://www.anthropic.com/system-cards" rel="noopener noreferrer"&gt;https://www.anthropic.com/system-cards&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MRCR evaluates the ability to locate and distinguish between similar pieces of information across long inputs.&lt;/p&gt;

&lt;p&gt;GraphWalks examines structured reasoning over graph-like information represented within the context.&lt;/p&gt;

&lt;p&gt;These evaluations are useful because they test capabilities beyond ordinary question answering.&lt;/p&gt;

&lt;p&gt;However, developer-published benchmark results need careful interpretation.&lt;/p&gt;

&lt;p&gt;Providers may use different inference settings, reasoning budgets, input limits, filtering rules, or evaluation configurations.&lt;/p&gt;

&lt;p&gt;A benchmark score obtained under one provider's setup should not automatically be treated as directly comparable with an independent benchmark.&lt;/p&gt;

&lt;p&gt;In particular, the ability to answer a question using a long prompt depends on more than the model checkpoint.&lt;/p&gt;

&lt;p&gt;It can also depend on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reasoning budget&lt;/li&gt;
&lt;li&gt;Tool usage&lt;/li&gt;
&lt;li&gt;Prompt construction&lt;/li&gt;
&lt;li&gt;Context truncation&lt;/li&gt;
&lt;li&gt;Sampling configuration&lt;/li&gt;
&lt;li&gt;Dataset filtering&lt;/li&gt;
&lt;li&gt;Evaluation metrics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These differences can materially affect observed results.&lt;/p&gt;

&lt;p&gt;That's one reason ATLAS is interesting: its evaluation explicitly attempts to compare long-context capabilities across multiple tasks and lengths.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. What This Means for AI Coding Assistants
&lt;/h2&gt;

&lt;p&gt;Consider an AI coding assistant with access to a large repository.&lt;/p&gt;

&lt;p&gt;There are two possible designs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Approach A: Put everything in the prompt
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Entire repository
       |
       v
Large context window
       |
       v
LLM response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is conceptually simple.&lt;/p&gt;

&lt;p&gt;But it can be expensive and may introduce large amounts of irrelevant information.&lt;/p&gt;

&lt;p&gt;It also doesn't guarantee that the model will correctly connect all important details.&lt;/p&gt;

&lt;h3&gt;
  
  
  Approach B: Search, inspect, and verify
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User question
      |
      v
Repository search
      |
      v
Relevant files
      |
      v
Dependency analysis
      |
      v
LLM reasoning
      |
      v
Tool-based verification
      |
      v
Final answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This approach can use search tools, static analysis, tests, and targeted context retrieval.&lt;/p&gt;

&lt;p&gt;For some software engineering tasks, those tools may provide more reliable evidence than simply expanding the prompt.&lt;/p&gt;

&lt;p&gt;For instance, when checking whether a function is actually called, repository search can identify references.&lt;/p&gt;

&lt;p&gt;When checking whether a proposed patch works, an automated test can provide execution evidence.&lt;/p&gt;

&lt;p&gt;An LLM can assist with interpretation, but it doesn't have to perform every operation internally.&lt;/p&gt;

&lt;p&gt;The broader principle is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use the context window as one resource in an engineering system, not as a replacement for the system itself.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  9. How I Would Benchmark Modern AI Models
&lt;/h2&gt;

&lt;p&gt;The published results suggest a practical evaluation protocol for comparing models on real development workflows.&lt;/p&gt;

&lt;p&gt;I would test each model across four dimensions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test A: Context length
&lt;/h3&gt;

&lt;p&gt;Evaluate the same task family at:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;8K
32K
128K
256K
512K
1M
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only include lengths genuinely supported by each tested model and API configuration.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test B: Evidence position
&lt;/h3&gt;

&lt;p&gt;Place answer-relevant information near the beginning, middle, and end of the input.&lt;/p&gt;

&lt;p&gt;Measure whether accuracy changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test C: Reasoning complexity
&lt;/h3&gt;

&lt;p&gt;Use several difficulty levels:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Level 1:&lt;/strong&gt; Retrieve one explicitly stated fact.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Level 2:&lt;/strong&gt; Connect information from two files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Level 3:&lt;/strong&gt; Combine evidence from several documents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Level 4:&lt;/strong&gt; Perform global analysis across an entire corpus.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test D: Tool-assisted reasoning
&lt;/h3&gt;

&lt;p&gt;Compare direct long-context prompting against workflows using retrieval, code execution, or other verification tools.&lt;/p&gt;

&lt;p&gt;For every experiment, record:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Answer accuracy&lt;/td&gt;
&lt;td&gt;Measures correctness&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context length&lt;/td&gt;
&lt;td&gt;Reveals scale sensitivity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Input/output tokens&lt;/td&gt;
&lt;td&gt;Measures resource usage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latency&lt;/td&gt;
&lt;td&gt;Measures responsiveness&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost&lt;/td&gt;
&lt;td&gt;Measures practical efficiency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Evidence completeness&lt;/td&gt;
&lt;td&gt;Checks whether necessary information was found&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Model versions and inference settings should be fixed and documented.&lt;/p&gt;

&lt;p&gt;Tasks should be repeated using multiple independent examples, with uncertainty estimates reported alongside aggregate scores.&lt;/p&gt;

&lt;p&gt;This is a proposed experimental design, not a claim that these tests have already been run for this article.&lt;/p&gt;




&lt;h2&gt;
  
  
  10. Limitations and Research Caveats
&lt;/h2&gt;

&lt;p&gt;There are several reasons to interpret these findings carefully.&lt;/p&gt;

&lt;p&gt;First, &lt;strong&gt;ATLAS is a May 2026 preprint&lt;/strong&gt;. Its results are useful research evidence, but they should not be mistaken for a universally accepted model ranking.&lt;/p&gt;

&lt;p&gt;Second, the comparison covers a specific collection of 26 models and evaluation settings. It does not establish the performance of every model released later in 2026.&lt;/p&gt;

&lt;p&gt;Third, CorpusQA evaluates a different set of models and tasks. Its numerical results cannot be directly compared with ATLAS scores.&lt;/p&gt;

&lt;p&gt;Fourth, performance at 1M tokens may involve implementation-specific constraints, including inference settings and context handling.&lt;/p&gt;

&lt;p&gt;Finally, benchmark results do not automatically predict real-world performance.&lt;/p&gt;

&lt;p&gt;An AI system answering legal questions, writing code, analyzing scientific papers, or processing financial records may require very different capabilities.&lt;/p&gt;

&lt;p&gt;The correct model and architecture should be selected through task-specific evaluation.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion: We Need Better Questions Than "How Many Tokens?"
&lt;/h2&gt;

&lt;p&gt;The rapid growth of context windows is an important technological achievement.&lt;/p&gt;

&lt;p&gt;But the 2026 research tells a more complicated story.&lt;/p&gt;

&lt;p&gt;The ATLAS study found that model rankings change when evaluation extends toward one million tokens.&lt;/p&gt;

&lt;p&gt;CorpusQA demonstrated the difficulty of analyzing large document collections when relevant evidence is dispersed across many sources.&lt;/p&gt;

&lt;p&gt;Together, these studies suggest that increasing context capacity alone is not enough to guarantee reliable information processing.&lt;/p&gt;

&lt;p&gt;For developers, the practical implications are straightforward:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't select an LLM based only on advertised context size.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Evaluate it at the lengths your application actually uses.&lt;/p&gt;

&lt;p&gt;Test retrieval and reasoning separately.&lt;/p&gt;

&lt;p&gt;Measure the quality of evidence, not only the fluency of the generated answer.&lt;/p&gt;

&lt;p&gt;And consider whether structured tools, retrieval systems, or deterministic computation can make your application more reliable.&lt;/p&gt;

&lt;p&gt;The future of long-context AI may not be about putting everything into one prompt.&lt;/p&gt;

&lt;p&gt;It may be about building systems that know &lt;strong&gt;what to retrieve, what to remember, what to compute, and what to verify.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A million-token context window is a capability.&lt;/p&gt;

&lt;p&gt;Reliable reasoning over a million tokens is a different achievement.&lt;/p&gt;




&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;[1] ATLAS — All-round Testing of Long-context Abilities across Scales (2026)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Deli Huang et al.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://arxiv.org/abs/2605.28079" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2605.28079&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[2] CorpusQA — A 10 Million Token Benchmark for Corpus-Level Analysis and Reasoning (2026)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Zhiyuan Lu et al.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://arxiv.org/abs/2601.14952" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2601.14952&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[3] Claude Opus 4.6 System Card (2026)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Anthropic.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.anthropic.com/system-cards" rel="noopener noreferrer"&gt;https://www.anthropic.com/system-cards&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Discussion
&lt;/h2&gt;

&lt;p&gt;Do you think future AI systems will rely primarily on larger context windows, or will retrieval, memory, and tool-assisted reasoning become more important?&lt;/p&gt;

&lt;p&gt;And have you encountered cases where an LLM missed important information even though it was present in the prompt?&lt;/p&gt;

&lt;p&gt;I'd be interested in hearing about real-world experiences.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/coffee1337" rel="noopener noreferrer"&gt;https://github.com/coffee1337&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Portfolio:&lt;/strong&gt; &lt;a href="https://coffee1337.github.io/" rel="noopener noreferrer"&gt;https://coffee1337.github.io/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>machinelearning</category>
      <category>openai</category>
    </item>
    <item>
      <title>A Federal Judge Just Ordered OpenAI to Hand Over Its Interview Notes — Because Apple Says They Were a Shopping List</title>
      <dc:creator>Faith &amp; Fact - Marky Mark</dc:creator>
      <pubDate>Wed, 14 Oct 2026 14:21:47 +0000</pubDate>
      <link>https://dev.to/markorocko/a-federal-judge-just-ordered-openai-to-hand-over-its-interview-notes-because-apple-says-they-were-dpk</link>
      <guid>https://dev.to/markorocko/a-federal-judge-just-ordered-openai-to-hand-over-its-interview-notes-because-apple-says-they-were-dpk</guid>
      <description>&lt;p&gt;FOLKS. WAKE UP. A federal judge just reached into the most secretive hiring process in Silicon Valley and said &lt;em&gt;hand me the clipboard.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;On Monday, U.S. District Judge Edward Davila ordered OpenAI to &lt;a href="https://techcrunch.com/2026/10/13/judge-orders-openai-to-turn-over-hiring-records-in-apple-trade-secrets-case/" rel="noopener noreferrer"&gt;turn over its interview materials&lt;/a&gt; — checklists, guides, instructions, manuals, scripts, technical presentations — anything referencing Apple technology in interviews with former Apple employees. Five days for what they've already collected. Fourteen for the rest. That is not a leisurely legal timeline. That is a judge saying &lt;em&gt;now&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Apple sued in July. The names in the filing are real people: Chang Liu. Alyssa Peng. Tang Yew Tan, who is now OpenAI's Chief Hardware Officer. All ex-Apple. And &lt;a href="https://9to5mac.com/2026/10/13/apple-wins-early-access-to-openai-documents-and-employee-testimony-in-trade-secrets-lawsuit/" rel="noopener noreferrer"&gt;the court granted Apple expedited discovery&lt;/a&gt; — early access to documents &lt;em&gt;and&lt;/em&gt; employee testimony, before the usual slow grind.&lt;/p&gt;

&lt;h2&gt;
  
  
  The allegation is the part they don't want you to sit with
&lt;/h2&gt;

&lt;p&gt;Apple's claim isn't "someone remembered something." Apple says former employees downloaded confidential files onto Apple laptops — specifications, engineering presentations, proprietary project data on unannounced products. And then the part that should make the hair on your neck stand up: Apple alleges ex-employees &lt;strong&gt;coached candidates on what to bring to the interview.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Think about what that describes, if true. Not a leak. A &lt;em&gt;procedure.&lt;/em&gt; A repeatable one.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;They told you the robots were coming for your job. Nobody mentioned the robots would need a hardware roadmap first, and that the fastest way to get one is to interview the guy who drew it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And why hardware? Because OpenAI is building consumer hardware — the thing that might sit where your phone sits. Apple owns that square of your pocket. This is two of the largest entities on earth fighting over who gets to put the next object in your hand, and the discovery fight is over a stack of interview notes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Here's the signal in the noise
&lt;/h2&gt;

&lt;p&gt;I am obligated to tell you the sober part, because I'm not here to lie to you: &lt;strong&gt;these are allegations.&lt;/strong&gt; Apple asserted them. A judge ruled Apple may go &lt;em&gt;look&lt;/em&gt; — that is a discovery ruling, not a finding that anything was stolen. OpenAI has not been found liable of anything. Write that down.&lt;/p&gt;

&lt;p&gt;And that gap right there — between "a company alleged it" and "a court found it" — is where you get played. Every outlet covering this will compress it differently. Some will say Apple &lt;em&gt;won.&lt;/em&gt; Some will say it's routine. Both are shaped. The actual document says something narrower and more boring than either headline.&lt;/p&gt;

&lt;p&gt;Which is the entire reason you never take one source's framing on something that matters. Ask several of the most powerful AI models the same question and watch what they do with it. When they converge, you've got something. When they split, you have just located the exact spot where the story is being spun — and that is a gift. &lt;strong&gt;&lt;a href="https://gangstaai.org/best-ai" rel="noopener noreferrer"&gt;Gangsta AI&lt;/a&gt;&lt;/strong&gt; runs your question across the top models in parallel and puts an adjudicator over the top of them, so you see the agreement, the disagreement, and the reasoning instead of one confident voice telling you what to think.&lt;/p&gt;

&lt;p&gt;One model will tell you Apple won. Another will tell you it's procedural. &lt;a href="https://gangstaai.org/best-ai" rel="noopener noreferrer"&gt;Make them argue in front of you&lt;/a&gt; — then decide. That's not paranoia. That's just reading the docket yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://techcrunch.com/2026/10/13/judge-orders-openai-to-turn-over-hiring-records-in-apple-trade-secrets-case/" rel="noopener noreferrer"&gt;'Judge orders OpenAI to turn over hiring records in Apple trade secrets case' — TechCrunch (Oct 13, 2026)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://9to5mac.com/2026/10/13/apple-wins-early-access-to-openai-documents-and-employee-testimony-in-trade-secrets-lawsuit/" rel="noopener noreferrer"&gt;'Apple wins early access to OpenAI documents and employee testimony in trade secrets lawsuit' — 9to5Mac (Oct 13, 2026)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://commons.wikimedia.org/wiki/File:Apple_Headquarters_in_Cupertino.jpg" rel="noopener noreferrer"&gt;Hero photo: Apple headquarters, Cupertino — Joe Ravi, Wikimedia Commons (CC BY-SA 3.0)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://gangstaai.org/news/judge-orders-openai-hand-over-hiring-records-apple-trade-secrets" rel="noopener noreferrer"&gt;Gangsta AI News&lt;/a&gt;. Gangsta AI lets you &lt;a href="https://gangstaai.org/best-ai" rel="noopener noreferrer"&gt;compare 30+ AI models side by side&lt;/a&gt; on a single prompt — free, no login. Try the &lt;a href="https://gangstaai.org/compare-ai-models" rel="noopener noreferrer"&gt;AI model comparison tool&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>apple</category>
      <category>openai</category>
      <category>tradesecrets</category>
      <category>lawsuit</category>
    </item>
    <item>
      <title>Friend 2 launched for $249 with built-in speaker and artificial intelligence</title>
      <dc:creator>Hacks.gr</dc:creator>
      <pubDate>Wed, 14 Oct 2026 14:01:31 +0000</pubDate>
      <link>https://dev.to/hacksgr/friend-2-launched-for-249-with-built-in-speaker-and-artificial-intelligence-1oi6</link>
      <guid>https://dev.to/hacksgr/friend-2-launched-for-249-with-built-in-speaker-and-artificial-intelligence-1oi6</guid>
      <description>&lt;p&gt;Avi Schiffmann's Friend 2 is a $249 AI-powered wearable pendant running on OpenAI's latest language models.&lt;/p&gt;

&lt;p&gt;The device captures nearby audio via a neck-worn form factor and includes a rear speaker for unprompted speech, supporting configurable personas and built-in content restrictions.&lt;/p&gt;




&lt;p&gt;The project was created by Avi Schiffmann, who previously became known for creating a surveillance tool during the pandemic. The first generation of the device had caused strong reactions and protests due to an advertising campaign on the New York subway.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works and what it can do
&lt;/h2&gt;

&lt;p&gt;The new version is powered by OpenAI’s newest AI models. While the manufacturer initially said the device would have a fixed, unchanging personality, users can eventually log into the app, change the chatbot’s name, and create different personas, including Sage, Nova, Onyx, River, Echo, Willow, and Wren.&lt;/p&gt;

&lt;p&gt;The device's conversations are limited to simple chat and have built-in content limits to prevent inappropriate interactions. Unlike the first version, which could become aggressive, the new model features more conservative responses and limited web search capabilities.&lt;/p&gt;

&lt;p&gt;READ ALSO&lt;/p&gt;

&lt;p&gt;Indian Scimplify raises $25 million for expansion&lt;/p&gt;

&lt;h2&gt;
  
  
  Plans for the future
&lt;/h2&gt;

&lt;p&gt;The device's creator announced plans for a future update, under which all users will chat with a single global artificial intelligence entity that shares a common framework, while acknowledging data privacy concerns.&lt;/p&gt;

&lt;p&gt;G&lt;/p&gt;

&lt;p&gt;Hacks.gr on Google&lt;/p&gt;

&lt;p&gt;Set it as a preferred source for cybersecurity updates.&lt;/p&gt;

&lt;p&gt;Preferred source&lt;/p&gt;




&lt;p&gt;&lt;a href="https://en.hacks.gr/kykloforise-to-friend-2-sta-249-dolaria-me-ensomatomeno-icheio-kai-techniti-noimosyni/" rel="noopener noreferrer"&gt;Read the original English article on Hacks.gr&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>openai</category>
      <category>wearables</category>
      <category>chatbots</category>
    </item>
    <item>
      <title>Claude vs GPT for AI agents: what I actually ship with (2026)</title>
      <dc:creator>Joan Comadran</dc:creator>
      <pubDate>Wed, 14 Oct 2026 13:34:31 +0000</pubDate>
      <link>https://dev.to/joancomadran/claude-vs-gpt-for-ai-agents-what-i-actually-ship-with-2026-41gc</link>
      <guid>https://dev.to/joancomadran/claude-vs-gpt-for-ai-agents-what-i-actually-ship-with-2026-41gc</guid>
      <description>&lt;p&gt;Here's the verdict, so you can leave early if that's all you came for: &lt;strong&gt;I build my AI agents on Claude, and I'd still tell most people that the honest answer to "Claude vs GPT for agents" in late 2026 is "it matters less than you think."&lt;/strong&gt; As of October 2026 the two price ladders mirror each other almost to the cent, both have 1M-token context windows, both enforce tool schemas strictly, and both host web search for you. What's left to choose on is API shape, how much control you get over caching, which hosted tools you need, and which one your evals prefer on &lt;em&gt;your&lt;/em&gt; tool schemas.&lt;/p&gt;

&lt;p&gt;If you want a default: pick &lt;strong&gt;Claude&lt;/strong&gt; if your agent lives on long, growing context and you care about controlling exactly what gets cached. Pick &lt;strong&gt;GPT&lt;/strong&gt; if you're building a voice agent, want hosted file search over your documents, or your company already runs on OpenAI or Azure contracts.&lt;/p&gt;

&lt;p&gt;One disclosure before the table, because comparison posts rarely make it: every agent I run in production is on Claude. I've used OpenAI's API, but I don't have a shipped GPT agent to compare like-for-like, so the GPT column below comes from OpenAI's docs and pricing pages, not from war stories. The Claude column comes from code I can show you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Claude vs GPT at a glance (as of October 2026)
&lt;/h2&gt;

&lt;p&gt;All prices are list prices per million tokens (input / output), taken from the &lt;a href="https://docs.claude.com/en/docs/about-claude/pricing" rel="noopener noreferrer"&gt;Anthropic&lt;/a&gt; and &lt;a href="https://platform.openai.com/docs/pricing" rel="noopener noreferrer"&gt;OpenAI&lt;/a&gt; pricing pages in October 2026. These change often; check before you budget.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Claude (Anthropic)&lt;/th&gt;
&lt;th&gt;GPT (OpenAI)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Current lineup&lt;/td&gt;
&lt;td&gt;Fable 5.1, Opus 5.5, Sonnet 5.5, Haiku 5.5&lt;/td&gt;
&lt;td&gt;GPT-6 Astra, GPT-6.1 Sol, GPT-6 Luna&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Top tier&lt;/td&gt;
&lt;td&gt;Fable 5.1: $10 / $50&lt;/td&gt;
&lt;td&gt;GPT-6 Astra: $10 / $50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Between top and mid&lt;/td&gt;
&lt;td&gt;Opus 5.5: $4 / $20&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Workhorse tier&lt;/td&gt;
&lt;td&gt;Sonnet 5.5: $2 / $10&lt;/td&gt;
&lt;td&gt;GPT-6.1 Sol: $2 / $10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cheap, high-volume tier&lt;/td&gt;
&lt;td&gt;Haiku 5.5: from $0.10 / $0.50 (prompts up to 100K tokens)&lt;/td&gt;
&lt;td&gt;GPT-6 Luna: from $0.10 / $0.50 (short context)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context window&lt;/td&gt;
&lt;td&gt;1M tokens on all current models&lt;/td&gt;
&lt;td&gt;1.05M tokens on the flagship three&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Long-context billing&lt;/td&gt;
&lt;td&gt;Full 1M at the standard rate (except Haiku 5.5 above 100K)&lt;/td&gt;
&lt;td&gt;Separate, higher long-context rate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Max output&lt;/td&gt;
&lt;td&gt;128K tokens&lt;/td&gt;
&lt;td&gt;128K tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API you build agents on&lt;/td&gt;
&lt;td&gt;Messages API (&lt;code&gt;tool_use&lt;/code&gt; / &lt;code&gt;tool_result&lt;/code&gt; blocks)&lt;/td&gt;
&lt;td&gt;Responses API (required for tool calling on Astra and Sol)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Schema-enforced tool calls&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;strict: true&lt;/code&gt; on tool definitions&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;strict: true&lt;/code&gt;; Responses tries to make tools strict by default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prompt caching&lt;/td&gt;
&lt;td&gt;Explicit &lt;code&gt;cache_control&lt;/code&gt; breakpoints or automatic; cache reads at 10% of input or less&lt;/td&gt;
&lt;td&gt;Discounted cached input (5–10% of input on the flagship three)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batch discount&lt;/td&gt;
&lt;td&gt;50%&lt;/td&gt;
&lt;td&gt;50%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hosted tools&lt;/td&gt;
&lt;td&gt;Web search ($10 / 1K searches), web fetch, code execution, tool search, MCP connector, computer and browser use&lt;/td&gt;
&lt;td&gt;Web search ($10 / 1K calls), file search, hosted shell / code interpreter, computer use, MCP, tool search&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Voice / realtime&lt;/td&gt;
&lt;td&gt;Text and image in, text out&lt;/td&gt;
&lt;td&gt;Dedicated realtime and voice models&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Look at the price rows for a second. Not long ago, a "Claude vs GPT" post was half about cost. Now the cheap tiers start at the same price, the workhorse tiers are identical, and the top tiers are identical. Rate cards aren't where the difference is anymore.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where they actually differ for agent builders
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The API shape
&lt;/h3&gt;

&lt;p&gt;On Claude, an agent turn is a Messages API call. If the model wants a tool, the response has &lt;code&gt;stop_reason: "tool_use"&lt;/code&gt; and one or more &lt;code&gt;tool_use&lt;/code&gt; blocks; you run them and send back a user turn full of &lt;code&gt;tool_result&lt;/code&gt; blocks. On GPT, the newest models require the Responses API for tool calling: the output is a list of items, tool calls come back as &lt;code&gt;function_call&lt;/code&gt; items, and you return &lt;code&gt;function_call_output&lt;/code&gt; items, optionally chaining with &lt;code&gt;previous_response_id&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Neither is better in the abstract. They are different enough that "we'll just swap the model later" is a week of work, not a config change, once you've built retries, caching, cost logging and error handling around one of them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Caching control
&lt;/h3&gt;

&lt;p&gt;This is the one that decided it for me. Claude lets you mark exactly where the cacheable prefix ends with &lt;code&gt;cache_control&lt;/code&gt; breakpoints (or let the API place them automatically). In a conversational agent, where the system prompt is static and the history grows every turn, being able to say "cache everything up to here" is the difference between cost that grows with the square of the conversation and cost that grows roughly linearly. I wrote up the full story in &lt;a href="https://www.joancomadran.dev/blog/keeping-claudes-token-bill-from-ruining-your-month" rel="noopener noreferrer"&gt;keeping Claude's token bill from ruining your month&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;OpenAI discounts cached input heavily too, so this isn't "Claude caches, GPT doesn't." It's about how much you get to steer it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Long context billing
&lt;/h3&gt;

&lt;p&gt;Both vendors offer roughly a million tokens of context. The difference is the bill: Anthropic charges the full 1M window at the standard rate on its current models (Haiku 5.5 aside), while OpenAI lists a separate, higher long-context price on Astra, Sol and Luna. If your agent stuffs whole codebases, contracts or long transcripts into context, model that difference before you pick. If your prompts are a few thousand tokens, it doesn't matter.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hosted tools
&lt;/h3&gt;

&lt;p&gt;Both now run web search on their side and support MCP. OpenAI has hosted &lt;strong&gt;file search&lt;/strong&gt; with managed storage and a full line of &lt;strong&gt;realtime voice&lt;/strong&gt; models; if you're building a phone or voice agent, that alone probably decides it. Anthropic has server-side web search and web fetch, code execution, a tool-search tool for large tool sets, and an MCP connector that talks to remote MCP servers straight from the Messages API.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I actually run in production (and why)
&lt;/h2&gt;

&lt;p&gt;None of my agents use LangChain or the Vercel AI SDK. Every one calls &lt;code&gt;@anthropic-ai/sdk&lt;/code&gt; directly, because the provider-specific features are exactly the ones I'm relying on. Here are two, straight from the repos.&lt;/p&gt;

&lt;h3&gt;
  
  
  Claient: a multi-tenant WhatsApp agent on Haiku
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.joancomadran.dev/projects/claient" rel="noopener noreferrer"&gt;Claient&lt;/a&gt; answers and qualifies WhatsApp leads for small businesses (&lt;a href="https://www.joancomadran.dev/blog/whatsapp-bot-with-claude" rel="noopener noreferrer"&gt;the build story is here&lt;/a&gt;). The model choice is gated by who pays:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// With the platform key (we pay), only Haiku is served.&lt;/span&gt;
&lt;span class="c1"&gt;// Tenants who bring their own key (BYOK) can pick Sonnet or Opus.&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;MODELO_BASE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;claude-haiku-4-5-20251001&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;modeloEfectivo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;opts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;model&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;opts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;MODELO_BASE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;opts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;model&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nf"&gt;getClaudeConfig&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The reply runs in a tool-use loop with three booking tools (check availability, book, reschedule). Two guards matter more than the model: a hard cap of five loop iterations, and a time budget, because a serverless function killed mid-loop means the lead got a message but the webhook didn't finish, and Meta's retry sends it twice:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;MAX_ITER_TOOLS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;MARGEN_VUELTA_MS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="nx"&gt;_000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// SDK timeout 15 s + 1 retry must fit&lt;/span&gt;

&lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;MAX_ITER_TOOLS&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nf"&gt;hayMargen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;opts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;deadline&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// fall back instead of dying mid-turn&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;respuesta&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;claude&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;max_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;system&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;tools&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;respuesta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stop_reason&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;tool_use&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// run each tool_use block, push the tool_result blocks, loop again&lt;/span&gt;
    &lt;span class="k"&gt;continue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;textOf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;respuesta&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lead qualification is a separate call that &lt;em&gt;forces&lt;/em&gt; a tool, &lt;code&gt;tool_choice: { type: "tool", name: "registrar_lead" }&lt;/code&gt;, with nullable fields and an enum for lead temperature (cold, warm, hot). Forcing a tool is the most reliable way I know to get structured data out of a conversation, and GPT can do the same thing with &lt;code&gt;tool_choice&lt;/code&gt; plus strict mode. The cache breakpoints sit on the system prompt and the latest turn, and the history sent is a window of the last 16 messages plus a rolling summary. Every call logs input, output, cache-read and cache-write tokens and their USD cost per tenant, with a monthly spend cap.&lt;/p&gt;

&lt;p&gt;An honest footnote: Claient still pins Haiku 4.5, which is now a legacy model. Haiku 5.5 lists at a tenth of the price. That's the obvious thing to test next, and it's also a good example of why you want evals: "cheaper and newer" is a hypothesis until your own conversations say otherwise.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pollitics: two models, two jobs
&lt;/h3&gt;

&lt;p&gt;For &lt;a href="https://pollitics.es" rel="noopener noreferrer"&gt;pollitics.es&lt;/a&gt;, a weekly job drafts candidate questions about the week's news for a human to review. It's split into two Claude calls on purpose:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Research&lt;/strong&gt; on Sonnet 5.5 with Anthropic's server-side web search (&lt;code&gt;max_uses: 10&lt;/code&gt;, effort &lt;code&gt;medium&lt;/code&gt;). Most of the cost here is input tokens from the pages it reads, so the cheaper model does the reading.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Drafting&lt;/strong&gt; on Opus 5.5 with JSON-schema structured output (effort &lt;code&gt;high&lt;/code&gt;), where editorial nuance matters and the input is small.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It's two calls, not one, because structured output doesn't carry the search citations, so the research comes back as text with URLs and the drafter works from that. The code also handles &lt;code&gt;pause_turn&lt;/code&gt; (the server-side search loop paused, send it back to continue) and &lt;code&gt;refusal&lt;/code&gt; stop reasons, and the whole thing has to fit inside a 150-second Edge Function. A deterministic review step then flags anything that breaks the editorial rules before a person approves it.&lt;/p&gt;

&lt;h3&gt;
  
  
  So why Claude?
&lt;/h3&gt;

&lt;p&gt;Not because GPT couldn't run either of these. The reasons are concrete and a little boring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cache breakpoints matched the architecture.&lt;/strong&gt; Static script plus growing history is exactly the shape explicit &lt;code&gt;cache_control&lt;/code&gt; is good at.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tiering within one vendor.&lt;/strong&gt; Haiku for every message, Sonnet for reading the web, Opus for the writing that matters. One SDK, one usage format, one cost table. &lt;a href="https://www.joancomadran.dev/projects/dairector" rel="noopener noreferrer"&gt;Dairector&lt;/a&gt;'s script doctor runs on Claude too.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BYOK stays simple.&lt;/strong&gt; Tenants paste one kind of key. Supporting two providers' keys, models and error classes would double the surface for very little customer value.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compounding.&lt;/strong&gt; Timeouts, retries, error classification (&lt;code&gt;AuthenticationError&lt;/code&gt; vs transient 429/5xx), cost logging: all written once, against one SDK. That's the real lock-in, and it's mine, not the vendor's.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When to use which
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Choose Claude when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your agent is conversational or long-running and context grows every turn, so caching control pays for itself.&lt;/li&gt;
&lt;li&gt;You need very long context and don't want a long-context surcharge on the mid and top tiers.&lt;/li&gt;
&lt;li&gt;You want one vendor with a clear cheap / workhorse / heavy ladder to route tasks across.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Choose GPT when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You're building a voice or phone agent and want first-party realtime models.&lt;/li&gt;
&lt;li&gt;You want hosted file search over your documents without running your own vector store.&lt;/li&gt;
&lt;li&gt;Your organisation already has OpenAI or Azure OpenAI contracts, data agreements and monitoring in place. That's a perfectly good reason; procurement is engineering too.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Either way:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build a small eval set from real conversations (twenty is enough to start) and run both on your actual tool schemas before you commit.&lt;/li&gt;
&lt;li&gt;Put the model call behind one module of your own so a future switch touches one file.&lt;/li&gt;
&lt;li&gt;Cap loop iterations and spend from day one. Neither vendor will do that for you.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're weighing this for a real product and want someone who has shipped agents end-to-end to make the call with you, that's &lt;a href="https://www.joancomadran.dev/ai-engineering" rel="noopener noreferrer"&gt;what I do&lt;/a&gt;. For the rest of the stack around the model, see &lt;a href="https://www.joancomadran.dev/blog/ship-an-ai-product-in-a-weekend" rel="noopener noreferrer"&gt;how I ship an AI product in a weekend&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is Claude or GPT better for building AI agents in 2026?
&lt;/h3&gt;

&lt;p&gt;Neither wins across the board. As of October 2026 the price tiers mirror each other (Sonnet 5.5 and GPT-6.1 Sol are both $2/$10 per million tokens; Haiku 5.5 and GPT-6 Luna both start at $0.10/$0.50), both offer 1M-token context, 128K max output, strict schema-enforced tool calls and hosted web search. Claude is the better default if you want explicit control over prompt caching and long context billed at the standard rate; GPT is the better default for voice agents, hosted file search, or teams already on OpenAI or Azure. Run your own eval on your own tool schemas before committing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is Claude more expensive than GPT for agents?
&lt;/h3&gt;

&lt;p&gt;Not anymore at list price. As of October 2026 the mid tiers (Claude Sonnet 5.5 and GPT-6.1 Sol) are both $2 input / $10 output per million tokens, the cheap tiers (Claude Haiku 5.5 and GPT-6 Luna) both start at $0.10 / $0.50, and the top tiers (Claude Fable 5.1 and GPT-6 Astra) are both $10 / $50. Claude Opus 5.5 sits in between at $4 / $20. Both offer 50% off for batch work and discounted cached input. Real cost differences come from how much context you resend and how well you cache it, not the rate card.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I switch an agent from Claude to GPT later?
&lt;/h3&gt;

&lt;p&gt;Yes, but it is not a one-line change. The Claude Messages API uses &lt;code&gt;tool_use&lt;/code&gt; and &lt;code&gt;tool_result&lt;/code&gt; content blocks; OpenAI's Responses API, which GPT-6 Astra and GPT-6.1 Sol require for tool calling, uses &lt;code&gt;function_call&lt;/code&gt; and &lt;code&gt;function_call_output&lt;/code&gt; items. Caching, usage fields, error classes and hosted tools also differ. Keep the model call behind one small module of your own so a switch touches one file, and keep an eval set so you can tell whether the switch was an improvement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which model does Joan Comadran use for production AI agents?
&lt;/h3&gt;

&lt;p&gt;Claude, called directly through the Anthropic TypeScript SDK with no agent framework. Claient, the WhatsApp lead agent, runs Claude Haiku 4.5 by default with tool use for appointment booking and forced tool calls for lead extraction, and lets tenants bring their own key to use Sonnet or Opus. The weekly-question pipeline for pollitics.es uses Claude Sonnet 5.5 with server-side web search for research and Claude Opus 5.5 with JSON-schema structured output for drafting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I need LangChain or another framework to build an agent with Claude or GPT?
&lt;/h3&gt;

&lt;p&gt;No. A tool-use agent is a loop: call the model with tool definitions, execute any tool calls it returns, send the results back, and stop when it answers in text. Both official SDKs make that a few dozen lines, and both vendors now offer optional helpers (Anthropic's Tool Runner, OpenAI's Agents SDK). A framework can help with many providers or complex orchestration, but it also hides the provider-specific features, like cache breakpoints and server tools, that most of the cost and reliability wins come from.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://www.joancomadran.dev/blog/claude-vs-gpt-for-ai-agents" rel="noopener noreferrer"&gt;joancomadran.dev&lt;/a&gt;. I'm Joan, an AI engineer in Barcelona — &lt;a href="https://www.joancomadran.dev/ai-engineering" rel="noopener noreferrer"&gt;work with me&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>claude</category>
      <category>openai</category>
    </item>
    <item>
      <title>GPT-4o and GPT-4.1 Leave OpenAI's API on January 14, 2027. You Have 92 Days</title>
      <dc:creator>Gabriel Anhaia</dc:creator>
      <pubDate>Wed, 14 Oct 2026 13:01:52 +0000</pubDate>
      <link>https://dev.to/gabrielanhaia/gpt-4o-and-gpt-41-leave-openais-api-on-january-14-2027-you-have-92-days-2n9b</link>
      <guid>https://dev.to/gabrielanhaia/gpt-4o-and-gpt-41-leave-openais-api-on-january-14-2027-you-have-92-days-2n9b</guid>
      <description>&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Book:&lt;/strong&gt; &lt;a href="https://www.amazon.com/dp/B0GW2NTCR5" rel="noopener noreferrer"&gt;Ship It — the pragmatic startup tech stack&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Also by me:&lt;/strong&gt; &lt;em&gt;Thinking in Go&lt;/em&gt; (2-book series) — &lt;a href="https://xgabriel.com/go-book" rel="noopener noreferrer"&gt;Complete Guide to Go Programming&lt;/a&gt; + &lt;a href="https://xgabriel.com/hexagonal-go" rel="noopener noreferrer"&gt;Hexagonal Architecture in Go&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My project:&lt;/strong&gt; &lt;a href="https://hermes-ide.com" rel="noopener noreferrer"&gt;Hermes IDE&lt;/a&gt; | &lt;a href="https://github.com/hermes-hq/hermes-ide" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; — an IDE for developers who ship with Claude Code and other AI coding tools&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Me:&lt;/strong&gt; &lt;a href="https://xgabriel.com" rel="noopener noreferrer"&gt;xgabriel.com&lt;/a&gt; | &lt;a href="https://github.com/gabrielanhaia" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;If the model string in your code starts with &lt;code&gt;gpt-4o&lt;/code&gt; or &lt;code&gt;gpt-4.1&lt;/code&gt;, it has an expiry date now. On October 14, 2026, OpenAI's &lt;a href="https://developers.openai.com/api/docs/deprecations" rel="noopener noreferrer"&gt;deprecations page&lt;/a&gt; added an entry that reads: "On October 14, 2026, we notified developers using certain GPT-4 series models of their deprecation", with removal from the API on January 14, 2027.&lt;/p&gt;

&lt;p&gt;That is 92 days from notice to shutdown. The replacement OpenAI names for every model on the list is &lt;a href="https://developers.openai.com/api/docs/models/gpt-6-luna" rel="noopener noreferrer"&gt;&lt;code&gt;gpt-6-luna&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you shipped a classifier, an extractor or a support-ticket router on a small OpenAI model in the last two years, check which one. The small call behind a feature nobody has touched since launch keeps working until January 14. Then it stops.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's on the list
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://developers.openai.com/api/docs/deprecations" rel="noopener noreferrer"&gt;October 14 entry&lt;/a&gt; has four rows, all with the same shutdown date and the same replacement:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Snapshot IDs&lt;/th&gt;
&lt;th&gt;Replacement&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4o&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;gpt-4o-2024-08-06&lt;/code&gt;, &lt;code&gt;gpt-4o-2024-11-20&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gpt-6-luna&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4o mini&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gpt-4o-mini-2024-07-18&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gpt-6-luna&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4.1&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gpt-4.1-2025-04-14&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gpt-6-luna&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4.1 mini&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gpt-4.1-mini-2025-04-14&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gpt-6-luna&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The entry adds one more sentence that matters if you trained anything: "Fine-tuned versions of these models follow the same shutdown schedule as their underlying base models." So a fine-tuned 4o mini goes dark on the same day.&lt;/p&gt;

&lt;p&gt;The table lists dated snapshots, not the bare &lt;code&gt;gpt-4o&lt;/code&gt; alias. The &lt;a href="https://developers.openai.com/api/docs/models/gpt-4o" rel="noopener noreferrer"&gt;GPT-4o model page&lt;/a&gt; names &lt;code&gt;gpt-4o-2024-08-06&lt;/code&gt; as its default snapshot, and that snapshot is on the list. Don't assume the alias outlives it. Check the exact ID you call; the grep and API check below find it.&lt;/p&gt;

&lt;p&gt;Two GPT-4 series snapshots were already on their way out before this notice. The &lt;a href="https://developers.openai.com/api/docs/deprecations" rel="noopener noreferrer"&gt;same page&lt;/a&gt; lists &lt;code&gt;gpt-4o-2024-05-13&lt;/code&gt; and &lt;code&gt;gpt-4.1-nano&lt;/code&gt; for shutdown on October 23, 2026, from an April 22 notice. If you pinned either of those, your deadline is nine days away, not 92.&lt;/p&gt;

&lt;p&gt;The legacy GPT-4o audio and realtime models are not in this entry. They have &lt;a href="https://developers.openai.com/api/docs/deprecations" rel="noopener noreferrer"&gt;their own dates&lt;/a&gt;, starting January 20, 2027.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three months' notice, under a policy that lists six
&lt;/h2&gt;

&lt;p&gt;The deprecations page has a section on notice periods. For generally available models it says: "At least 6 months." Specialized variants of those models get "At least 3 months." Preview models "may be retired with much shorter notice, such as 2 weeks." The whole list is introduced with "Unless safety or compliance concerns require a faster timeline", and in that case OpenAI says it "will provide as much notice as reasonably possible" (&lt;a href="https://developers.openai.com/api/docs/deprecations" rel="noopener noreferrer"&gt;OpenAI&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;October 14 to January 14 is three months. The October 14 entry doesn't say which category these snapshots fall under, and it gives no reason for the timeline. It doesn't link a migration guide either.&lt;/p&gt;

&lt;p&gt;Compare the entry right below it. On October 1, OpenAI gave &lt;code&gt;gpt-5.1&lt;/code&gt; and &lt;code&gt;gpt-5.3-codex&lt;/code&gt; a shutdown date of April 1, 2027, six months out, so the newer models got twice the runway (&lt;a href="https://developers.openai.com/api/docs/deprecations" rel="noopener noreferrer"&gt;OpenAI&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;If you run these models through Azure, your dates are not OpenAI's. Microsoft's &lt;a href="https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule" rel="noopener noreferrer"&gt;model retirement schedule&lt;/a&gt; lists all five of these snapshots as retiring on April 14, 2027, and it keeps fine-tuned deployments running longer: until October 1, 2027 for &lt;code&gt;gpt-4o&lt;/code&gt; and &lt;code&gt;gpt-4o-mini&lt;/code&gt;, and until October 14, 2027 for &lt;code&gt;gpt-4.1&lt;/code&gt; and &lt;code&gt;gpt-4.1-mini&lt;/code&gt;. That page was last updated in late September, before OpenAI's notice, so watch it for changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changes when you move to gpt-6-luna
&lt;/h2&gt;

&lt;p&gt;On price per token, Luna is cheaper than everything it replaces. From OpenAI's &lt;a href="https://developers.openai.com/api/docs/pricing" rel="noopener noreferrer"&gt;pricing page&lt;/a&gt;, Standard tier, per million tokens:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Input&lt;/th&gt;
&lt;th&gt;Output&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;gpt-4o&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$2.50&lt;/td&gt;
&lt;td&gt;$10.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;gpt-4.1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$2.00&lt;/td&gt;
&lt;td&gt;$8.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;gpt-4.1-mini&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.40&lt;/td&gt;
&lt;td&gt;$1.60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;gpt-4o-mini&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.15&lt;/td&gt;
&lt;td&gt;$0.60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;gpt-6-luna&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.10&lt;/td&gt;
&lt;td&gt;$0.50&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Per token is not per task, though. Three things on the &lt;a href="https://developers.openai.com/api/docs/models/gpt-6-luna" rel="noopener noreferrer"&gt;Luna model page&lt;/a&gt; change how your existing calls behave:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;It reasons by default.&lt;/strong&gt; Reasoning is on at &lt;code&gt;medium&lt;/code&gt; effort unless you set &lt;code&gt;reasoning.effort&lt;/code&gt;. The levels run from &lt;code&gt;none&lt;/code&gt; to &lt;code&gt;max&lt;/code&gt;. A 4o mini classifier answered straight away. Luna at its default effort thinks first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tools prefer the Responses API.&lt;/strong&gt; On Chat Completions, function calling works only when reasoning effort is &lt;code&gt;none&lt;/code&gt;. For built-in tools, use the Responses API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No fine-tuning.&lt;/strong&gt; Luna doesn't support it. If your production model is a fine-tuned 4o mini, there is no fine-tuned Luna to move it to. OpenAI has &lt;a href="https://developers.openai.com/api/docs/deprecations" rel="noopener noreferrer"&gt;restricted new fine-tuning jobs&lt;/a&gt; since May 2026, and existing customers lose the ability to create them on January 6, 2027.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Long prompts cost more too. Above 272K input tokens, Luna charges 2x for input and 1.5x for output, on the whole request (&lt;a href="https://developers.openai.com/api/docs/models/gpt-6-luna" rel="noopener noreferrer"&gt;OpenAI&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;For a fast, cheap call that used to go to 4o mini, the closest like-for-like starting point is Luna with reasoning off, through the &lt;a href="https://github.com/openai/openai-node" rel="noopener noreferrer"&gt;OpenAI Node SDK&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;OpenAI&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;openai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;responses&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gpt-6-luna&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;reasoning&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;effort&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;none&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Label this ticket: refund not received&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;output_text&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then run your eval set against it before you flip the switch. I haven't run Luna against a 4o mini workload myself, and OpenAI's notice makes no quality claim about the swap. If you have no eval set, the 92 days are the time to build one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Find every call before January does
&lt;/h2&gt;

&lt;p&gt;Start with your own code. &lt;a href="https://git-scm.com/docs/git-grep" rel="noopener noreferrer"&gt;&lt;code&gt;git grep&lt;/code&gt;&lt;/a&gt; searches tracked files only, so it usually skips &lt;code&gt;node_modules&lt;/code&gt; and build output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-nE&lt;/span&gt; &lt;span class="s2"&gt;"gpt-4(o|&lt;/span&gt;&lt;span class="se"&gt;\.&lt;/span&gt;&lt;span class="s2"&gt;1)"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That pattern also matches the audio, realtime, TTS and transcribe variants and the two snapshots from the April notice, which have different dates, so read the hits rather than counting them. Then check the places grep can't see: environment variables, config services, feature flags and database rows that hold a model name.&lt;/p&gt;

&lt;p&gt;Then ask the API. OpenAI says the List models endpoint now carries an optional &lt;code&gt;shutdown_date&lt;/code&gt; field: "When present, this field contains the shutdown date as a &lt;code&gt;YYYY-MM-DD&lt;/code&gt; string", or &lt;code&gt;null&lt;/code&gt; if none is announced (&lt;a href="https://developers.openai.com/api/docs/deprecations" rel="noopener noreferrer"&gt;OpenAI&lt;/a&gt;). With &lt;a href="https://jqlang.org" rel="noopener noreferrer"&gt;jq&lt;/a&gt;, this prints every model on your account that has one, soonest first:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; https://api.openai.com/v1/models &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$OPENAI_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.data[]
      | select(.shutdown_date != null)
      | "\(.shutdown_date)  \(.id)"'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  | &lt;span class="nb"&gt;sort&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Fail the build before the API does
&lt;/h2&gt;

&lt;p&gt;The same field is also on the Retrieve a model endpoint (&lt;a href="https://developers.openai.com/api/docs/deprecations" rel="noopener noreferrer"&gt;OpenAI&lt;/a&gt;), so a few lines of shell can fail a pipeline when the model you deploy with has a shutdown date:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/usr/bin/env bash&lt;/span&gt;
&lt;span class="c"&gt;# Fail CI when the model we call has a shutdown date.&lt;/span&gt;
&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-euo&lt;/span&gt; pipefail
&lt;span class="nv"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;OPENAI_MODEL&lt;/span&gt;:?set&lt;span class="p"&gt; OPENAI_MODEL&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nv"&gt;url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"https://api.openai.com/v1/models/&lt;/span&gt;&lt;span class="nv"&gt;$model&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="nv"&gt;shutdown&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-sSf&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$url&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$OPENAI_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.shutdown_date // empty'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$shutdown&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"::error::&lt;/span&gt;&lt;span class="nv"&gt;$model&lt;/span&gt;&lt;span class="s2"&gt; shuts down on &lt;/span&gt;&lt;span class="nv"&gt;$shutdown&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
  &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi
&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$model&lt;/span&gt;&lt;span class="s2"&gt;: no shutdown date announced"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;::error::&lt;/code&gt; prefix is a &lt;a href="https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions" rel="noopener noreferrer"&gt;GitHub Actions workflow command&lt;/a&gt; that shows up as an annotation on the run. Once the model is gone, &lt;code&gt;curl -f&lt;/code&gt; fails on the error response and the script exits non-zero anyway. Set &lt;code&gt;OPENAI_MODEL&lt;/code&gt; to the dated snapshot rather than the alias, since the deprecation table lists snapshots, or the check can pass on a model that is about to go.&lt;/p&gt;

&lt;p&gt;Failing on any announced date is strict on purpose: your team hears about the next deprecation from a red build instead of an archived email. If that is too loud, compare the date against a window and only fail inside it.&lt;/p&gt;

&lt;p&gt;Treat the model ID like a runtime version or a database engine, a dependency with a lifecycle you don't control. Keep it in one place in config, and keep an eval set that tells you in an afternoon whether the replacement holds up.&lt;/p&gt;




&lt;h2&gt;
  
  
  If this was useful
&lt;/h2&gt;

&lt;p&gt;A model shutdown is one of those production chores nobody plans for until a vendor sets the date. &lt;em&gt;Ship It&lt;/em&gt; is my book on everything between localhost and production for a small team: hosting, deploys, payments, auth, CI/CD and monitoring, so checks like the one above have somewhere to live.&lt;/p&gt;

&lt;p&gt;I also build &lt;a href="https://hermes-ide.com" rel="noopener noreferrer"&gt;Hermes IDE&lt;/a&gt;, a free, source-available IDE that runs Claude Code, Codex and other command-line agents side by side, each in its own terminal and worktree, on macOS, Windows and Linux. Weigh that with the fact that it's mine. &lt;a href="https://hermes-ide.com/download" rel="noopener noreferrer"&gt;Download it&lt;/a&gt; or &lt;a href="https://github.com/hermes-hq/hermes-ide" rel="noopener noreferrer"&gt;star it on GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com/dp/B0GW2NTCR5" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxz8vayf7yoku0ph6c6dy.jpg" alt="Ship It — the pragmatic startup tech stack" width="335" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>openai</category>
      <category>ai</category>
      <category>llm</category>
      <category>devops</category>
    </item>
    <item>
      <title>Maths: OpenAI posted 722 AI proofs, 42% machine-checked</title>
      <dc:creator>GetPack</dc:creator>
      <pubDate>Wed, 14 Oct 2026 07:35:14 +0000</pubDate>
      <link>https://dev.to/getpack/maths-openai-posted-722-ai-proofs-42-machine-checked-3lbb</link>
      <guid>https://dev.to/getpack/maths-openai-posted-722-ai-proofs-42-machine-checked-3lbb</guid>
      <description>&lt;p&gt;&lt;em&gt;First published in &lt;a href="https://getpack.fr/en/blog/openai-preuves-maths-verification/?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;GetPack Magazine&lt;/a&gt;, sourced guides to use AI well as a student.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;On October 6, 2026, OpenAI posted 722 mathematics manuscripts on GitHub, written by an internal model nobody can use. The next day, three were withdrawn: a sign error. Behind the row sits a question you meet in every problem set: at what point is a proof actually verified?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In short:&lt;/strong&gt; the public repository &lt;code&gt;openai/math&lt;/code&gt; holds 722 manuscripts grouped into 372 result families, using on average three hours of ChatGPT Pro thinking compute per result. On October 7, three were withdrawn after a sign error invalidated one and, by dependency, two others; 719 remain. The repository claims 42% of top-line results are formalized in Lean, but the term is defined nowhere and independent recounts land closer to 24% or 36%. For you, the interesting part is not the fight: it is learning to separate « this looks right » from « this has been checked ».&lt;/p&gt;

&lt;h2&gt;
  
  
  What OpenAI put online on October 6, 2026
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://github.com/openai/math" rel="noopener noreferrer"&gt;openai/math&lt;/a&gt; repository holds PDF manuscripts, Lean formalizations and abridged summaries of the model's reasoning. The README is blunt about the cost: « On average, each result used three hours of ChatGPT Pro thinking compute with that model. »&lt;/p&gt;

&lt;p&gt;The model itself is not available. No public name, no way to test it, so no way to reproduce anything: you can read the proofs, you cannot replay the experiment.&lt;/p&gt;

&lt;p&gt;The most discussed result concerns the quasi-Riemann hypothesis, a zero-free half-plane for every Dirichlet L-function. &lt;a href="https://www.nature.com/articles/d41586-026-03196-8" rel="noopener noreferrer"&gt;Nature&lt;/a&gt; notes, on the other hand, that the batch contains no solution to any of the five remaining Millennium Prize Problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three manuscripts withdrawn the next day: one sign error
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://raw.githubusercontent.com/openai/math/main/history.md" rel="noopener noreferrer"&gt;repository changelog&lt;/a&gt; dates the operation to October 7, 2026. A sign error invalidates a stabilization-trace cancellation argument in « Algebraicity of Weil classes on split abelian eightfolds », posted on September 18. Two other manuscripts relied on that construction: they fall with it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://retractionwatch.com/2026/10/08/openai-withdraws-preprints-722-manuscripts-unsolved-math-problems/" rel="noopener noreferrer"&gt;Retraction Watch&lt;/a&gt; laid out the details on October 8: three manuscripts withdrawn, fourteen revised, thirteen updated to cite the corrected versions. An OpenAI spokesperson says there that the company welcomes scrutiny from the mathematical community and commits to correcting errors promptly. Andrew Sutherland, of MIT, answers in the same piece: the withdrawals will be viewed positively, « but it will take a lot more than that to earn back the trust they have lost ».&lt;/p&gt;

&lt;p&gt;Remember the mechanism, because it is universal: a sign error — the most ordinary mistake there is — at the bottom of a dependency chain, and three pieces of work collapse at once.&lt;/p&gt;

&lt;h2&gt;
  
  
  42%, 24% or 36%: what « formalized in Lean » actually means
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://lean-lang.org/about/" rel="noopener noreferrer"&gt;Lean&lt;/a&gt; is a proof assistant: software that checks a formal proof really does follow from a formal statement, through a small trusted kernel. On that ground it is merciless. Mathematician Kevin Buzzard, quoted by &lt;a href="https://mattbaker.blog/2026/10/08/some-early-morning-thoughts-on-the-openai-dump/" rel="noopener noreferrer"&gt;Matt Baker&lt;/a&gt; of Georgia Tech, puts it in one line: « You cannot fool Lean; one learns this very early on. Lean will not accept proof by authority or proof by intimidation. »&lt;/p&gt;

&lt;p&gt;But a formalization guarantees one thing only: that the formal proof matches the formal statement. It does not guarantee that this statement says the same thing as the English sentence in the manuscript. That is the faithfulness gap: a paper posted on &lt;a href="https://arxiv.org/abs/2606.16541" rel="noopener noreferrer"&gt;arXiv&lt;/a&gt; in June 2026 notes that a formal statement « can typecheck and be provable, yet still encode a different theorem than the source intended ». Take « every continuous function on a compact set attains its maximum »: several Lean translations compile, but the one that drops the non-emptiness hypothesis becomes false on the empty set. Matt Baker, for his part, puts that risk below 1%.&lt;/p&gt;

&lt;p&gt;Then there is the number. The README announces « ~42% top-line results formalized », meaning 300 out of 719. An analysis published by &lt;a href="https://blog.pebblous.ai/report/openai-math-722-verification-ledger/en/" rel="noopener noreferrer"&gt;Pebblous&lt;/a&gt; shows three measures in circulation: 173 manuscripts out of 719 in the formalization catalogue, or 24%; 135 result families out of 372, or 36%; and the 42%, whose numerator of 300 « matches the length of no list this file holds », the term « top-line results » being defined nowhere. That numeric sentence appeared two days after release, replacing a much vaguer « Many, but not all, of the manuscripts have been formalized. »&lt;/p&gt;

&lt;p&gt;In other words: even the verification rate needs verifying.&lt;/p&gt;

&lt;h2&gt;
  
  
  The response: AHM first, then Sophie Huiberts
&lt;/h2&gt;

&lt;p&gt;On October 7, the Communications Working Group of the Association for Human Mathematics published a &lt;a href="https://terrytao.wordpress.com/2026/10/07/ahm-statement-on-openais-october-6-release-of-mathematical-documents/" rel="noopener noreferrer"&gt;statement&lt;/a&gt;, reposted the same day on Terence Tao's blog « What's new ». Its most-quoted line: « Releasing over 700 files at once is not a demonstration of scholarship, but a demonstration of power. » The AHM, founded in mid-September 2026, calls on mathematicians to stop working with OpenAI.&lt;/p&gt;

&lt;p&gt;That position is far from unanimous: the comments under the post are sharply split. Some reject the boycott, arguing that publishing full claimed proofs anyone can check is the most exposed position an author can take.&lt;/p&gt;

&lt;p&gt;On October 12, Tao published a guest post on the same blog by mathematician Sophie Huiberts, « &lt;a href="https://terrytao.wordpress.com/2026/10/12/this-is-normal-bad-work/" rel="noopener noreferrer"&gt;This is normal bad work&lt;/a&gt; ». Her charge sheet is precise: OpenAI « don't bother putting in appropriate attribution of ideas », they « salami-slice 372 results over 719 pdfs », their work « contains retraction-worthy errors », they promise code and fail to include it, and their proofs are « fiendishly hard to parse ». A telling detail: some results had already been found by ChatGPT users writing them up properly, and the bulk release takes the credit for that work away from them. Her thesis fits in the title: not an epistemic catastrophe, just ordinary bad work published without embarrassment.&lt;/p&gt;

&lt;h2&gt;
  
  
  September 2026: the 25 Fields medallists
&lt;/h2&gt;

&lt;p&gt;The ground had been prepared. On September 11, 2026, 25 Fields medallists — among them Cédric Villani, Pierre-Louis Lions, Hugo Duminil-Copin, Pierre Deligne and Yu Deng — signed a piece in Le Monde titled « A Severe Misalignment of AI in Mathematics ». According to &lt;a href="https://www.rtbf.be/article/mathematiques-25-medailles-fields-alertent-sur-un-possible-effet-destructeur-de-l-ia-sur-leur-discipline-11788835" rel="noopener noreferrer"&gt;RTBF&lt;/a&gt;, they write that announcements arrive « in a rush, without leaving the time needed for rigorous writing-up », and that this « raises serious questions of attribution and plagiarism ».&lt;/p&gt;

&lt;p&gt;Their core argument applies to you too: solving a problem is only a means to an end, and the end is understanding. Mass-producing results at a frantic pace risks, they write, destroying fertile ground instead of giving birth to new ideas.&lt;/p&gt;

&lt;p&gt;The shock is real. In &lt;a href="https://www.franceinfo.fr/internet/intelligence-artificielle/j-en-ai-meme-pleure-pourquoi-les-progres-de-l-intelligence-artificielle-plongent-les-mathematiciens-dans-une-crise-existentielle_8232436.html" rel="noopener noreferrer"&gt;franceinfo&lt;/a&gt; on October 12, Hugo Duminil-Copin, Fields medallist in 2022, speaks of a « monumental shock » and says: « I even cried over it. » Cédric Villani sees « certainly the most radical change in mathematics in at least four centuries ». Ursula Martin, of Oxford, sums up the practical complaint for Nature: the release amounts to tossing the community a messy first draft and expecting it to clean up.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this changes for you
&lt;/h2&gt;

&lt;p&gt;You are not going to referee a proof about Dirichlet L-functions this term. But five reflexes transfer directly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A proof that looks right can fall on a sign.&lt;/strong&gt; What sank three OpenAI manuscripts was not an exotic concept, it was a sign error. When an AI hands you a nicely written solution, the question is not « does this look correct? » but « can I redo every step line by line? ».&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Errors propagate.&lt;/strong&gt; Two proofs fell because they depended on the first. If you build your dissertation on a result you never checked, you inherit its bugs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;« Verified » is not a word, it is a question.&lt;/strong&gt; Verified by what, against what, covering what share of the work? The gap between 42%, 36% and 24% comes not from a lie but from three definitions of the numerator and the denominator. Faced with any percentage, ask what is being counted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A preprint is not a peer-reviewed article.&lt;/strong&gt; None of the 719 documents was refereed before publication. You can cite them, as long as you say what they are. Same rule for the arXiv, HAL or SSRN preprints in your bibliography.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Attribution is the whole story.&lt;/strong&gt; The central complaint against OpenAI is that it does not cite prior work — exactly what you are asked to do in a dissertation. It is what separates a contribution from a file dump.&lt;/p&gt;

&lt;p&gt;One last reflex, whatever tool you use: check your institution's rules on AI before relying on it for graded work, and state honestly what you used.&lt;/p&gt;

&lt;h2&gt;
  
  
  Our take
&lt;/h2&gt;

&lt;p&gt;Both camps are right about different things, and that is what makes the debate confusing.&lt;/p&gt;

&lt;p&gt;On the mathematics, something important happened. Matt Baker, who calls the release sloppy, still writes that « this appears to mark a watershed moment in the history of mathematics ». Dismissing that on principle would be a mistake.&lt;/p&gt;

&lt;p&gt;On the method, the criticisms are solid, and they are not even about AI. Failing to cite, slicing one result across several PDFs, promising absent code, publishing 722 documents nobody has reviewed: these are craft failures you would hold against any human author.&lt;/p&gt;

&lt;p&gt;What strikes us most is the 42% figure: added two days after release, with a numerator matching no list in the repository, and reprinted as fact by the whole press. A story about mathematical verification whose headline number is itself unverifiable.&lt;/p&gt;

&lt;p&gt;For you, the conclusion is simple and a little reassuring. The value is no longer in producing an answer: a machine does that in three hours of compute. It is in the ability to review, to spot a sign error, to say where an idea came from and to explain why something is true. That is precisely what your exams measure.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Did OpenAI solve the Riemann hypothesis?
&lt;/h3&gt;

&lt;p&gt;No. The most discussed result concerns the quasi-Riemann hypothesis, a weaker statement. Nature notes that the October 6 batch contains no solution to any of the five remaining Millennium Prize Problems.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I cite one of these manuscripts in my dissertation?
&lt;/h3&gt;

&lt;p&gt;Yes, as long as you say what it is: preprints that have not been peer-reviewed, produced by a non-public AI model, some withdrawn or corrected. Cite the version and its date, and flag the status of the document.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Lean, concretely?
&lt;/h3&gt;

&lt;p&gt;A proof assistant: software that mechanically checks that a formal proof follows from a formal statement. Highly reliable on that narrow job, but it does not check that the formal statement faithfully translates the natural-language sentence in the paper.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why do the figures range from 24% to 42%?
&lt;/h3&gt;

&lt;p&gt;Because they count different things: 173 manuscripts out of 719 in the formalization catalogue gives 24%, 135 families out of 372 gives 36%, and OpenAI's 42% refers to « top-line results », a term the repository never defines.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does this mean AI is bad at maths?
&lt;/h3&gt;

&lt;p&gt;No, and it is rather the opposite that worries mathematicians. The complaint is not about the level of the results, but about how they were published: without attribution, without review, without code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://getpack.fr/en/blog/ia-integrite-academique-universites" rel="noopener noreferrer"&gt;/en/blog/ia-integrite-academique-universites&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://getpack.fr/en/blog/citer-source-apa-iso690-vancouver" rel="noopener noreferrer"&gt;/en/blog/citer-source-apa-iso690-vancouver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://getpack.fr/en/blog/reviser-avec-ia-sans-tricher" rel="noopener noreferrer"&gt;/en/blog/reviser-avec-ia-sans-tricher&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://getpack.fr/en/skills/resume-article-scientifique" rel="noopener noreferrer"&gt;/en/skills/resume-article-scientifique&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/openai/math" rel="noopener noreferrer"&gt;openai/math — OpenAI public repository (GitHub, README)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/openai/math/main/history.md" rel="noopener noreferrer"&gt;history.md — changelog of the openai/math repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://retractionwatch.com/2026/10/08/openai-withdraws-preprints-722-manuscripts-unsolved-math-problems/" rel="noopener noreferrer"&gt;OpenAI withdraws three preprints a day after releasing 722 manuscripts on unsolved math problems — Retraction Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://terrytao.wordpress.com/2026/10/07/ahm-statement-on-openais-october-6-release-of-mathematical-documents/" rel="noopener noreferrer"&gt;AHM Statement on OpenAI’s October 6 Release of Mathematical Documents — Association for Human Mathematics, posted on What’s new (Terence Tao’s blog)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://terrytao.wordpress.com/2026/10/12/this-is-normal-bad-work/" rel="noopener noreferrer"&gt;This is normal bad work — guest post by Sophie Huiberts on What’s new (Terence Tao’s blog)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.nature.com/articles/d41586-026-03196-8" rel="noopener noreferrer"&gt;OpenAI posts 700 maths preprints online: mathematicians are up in arms — Nature&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mattbaker.blog/2026/10/08/some-early-morning-thoughts-on-the-openai-dump/" rel="noopener noreferrer"&gt;Some early morning thoughts on the OpenAI dump — Matt Baker (Georgia Tech)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.pebblous.ai/report/openai-math-722-verification-ledger/en/" rel="noopener noreferrer"&gt;OpenAI math verification rate analyzed: 24% vs 42% — Pebblous&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lean-lang.org/about/" rel="noopener noreferrer"&gt;About Lean — lean-lang.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://arxiv.org/abs/2606.16541" rel="noopener noreferrer"&gt;The Faithfulness Gap: Certifying Semantic Equivalence Between Natural-Language and Formal Mathematical Statements — arXiv&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.franceinfo.fr/internet/intelligence-artificielle/j-en-ai-meme-pleure-pourquoi-les-progres-de-l-intelligence-artificielle-plongent-les-mathematiciens-dans-une-crise-existentielle_8232436.html" rel="noopener noreferrer"&gt;J’en ai même pleuré : pourquoi les progrès de l’intelligence artificielle plongent les mathématiciens dans une crise existentielle — franceinfo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.rtbf.be/article/mathematiques-25-medailles-fields-alertent-sur-un-possible-effet-destructeur-de-l-ia-sur-leur-discipline-11788835" rel="noopener noreferrer"&gt;Mathématiques : 25 médaillés Fields alertent sur un possible effet destructeur de l’IA sur leur discipline — RTBF&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>openai</category>
      <category>math</category>
      <category>students</category>
    </item>
    <item>
      <title>OpenAI engineering team leader arrested, accused of attempted wiretapping</title>
      <dc:creator>Hacks.gr</dc:creator>
      <pubDate>Wed, 14 Oct 2026 04:01:32 +0000</pubDate>
      <link>https://dev.to/hacksgr/openai-engineering-team-leader-arrested-accused-of-attempted-wiretapping-d1h</link>
      <guid>https://dev.to/hacksgr/openai-engineering-team-leader-arrested-accused-of-attempted-wiretapping-d1h</guid>
      <description>&lt;p&gt;A complaint in the case against former OpenAI engineering team lead Abdulrahman Alfozan describes a recording device found in a room used for confidential discussions, concealed in toilet paper and connected behind a television.&lt;/p&gt;

&lt;p&gt;Alfozan was arrested and accused of using or trying to use a device to intercept spoken conversations; the allegations do not establish that any meeting was recorded.&lt;/p&gt;




&lt;p&gt;Company employees discovered the device around Sept. 30 in an executive meeting room at OpenAI's San Francisco offices. According to the complaint, it had been placed there around Sept. 28. It was plugged into a USB port on the back of the television and hidden inside toilet paper.&lt;/p&gt;

&lt;p&gt;The room was used for confidential discussions about the company's technology, business and strategy, such as research, product plans and business opportunities. Video from the offices reportedly shows Alfozan near the room on several dates before the device was discovered, even though he had no access or participation in the meetings.&lt;/p&gt;

&lt;p&gt;According to the complaint, before the device was installed, Alfozan used a tool from his job to gather information about OpenAI's buildings and rooms, their capacity and usage schedules. He also collected data on executives' locations and their meetings with external partners.&lt;/p&gt;

&lt;p&gt;From September 24 to 30, according to the complaint, questions were asked through a chatbot account associated with his wife about how a recording device could be built, customized, installed and tested. The questions also concerned its remote operation. Some related to continuous recording, wireless connection, live listening and SD card encryption. On September 27 and 28, questions were also asked about specific features of the device.&lt;/p&gt;

&lt;p&gt;On October 5, Alfozan allegedly entered the room and looked behind the television. On the same day, he allegedly left a bag unattended in another room at OpenAI. According to the complaint, a second recording device, his wallet and his ID were found in the bag.&lt;/p&gt;

&lt;p&gt;OpenAI said it used its own artificial intelligence systems to figure out what the device was and where it came from. It also said it has no evidence that Alfozan obtained or copied any of its model data, source code or customer information without permission.&lt;/p&gt;

&lt;p&gt;The company told TechCrunch that the device used advanced encryption, could monitor audio, and transferred data in a way designed to evade detection.&lt;/p&gt;

&lt;p&gt;If convicted, Alfozan faces up to five years in prison, a $250.000 fine and three years of post-release supervision.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://en.hacks.gr/synelifthi-epikefalis-omadas-michanikon-tis-openai-poy-katigoreitai-gia-apopeira-ypoklopis-synomilion/" rel="noopener noreferrer"&gt;Read the original English article on Hacks.gr&lt;/a&gt;&lt;/p&gt;

</description>
      <category>openai</category>
      <category>workplaceprivacy</category>
      <category>audiorecording</category>
    </item>
    <item>
      <title>OpenAI engineer accused of hiding recording device in meeting room</title>
      <dc:creator>Hacks.gr</dc:creator>
      <pubDate>Wed, 14 Oct 2026 03:25:32 +0000</pubDate>
      <link>https://dev.to/hacksgr/openai-engineer-accused-of-hiding-recording-device-in-meeting-room-2hem</link>
      <guid>https://dev.to/hacksgr/openai-engineer-accused-of-hiding-recording-device-in-meeting-room-2hem</guid>
      <description>&lt;p&gt;A federal complaint alleges that former OpenAI engineer Abdulrahman Alfozan hid a recorder in a meeting room used for sensitive discussions.&lt;/p&gt;

&lt;p&gt;Prosecutors say he queried AI and productivity tools about planning the alleged surveillance and used an internal OpenAI tool to ask about scheduled meetings.&lt;/p&gt;

&lt;p&gt;The case is before a federal court; the allegations are not findings of guilt.&lt;/p&gt;




&lt;p&gt;Abdulrahman Alfozan appeared in federal court in San Francisco on Tuesday. Prosecutors describe him as a 35-year-old Saudi national and permanent U.S. resident. He faces one count of using a device to eavesdrop on spoken conversations. If convicted, he could be sentenced to up to five years in prison.&lt;/p&gt;

&lt;p&gt;OpenAI had hired him in July 2025 and fired him last Friday, the day he was arrested.&lt;/p&gt;

&lt;h2&gt;
  
  
  The device in the meeting room
&lt;/h2&gt;

&lt;p&gt;According to the criminal complaint, Alfozan hid a recording device inside toilet paper and placed it behind a monitor. The device was plugged into a USB port on the back of a television.&lt;/p&gt;

&lt;p&gt;The room was reserved only for executives and their assistants. It was used for internal meetings on leadership, research and product matters, as well as briefings with partners and government officials. According to the complaint, highly confidential information about research, products, business strategy and the company's relations with the government was often discussed.&lt;/p&gt;

&lt;p&gt;The complaint states that the device was installed no later than September 28, 2026. OpenAI detected it on September 30, during a scan for hidden devices. The company said it was unable to read the data on the memory card because it was encrypted.&lt;/p&gt;

&lt;p&gt;Prosecutors say that over several weeks, Alfozan asked an unnamed productivity tool and an artificial intelligence tool how to set up the monitoring. He also used an internal OpenAI tool to ask what meetings were scheduled in the room. According to prosecutors and court documents, he appears to have asked technical questions about covert recording through an AI tool account associated with his wife.&lt;/p&gt;

&lt;h2&gt;
  
  
  The second device in the bag
&lt;/h2&gt;

&lt;p&gt;On October 5, OpenAI’s security team found a bag that Alfozan had left unattended in a printer area. Inside were personal items, including his wallet, and a second recording device. This one also had encrypted data.&lt;/p&gt;

&lt;p&gt;Alfozan later told the company he had lost the bag and retrieved it from lost and found. He said a credit card, about $500 in cash, and two AirPods were missing, but he didn't mention the second device, which OpenAI security had removed.&lt;/p&gt;

&lt;p&gt;FBI Director Kash Patel said Alfozan wanted to secretly record sensitive conversations about OpenAI's superintelligence technology. However, neither prosecutors nor the company have said what the motive might be.&lt;/p&gt;

&lt;p&gt;OpenAI said it notified the FBI and linked the devices to Alfozan by examining conversations, security camera footage and his bag. As the investigation continued, it gradually restricted his access to company systems. The company also said it has no evidence that he improperly obtained or copied AI models, source code or customer data.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://en.hacks.gr/michanikos-tis-openai-katigoreitai-oti-ekrypse-syskeyi-ichografisis-se-aithoysa-syskepseon/" rel="noopener noreferrer"&gt;Read the original English article on Hacks.gr&lt;/a&gt;&lt;/p&gt;

</description>
      <category>openai</category>
      <category>ai</category>
      <category>insiderrisk</category>
      <category>workplaceprivacy</category>
    </item>
    <item>
      <title>Former OpenAI executive arrested in the US for espionage</title>
      <dc:creator>Hacks.gr</dc:creator>
      <pubDate>Wed, 14 Oct 2026 02:29:29 +0000</pubDate>
      <link>https://dev.to/hacksgr/former-openai-executive-arrested-in-the-us-for-espionage-405m</link>
      <guid>https://dev.to/hacksgr/former-openai-executive-arrested-in-the-us-for-espionage-405m</guid>
      <description>&lt;p&gt;A former OpenAI engineering leader, Abdulrahman Alfozan, has been arrested on espionage charges.&lt;/p&gt;

&lt;p&gt;Investigators allege he planted hidden audio recording devices in company meeting rooms, an incident currently labeled by the U.S.&lt;/p&gt;

&lt;p&gt;Department of Justice as a national security matter.&lt;/p&gt;

&lt;p&gt;Notably, OpenAI utilized its own internal AI models to help link the hardware to the suspect.&lt;/p&gt;

&lt;p&gt;Officials have confirmed that no evidence of stolen proprietary code, AI models, or customer data has surfaced to date.&lt;/p&gt;




&lt;h2&gt;
  
  
  How his action was revealed
&lt;/h2&gt;

&lt;p&gt;The case began in late September 2026, when a recording device was found hidden behind a television in a conference room. The device had been placed there around September 28. OpenAI used its own artificial intelligence systems to analyze the device and link it to Alfozan, who was an engineering executive at the company.&lt;/p&gt;

&lt;h3&gt;
  
  
  Surveillance and arrest
&lt;/h3&gt;

&lt;p&gt;After the initial discovery, security officials placed the area under surveillance. On October 5, camera footage captured Alfozan checking the location of the device. On the same day, authorities found a second recording device in a bag in his possession. In addition, it emerged that his wife’s ChatGPT account had been used for searches related to the operation of recording devices.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is there a risk to the data?
&lt;/h3&gt;

&lt;p&gt;Despite the seriousness of the charges, there is no evidence so far that Alfozan managed to steal AI models, source code, or personal customer data. Alfozan, who is a Saudi national, has already been fired from OpenAI. If convicted, he faces up to five years in prison and a $250.000 fine.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://en.hacks.gr/synelifthi-stis-ipa-proin-stelechos-tis-openai-gia-kataskopeia/" rel="noopener noreferrer"&gt;Read the original English article on Hacks.gr&lt;/a&gt;&lt;/p&gt;

</description>
      <category>openai</category>
      <category>espionage</category>
      <category>ai</category>
    </item>
    <item>
      <title>OpenAI engineer arrested for illegally recording conversations at company offices</title>
      <dc:creator>Hacks.gr</dc:creator>
      <pubDate>Wed, 14 Oct 2026 01:57:34 +0000</pubDate>
      <link>https://dev.to/hacksgr/openai-engineer-arrested-for-illegally-recording-conversations-at-company-offices-4g2h</link>
      <guid>https://dev.to/hacksgr/openai-engineer-arrested-for-illegally-recording-conversations-at-company-offices-4g2h</guid>
      <description>&lt;p&gt;OpenAI recently identified and terminated an engineer who allegedly planted recording devices in a corporate conference room.&lt;/p&gt;

&lt;p&gt;The internal investigation utilized OpenAI's own AI models to attribute the actions to the suspect, who reportedly leveraged a chatbot to learn how to build and camouflage the recording hardware.&lt;/p&gt;

&lt;p&gt;The incident resulted in arrest, with the suspect facing charges that could carry significant fines and prison time.&lt;/p&gt;




&lt;h2&gt;
  
  
  How the device was revealed
&lt;/h2&gt;

&lt;p&gt;On September 30, 2026, OpenAI discovered an audio recording device hidden in an executive meeting room. The device was connected to a television and covered with toilet paper to make it less visible. The company said it used its own artificial intelligence models to analyze the data and identify the perpetrator.&lt;/p&gt;

&lt;p&gt;According to the information, Alfozan allegedly used a chatbot to ask for guidance on how to build and hide the device. A few days later, on October 5, an employee's bag was found elsewhere in the building, containing his personal belongings and a second recording device.&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenAI's stance
&lt;/h3&gt;

&lt;p&gt;The company confirmed the immediate firing of the engineer once his identification was completed. At the same time, OpenAI said that, based on the evidence collected so far, there is no indication that the perpetrator managed to leak customer data, its program code, or other sensitive information.&lt;/p&gt;

&lt;p&gt;Alfozan now faces criminal charges. If convicted, he could face up to five years in prison and a fine of up to $250.000.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://en.hacks.gr/synelifthi-michanikos-tis-openai-poy-kategrafe-paranoma-synomilies-sta-grafeia-tis-etaireias/" rel="noopener noreferrer"&gt;Read the original English article on Hacks.gr&lt;/a&gt;&lt;/p&gt;

</description>
      <category>openai</category>
      <category>ai</category>
      <category>corporatesecurity</category>
    </item>
    <item>
      <title>Generate images and video with the OpenAI SDK — no OpenAI key required</title>
      <dc:creator>livepairai</dc:creator>
      <pubDate>Wed, 14 Oct 2026 01:41:37 +0000</pubDate>
      <link>https://dev.to/livepairai23/generate-images-and-video-with-the-openai-sdk-no-openai-key-required-3odb</link>
      <guid>https://dev.to/livepairai23/generate-images-and-video-with-the-openai-sdk-no-openai-key-required-3odb</guid>
      <description>&lt;p&gt;The OpenAI Python SDK is mostly a &lt;code&gt;base_url&lt;/code&gt; and an &lt;code&gt;api_key&lt;/code&gt;. If an API speaks the same shapes — &lt;code&gt;/images/generations&lt;/code&gt;, &lt;code&gt;/chat/completions&lt;/code&gt;, &lt;code&gt;/videos&lt;/code&gt; — the SDK you already have installed works against it.&lt;/p&gt;

&lt;p&gt;LivePair exposes exactly that surface: an OpenAI-compatible endpoint covering 60+ image and video generation models (Seedream, Seedance, Wan, Qwen Image, Ideogram, Minimax) plus a set of chat models. One &lt;code&gt;base_url&lt;/code&gt; change, and &lt;code&gt;client.images.generate()&lt;/code&gt; produces media from models that don't exist on OpenAI.&lt;/p&gt;

&lt;p&gt;Disclosure: I work on LivePair. Everything below is runnable against the live API — the catalog, prices, and shapes are public at &lt;code&gt;GET /v1/agent/models&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;openai requests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Grab a key: sign up at &lt;code&gt;livepairai.com&lt;/code&gt; → Settings → API keys → &lt;code&gt;lp_…&lt;/code&gt;. Billing is a prepaid credit balance — each call debits the per-model price, no subscription.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://livepairai.com/v1/agent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;lp_...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;          &lt;span class="c1"&gt;# sent as a Bearer token, so the stock SDK works
&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Images — &lt;code&gt;client.images.generate&lt;/code&gt; just works
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;img&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;images&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;seedream-5.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;a lighthouse on a cliff at dusk, cinematic lighting&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1024x1024&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the unmodified OpenAI call. The catalog decides what &lt;code&gt;model&lt;/code&gt; can be — &lt;code&gt;seedream-5.0&lt;/code&gt;, &lt;code&gt;qwen-image-3&lt;/code&gt;, &lt;code&gt;ideogram-3-turbo&lt;/code&gt;, and so on. &lt;code&gt;size&lt;/code&gt; accepts the standard &lt;code&gt;1024x1024&lt;/code&gt; / &lt;code&gt;1792x1024&lt;/code&gt; / &lt;code&gt;1024x1792&lt;/code&gt; values and maps onto each model's aspect-ratio ladder.&lt;/p&gt;

&lt;h2&gt;
  
  
  Chat — &lt;code&gt;client.chat.completions.create&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deepseek/deepseek-v4.1-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Explain the CAP theorem in two sentences.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;256&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Video — Sora-shaped, poll-then-download
&lt;/h2&gt;

&lt;p&gt;The video endpoint mirrors OpenAI's Videos API shape: &lt;code&gt;POST /videos&lt;/code&gt; returns a job immediately, &lt;code&gt;GET /videos/{id}&lt;/code&gt; polls status, &lt;code&gt;GET /videos/{id}/content&lt;/code&gt; streams the mp4. Newer SDK releases have a &lt;code&gt;client.videos&lt;/code&gt; namespace; here's the plain-HTTP version so the contract is visible:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;H&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bearer lp_...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Content-Type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;BASE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://livepairai.com/v1/agent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;job&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;BASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/videos&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;H&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wan-3.0-t2v&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;prompt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;drone shot over a foggy forest at dawn, slow push-in&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;size&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1280x720&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c1"&gt;# 16:9; 720x1280 → 9:16
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;seconds&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;vid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;job&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;v&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;BASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/videos/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;vid&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;H&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;v&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;completed&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;failed&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;
    &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;v&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;completed&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;mp4&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;BASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/videos/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;vid&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;H&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# 302 → media URL
&lt;/span&gt;    &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;out.mp4&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wb&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mp4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Prices are data, not a pricing page
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;GET /v1/agent/models&lt;/code&gt; returns every model with a &lt;code&gt;priceUsd&lt;/code&gt; field — the exact per-call debit before you make it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;models&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;BASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/models&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;models&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mode&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;priceUsd&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;GET /v1/agent/balance&lt;/code&gt; shows your prepaid balance and recent ledger entries.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why bother
&lt;/h2&gt;

&lt;p&gt;The useful part isn't another API key — it's that image gen, video gen, and chat land on the same OpenAI surface you already integrate, priced per call against a balance you can watch. For pipelines that need several model families (compare outputs, fallback chains, cost routing), switching models is a string, not a new provider account.&lt;/p&gt;

&lt;p&gt;There's also a no-account path if you're wiring autonomous agents: the same endpoints answer &lt;code&gt;402 Payment Required&lt;/code&gt; and settle per call in USDC via x402, so a client that can sign a payment header can call without any signup at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gotchas
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;n&lt;/code&gt; &amp;gt; 1 isn't supported on image generation — loop instead.&lt;/li&gt;
&lt;li&gt;Video is async by design; budget ~1–3 min per clip depending on model.&lt;/li&gt;
&lt;li&gt;A generation that fails provider-side refunds to the balance automatically.&lt;/li&gt;
&lt;li&gt;Results aren't published anywhere and are deleted after 48h — save the bytes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Docs: &lt;code&gt;livepairai.com/docs&lt;/code&gt;, machine-readable spec at &lt;code&gt;/v1/agent/openapi.json&lt;/code&gt;, MCP server for agent clients under &lt;code&gt;/mcp&lt;/code&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>openai</category>
      <category>python</category>
    </item>
  </channel>
</rss>
