Daily Tech Briefing
AI 科技速览
每天 5 分钟内学习 AI。获取最新的人工智能新闻,理解其重要性,并学习如何将其应用于您的工作。
Dev.to AI · 2026/8/1 09:03:48
Four AI APIs, four completely different citation formats. Getting the data out was harder than the analysis.
AI 中文解读
【核心亮点】一篇开发者的实测文章揭示了AI行业一个尴尬现状:四大AI助手的引用格式各搞一套,提取数据比分析数据还难,这让人有点意外。
【通俗解读】四个主流AI服务商,比如OpenAI和Anthropic,它们的AI在回答问题时都会附上信息来源链接。但问题是,每家返回链接的方式完全不一样,有的藏在回答的注释里,有的单独打包,字段名称、数据结构都各不相同。开发者想把四个AI的引用放在一起对比,就得挨个适配,像翻译四种语言一样折腾,光提取数据就耗费了一个周末。
【实际影响】这件事短期看是开发者头疼的事,但长期对普通用户也有影响。AI引用格式不统一,意味着跨平台工具难以呈现标准化的信息来源,用户想核实AI说的对不对会很麻烦。如果各家能形成统一的引用标准,以后用任何AI查资料,都能清楚看到引用了哪个网站、哪篇文章,信息透明度会大大提升,AI回答的可信度也会更容易验证。
<p>I've been running a <a href="https://greaterthanservices.com/blog/ai-search-study-aesthetic-clinics" rel="noopener noreferrer">small monthly study</a>: take ten buyer-intent questions from one industry, ask four AI assistants the identical question, and record every source each one actually read.</p>
<p>The analysis is the easy bit. Set overlap, count the domains, done.</p>
<p>Getting the citations out of four different APIs in a shape you can compare — that's where I lost a weekend. Writing it up because I couldn't find this anywhere when I needed it.</p>
<h2>
The problem
</h2>
<p>All four providers will tell you which URLs they used. None of them agree on where to put that, what to call it, or even what a "URL" is.</p>
<p>Here's roughly what each one gives you. (Shapes as of mid-2026 — they move, check the docs before you copy this.)</p>
<p><strong>OpenAI</strong>, Responses API with the web search tool. Citations ride along as annotations on the text output:<br>
</p>
<div class="highlight js-code-highlight">
<pre class="highlight javascript"><code><span class="kd">const</span> <span class="nx">urls</span> <span class="o">=</span> <span class="p">[];</span>
<span class="k">for </span><span class="p">(</span><span class="kd">const</span> <span class="nx">item</span> <span class="k">of</span> <span class="nx">resp</span><span class="p">.</span><span class="nx">output</span> <span class="o">??</span> <span class="p">[])</span> <span class="p">{</span>
<span class="k">for </span><span class="p">(</span><span class="kd">const</span> <span class="nx">block</span> <span class="k">of</span> <span class="nx">item</span><span class="p">.</span><span class="nx">content</span> <span class="o">??</span> <span class="p">[])</span> <span class="p">{</span>
<span class="k">for </span><span class="p">(</span><span class="kd">const</span> <span class="nx">a</span> <span class="k">of</span> <span class="nx">block</span><span class="p">.</span><span class="nx">annotations</span> <span class="o">??</span> <span class="p">[])</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">a</span><span class="p">.</span><span class="nx">type</span> <span class="o">===</span> <span class="dl">"</span><span class="s2">url_citation</span><span class="dl">"</span><span class="p">)</span> <span class="nx">urls</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nx">a</span><span class="p">.</span><span class="nx">url</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
</code></pre>
</div>
<p><strong>Anthropic</strong>, Messages API with the web search tool. Search results come back as their own content block type, separate from the text:<br>
</p>
<div class="highlight js-code-highlight">
<pre class="highlight javascript"><code><span class="kd">const</span> <span class="nx">urls</span> <span class="o">=</span> <span class="p">[];</span>
<span class="k">for </span><span class="p">(</span><span class="kd">const</span> <span class="nx">block</span> <span class="k">of</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">content</span> <span class="o">??</span> <span class="p">[])</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">block</span><span class="p">.</span><span class="nx">type</span> <span class="o">===</span> <span class="dl">"</span><span class="s2">web_search_tool_result</span><span class="dl">"</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for </span><span class="p">(</span><span class="kd">const</span> <span class="nx">r</span> <span class="k">of</span> <span class="nx">block</span><span class="p">.</span><span class="nx">content</span> <span class="o">??</span> <span class="p">[])</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><s
分享
阅读原文 ↗