<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>基础与方法 on 扎塔-Zata</title><link>https://www.zata.cc/tags/%E5%9F%BA%E7%A1%80%E4%B8%8E%E6%96%B9%E6%B3%95/</link><description>Recent content in 基础与方法 on 扎塔-Zata</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>Example Person</copyright><lastBuildDate>Thu, 24 Sep 2026 17:09:06 +0800</lastBuildDate><atom:link href="https://www.zata.cc/tags/%E5%9F%BA%E7%A1%80%E4%B8%8E%E6%96%B9%E6%B3%95/index.xml" rel="self" type="application/rss+xml"/><item><title>JAX</title><link>https://www.zata.cc/p/jax/</link><pubDate>Fri, 14 Nov 2025 22:35:11 +0800</pubDate><guid>https://www.zata.cc/p/jax/</guid><description>&lt;img src="https://www.zata.cc/p/jax/images/index/index.png" alt="Featured image of post JAX" />&lt;h3 id="jax-详细介绍">JAX 详细介绍
&lt;/h3>&lt;p>JAX 是一个由 Google 开发的开源 Python 库，主要用于高性能数值计算和大规模机器学习研究。它以 NumPy 为基础，提供了一个熟悉的数组计算 API，同时引入了先进的程序转换机制，如自动微分（autodiff）和即时编译（JIT），使其特别适合加速器环境（如 GPU 和 TPU）。JAX 的设计理念是“可组合的函数转换”，允许开发者轻松地将计算优化为高效的机器码，从而在保持代码简洁性的前提下实现高性能。&lt;/p>
&lt;h4 id="历史背景">历史背景
&lt;/h4>&lt;p>JAX 的开发源于 Google Brain 团队对高性能计算的需求。最初于 2018 年左右作为内部工具启动，旨在解决 TensorFlow 在研究阶段的灵活性问题。2020 年，JAX 正式开源，并迅速在机器学习社区流行开来。它受到了 NumPy、Autograd 和 XLA（Accelerated Linear Algebra，Google 的编译器后端）的启发。JAX 的目标是桥接研究原型与生产部署的差距，让研究者能用纯 Python 代码快速迭代，而无需切换到低级优化。截至 2025 年，JAX 已演变为一个成熟生态，集成到 Flax（神经网络库）和 Optax（优化器）等工具中，并被广泛用于天体物理、量子计算和强化学习等领域。&lt;/p>
&lt;h4 id="核心特性">核心特性
&lt;/h4>&lt;p>JAX 的强大之处在于其“函数转换”系统，这些转换可以无缝应用于 NumPy-like 的代码，而无需修改核心逻辑。以下是其主要特性：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>特性&lt;/th>
&lt;th>描述&lt;/th>
&lt;th>示例应用&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>NumPy-like API&lt;/strong>&lt;/td>
&lt;td>提供 &lt;code>jax.numpy&lt;/code>（简称 &lt;code>jnp&lt;/code>）模块，几乎兼容 NumPy 的所有数组操作，便于从 NumPy 迁移。&lt;/td>
&lt;td>数组创建、线性代数、统计计算。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>自动微分 (autodiff)&lt;/strong>&lt;/td>
&lt;td>支持前向/反向模式自动求导，适用于复杂梯度计算。&lt;/td>
&lt;td>机器学习中的梯度下降优化。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>JIT 编译&lt;/strong>&lt;/td>
&lt;td>使用 XLA 后端将 Python 函数编译为高效机器码，支持懒惰求值。&lt;/td>
&lt;td>加速循环密集型计算，如模拟。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>向量化 (vmap)&lt;/strong>&lt;/td>
&lt;td>自动将函数向量化，支持批量处理。&lt;/td>
&lt;td>处理多维数据，如图像批次。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>并行映射 (pmap)&lt;/strong>&lt;/td>
&lt;td>在多设备（如多个 GPU）上并行执行函数。&lt;/td>
&lt;td>分布式训练。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>多后端支持&lt;/strong>&lt;/td>
&lt;td>无缝运行于 CPU、GPU（CUDA/ROCm）和 TPU，无需代码修改。&lt;/td>
&lt;td>异构计算环境。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>纯函数式设计&lt;/strong>&lt;/td>
&lt;td>数组不可变（immutable），避免副作用，确保可预测性。&lt;/td>
&lt;td>调试和重现性强。&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>这些特性使 JAX 在性能上远超纯 NumPy，尤其在加速器上。&lt;/p>
&lt;h4 id="与-numpy-和-tensorflow-的比较">与 NumPy 和 TensorFlow 的比较
&lt;/h4>&lt;p>JAX 常被视为 NumPy 的“升级版”和 TensorFlow 的“研究友好”替代品。以下是关键区别：&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>与 NumPy 的比较&lt;/strong>：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>相似点&lt;/strong>：JAX 的 API 高度兼容 NumPy（如 &lt;code>jnp.array()&lt;/code>、&lt;code>jnp.dot()&lt;/code>），迁移成本低。&lt;/li>
&lt;li>&lt;strong>区别&lt;/strong>：
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>方面&lt;/th>
&lt;th>NumPy&lt;/th>
&lt;th>JAX&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>数组可变性&lt;/strong>&lt;/td>
&lt;td>支持原地修改（in-place）。&lt;/td>
&lt;td>不可变，必须返回新数组（函数式风格）。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>性能&lt;/strong>&lt;/td>
&lt;td>CPU 上高度优化，但无加速器支持。&lt;/td>
&lt;td>CPU 上可能稍慢（因抽象层），但 GPU/TPU 上更快（JIT 优化）。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>高级功能&lt;/strong>&lt;/td>
&lt;td>无自动微分或编译。&lt;/td>
&lt;td>支持 autodiff、JIT 等转换。&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/li>
&lt;li>&lt;strong>适用场景&lt;/strong>：NumPy 适合简单脚本；JAX 适合需要梯度或高性能的场景。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>与 TensorFlow 的比较&lt;/strong>：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>相似点&lt;/strong>：两者都支持自动微分和图优化，TensorFlow 的 Keras 可与 JAX 集成。&lt;/li>
&lt;li>&lt;strong>区别&lt;/strong>：
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>方面&lt;/th>
&lt;th>TensorFlow&lt;/th>
&lt;th>JAX&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>抽象层&lt;/strong>&lt;/td>
&lt;td>高层 API（如 Keras）+ 图模式/急切执行。&lt;/td>
&lt;td>低层、纯函数式，专注于核心计算。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>灵活性&lt;/strong>&lt;/td>
&lt;td>研究时需切换模式，部署复杂。&lt;/td>
&lt;td>统一风格，易于原型到生产。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>性能&lt;/strong>&lt;/td>
&lt;td>内置优化，但自定义扩展难。&lt;/td>
&lt;td>通过转换实现极致优化，支持自定义后端。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>学习曲线&lt;/strong>&lt;/td>
&lt;td>更完整框架，适合生产。&lt;/td>
&lt;td>更轻量，适合研究（如结合 Flax）。&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/li>
&lt;li>&lt;strong>适用场景&lt;/strong>：TensorFlow 适合端到端应用；JAX 更适合实验性 ML 研究，常与 PyTorch-like 库（如 Flax）结合。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>总体上，JAX 强调“编写一次，到处运行”，而 NumPy/TensorFlow 更侧重通用性或生产部署。&lt;/p>
&lt;h4 id="安装指南">安装指南
&lt;/h4>&lt;p>JAX 的安装简单，通过 pip 完成。基本命令：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">pip install --upgrade jax jaxlib
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>&lt;strong>CPU 版&lt;/strong>：上述命令即可。&lt;/li>
&lt;li>&lt;strong>GPU 版&lt;/strong>（CUDA）：&lt;code>pip install --upgrade &amp;quot;jax[cuda12_pip]&amp;quot; -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html&lt;/code>（替换 cuda12 为你的 CUDA 版本，如 11 或 12）。&lt;/li>
&lt;li>&lt;strong>TPU 版&lt;/strong>：需 Google Cloud 环境，参考官方文档。
安装后，验证：&lt;code>import jax; print(jax.devices())&lt;/code>（显示可用设备）。&lt;/li>
&lt;/ul>
&lt;h4 id="基本使用示例">基本使用示例
&lt;/h4>&lt;p>以下是简单示例，展示核心功能。假设已安装 JAX。&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>基本数组操作&lt;/strong>（NumPy 风格）：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">jax.numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">jnp&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">x&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">jnp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">array&lt;/span>&lt;span class="p">([&lt;/span>&lt;span class="mf">1.0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mf">2.0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">y&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">jnp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sin&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">jnp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dot&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">y&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># 输出: [1.84147098 3.90929337 9.83602988]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>&lt;strong>自动微分&lt;/strong>：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">jax&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">grad&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">f&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">jnp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sin&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">**&lt;/span> &lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">df_dx&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">grad&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">f&lt;/span>&lt;span class="p">)(&lt;/span>&lt;span class="mf">1.0&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># 计算 f 在 x=1.0 处的导数&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">df_dx&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># 输出: 0.6823278（约值）&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>&lt;strong>JIT 编译&lt;/strong>（加速）：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">jax&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">jit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nd">@jit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">fast_f&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">jnp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dot&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">jnp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sin&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">x&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">jnp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">arange&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mf">1000000.0&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">fast_f&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># 首次运行编译，后续高速&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>&lt;strong>向量化&lt;/strong>（处理批量）：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">jax&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">vmap&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">single_loss&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">params&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">y&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">jnp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sum&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="n">jnp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dot&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">params&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">y&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">**&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">batched_loss&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">vmap&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">single_loss&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">in_axes&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kc">None&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="c1"># 向量化第二个和第三个参数&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 可用于批量数据训练&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ol>
&lt;p>这些示例展示了 JAX 的简洁性。&lt;/p>
&lt;h4 id="生态系统与应用">生态系统与应用
&lt;/h4>&lt;p>JAX 的生态丰富，包括：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Flax/Equinox&lt;/strong>：构建神经网络。&lt;/li>
&lt;li>&lt;strong>Optax&lt;/strong>：优化器集合。&lt;/li>
&lt;li>&lt;strong>Haiku&lt;/strong>：TensorFlow-like 模块化。
应用领域：深度学习、天体模拟（jaxoplanet）、量子计算（QuTiP 集成）和生成模型。 截至 2025 年，JAX 在学术会议（如 NeurIPS）中频繁出现，并被 Meta 和 OpenAI 等公司采用。&lt;/li>
&lt;/ul>
&lt;h4 id="总结">总结
&lt;/h4>&lt;p>JAX 是现代 ML 研究者的利器，它结合了 NumPy 的易用性和 TensorFlow 的高性能，同时提供无与伦比的灵活性。如果你从事数值计算或 AI 原型开发，强烈推荐从官方文档（https://jax.readthedocs.io）入手。JAX 的未来在于进一步优化多模态 AI 和分布式系统，值得持续关注。&lt;/p></description></item><item><title>mechine_learning_models</title><link>https://www.zata.cc/p/mechine_learning_models/</link><pubDate>Thu, 06 Nov 2025 21:52:05 +0800</pubDate><guid>https://www.zata.cc/p/mechine_learning_models/</guid><description>&lt;img src="https://www.zata.cc/p/mechine_learning_models/images/index/index.png" alt="Featured image of post mechine_learning_models" />&lt;h2 id="random_forest">random_forest
&lt;/h2>&lt;p>好的，这是一个非常经典且强大的机器学习算法。我会为您提供一个关于“随机森林”（Random Forest）的详细介绍。&lt;/p>
&lt;hr>
&lt;p>🌳 什么是随机森林 (Random Forest)？&lt;/p>
&lt;hr>
&lt;p>简单来说，&lt;strong>随机森林是一种集成学习（Ensemble Learning）算法&lt;/strong>。&lt;/p>
&lt;p>想象一下，当您要做出一个重要决定时，您可能会去询问很多不同领域的朋友或专家，然后综合他们的意见，最终得出一个更明智、更可靠的结论。&lt;/p>
&lt;p>随机森林做的就是同样的事情。它不会只依赖一个“决策树”（Decision Tree）模型，而是&lt;strong>构建一个由大量决策树组成的“森林”&lt;/strong>，然后通过&lt;strong>集体投票&lt;/strong>（用于分类）或&lt;strong>取平均值&lt;/strong>（用于回归）的方式来得出最终的预测结果。&lt;/p>
&lt;p>它既可以用于&lt;strong>分类&lt;/strong>问题（比如，判断一封邮件是否为垃圾邮件），也可以用于&lt;strong>回归&lt;/strong>问题（比如，预测明天的房价）。&lt;/p>
&lt;p>随机森林的“魔法”在于它的名字——&lt;strong>“随机”&lt;/strong>。它通过引入两种随机性来确保森林中的每一棵树都不相同，从而提高模型的整体鲁棒性和准确性。&lt;/p>
&lt;ol>
&lt;li>核心思想：“森林”的构建&lt;/li>
&lt;/ol>
&lt;p>随机森林的基础单元是&lt;strong>决策树 (Decision Tree)&lt;/strong>。一棵决策树就像一个流程图，通过一系列“是/否”的问题（例如：“年龄&amp;gt;30岁吗？”、“收入&amp;gt;5万吗？”）来对数据进行划分，最终得出一个结论。&lt;/p>
&lt;p>但是，单棵决策树很容易“过拟合”（Overfitting），即它在训练数据上表现完美，但在新的、未见过的数据上表现很差。它“死记硬背”了训练数据，而不是学习到了通用的规律。&lt;/p>
&lt;ol start="2">
&lt;li>“随机”的体现：防止过拟合的秘诀&lt;/li>
&lt;/ol>
&lt;p>随机森林通过两种随机化策略来解决单棵树过拟合的问题：&lt;/p>
&lt;p>随机性一：数据的随机（Bagging）&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Bagging&lt;/strong> (Bootstrap Aggregating) 的意思是“自助聚合抽样”。&lt;/li>
&lt;li>假设我们有1000个训练样本。随机森林在训练第1棵树时，它不会使用全部1000个样本，而是从这1000个样本中&lt;strong>随机有放回地&lt;/strong>抽取1000个样本（这意味着某些样本可能被抽中多次，某些样本可能一次也没被抽中）。&lt;/li>
&lt;li>它会训练很多棵树（比如100棵），每棵树都使用这样一份“略有不同”的随机样本集来训练。&lt;/li>
&lt;li>&lt;strong>效果：&lt;/strong> 确保了每棵树都是在不同的数据子集上训练的，增加了树之间的差异性。&lt;/li>
&lt;/ul>
&lt;p>随机性二：特征的随机（Random Feature Subspace）&lt;/p>
&lt;ul>
&lt;li>这是随机森林相比其他Bagging算法（如单独的Bagging Decision Trees）更进一步的地方。&lt;/li>
&lt;li>在训练每棵树的&lt;strong>每一个节点&lt;/strong>时，当算法需要决定“用哪个特征来划分数据”时（例如，是看“年龄”还是看“收入”？），它不会在所有特征中去寻找最优解。&lt;/li>
&lt;li>相反，它会&lt;strong>随机抽取一小部分特征&lt;/strong>（例如，总共有50个特征，它随机选出5个），然后只在这5个特征中寻找“最优”的划分点。&lt;/li>
&lt;li>&lt;strong>效果：&lt;/strong> 这种做法进一步降低了树之间的相关性。如果某个特征特别强（比如在某个数据集中，“年龄”总是最重要的），那么在不使用特征随机的情况下，森林中的很多树都会在顶部使用“年龄”来划分，导致树长得很像。而特征随机性迫使模型去探索其他“没那么强”但同样有用的特征组合。&lt;/li>
&lt;/ul>
&lt;ol start="3">
&lt;li>最终决策：森林的智慧&lt;/li>
&lt;/ol>
&lt;p>当新的数据需要被预测时，森林中的&lt;strong>所有树&lt;/strong>都会对这个数据进行一次预测：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>分类问题：&lt;/strong> 采用“&lt;strong>投票&lt;/strong>”制。例如，100棵树中，有80棵树认为这封邮件是“垃圾邮件”，20棵树认为是“正常邮件”，那么随机森林的最终结论就是“垃圾邮件”。&lt;/li>
&lt;li>&lt;strong>回归问题：&lt;/strong> 采用“&lt;strong>取平均值&lt;/strong>”。例如，预测房价，100棵树的预测值分别是 100万、101万、99万…… 随机森林的最终结论就是这些预测值的平均数。&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>👍 优点&lt;/p>
&lt;ol>
&lt;li>&lt;strong>高准确性：&lt;/strong> 通常情况下，随机森林的表现非常好，是业内最常用的“开箱即用”算法之一，因为它在多种数据集上都有很强的预测能力。&lt;/li>
&lt;li>&lt;strong>强大的抗过拟合能力：&lt;/strong> 两种“随机性”的引入，使得它很难发生过拟合。&lt;/li>
&lt;li>&lt;strong>处理高维数据：&lt;/strong> 它能处理具有非常多特征（高维度）的数据集，而且通常不需要做特征选择。&lt;/li>
&lt;li>&lt;strong>特征重要性评估：&lt;/strong> 随机森林可以评估并输出“哪个特征对预测结果最重要”，这对于业务理解和数据洞察非常有帮助。&lt;/li>
&lt;li>&lt;strong>鲁棒性强：&lt;/strong> 它对数据中的缺失值和异常值不敏感，数据预处理的压力较小。&lt;/li>
&lt;li>&lt;strong>易于并行化：&lt;/strong> 森林中的每棵树都是独立训练的，因此可以很容易地分配到不同的CPU核心或机器上并行计算，训练速度快。&lt;/li>
&lt;/ol>
&lt;p>👎 缺点&lt;/p>
&lt;ol>
&lt;li>&lt;strong>黑盒模型：&lt;/strong> 相比于单棵决策树（可以清晰地画出决策流程图），随机森林（由上百棵树组成）的决策过程非常难以解释。你很难知道它 &lt;em>为什么&lt;/em> 会做出某个具体的预测。&lt;/li>
&lt;li>&lt;strong>计算和内存开销：&lt;/strong> 当树的数量非常多（例如上千棵）时，训练和预测所需的时间和内存开销会比较大。&lt;/li>
&lt;li>&lt;strong>对某些类型数据不擅长：&lt;/strong> 对于某些极度不平衡的数据（例如，99%是A类，1%是B类），它可能表现不佳，需要特殊处理。&lt;/li>
&lt;/ol>
&lt;hr>
&lt;p>总而言之，随机森林是一种非常强大和灵活的机器学习工具，它通过“三个臭皮匠，顶个诸葛亮”的集成思想，极大地提高了模型的稳定性和准确性。&lt;/p></description></item><item><title>什么是算子？</title><link>https://www.zata.cc/p/%E4%BB%80%E4%B9%88%E6%98%AF%E7%AE%97%E5%AD%90/</link><pubDate>Sun, 30 Mar 2025 20:31:40 +0800</pubDate><guid>https://www.zata.cc/p/%E4%BB%80%E4%B9%88%E6%98%AF%E7%AE%97%E5%AD%90/</guid><description>&lt;img src="https://www.zata.cc/p/%E4%BB%80%E4%B9%88%E6%98%AF%E7%AE%97%E5%AD%90/images/index/index.png" alt="Featured image of post 什么是算子？" />&lt;p>&lt;img src="https://www.zata.cc/p/%E4%BB%80%E4%B9%88%E6%98%AF%E7%AE%97%E5%AD%90/images/index/index2.png"
width="789"
height="554"
srcset="https://www.zata.cc/p/%E4%BB%80%E4%B9%88%E6%98%AF%E7%AE%97%E5%AD%90/images/index/index2_hu12207209432348750989.png 480w, https://www.zata.cc/p/%E4%BB%80%E4%B9%88%E6%98%AF%E7%AE%97%E5%AD%90/images/index/index2_hu9006429680198437539.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="142"
data-flex-basis="341px"
>&lt;/p></description></item><item><title>字典学习（Dictionary Learning）</title><link>https://www.zata.cc/p/%E5%AD%97%E5%85%B8%E5%AD%A6%E4%B9%A0dictionary-learning/</link><pubDate>Thu, 20 Mar 2025 17:59:37 +0800</pubDate><guid>https://www.zata.cc/p/%E5%AD%97%E5%85%B8%E5%AD%A6%E4%B9%A0dictionary-learning/</guid><description>&lt;img src="https://www.zata.cc/p/%E5%AD%97%E5%85%B8%E5%AD%A6%E4%B9%A0dictionary-learning/images/index/index.png" alt="Featured image of post 字典学习（Dictionary Learning）" />&lt;p>参考：&lt;/p>
&lt;p>&lt;a class="link" href="https://en.wikipedia.org/wiki/Sparse_dictionary_learning" target="_blank" rel="noopener"
>维基百科&lt;/a>&lt;/p>
&lt;p>&lt;a class="link" href="https://www.cnblogs.com/endlesscoding/p/10090866.html" target="_blank" rel="noopener"
>博客园，似乎是讲的比较详细了&lt;/a>&lt;/p>
&lt;p>&lt;a class="link" href="https://zhuanlan.zhihu.com/p/26015351" target="_blank" rel="noopener"
>知乎&lt;/a>&lt;/p>
&lt;h3 id="前言">前言
&lt;/h3>&lt;p>在中文网络中，“字典学习”是关于这个概念最直接且最常见的翻译，但是我认为，实际上这个翻译是不合适的，我认为“稀疏编码” 才更加符合这个概念。&lt;/p>
&lt;p>因为实际上人们更加关心的实际上是将原本的数据进行压缩，整个过程符合稀疏编码的概念，而字典是在整个压缩过程中所产生的产品。&lt;/p>
&lt;h3 id="第一部分背景知识">&lt;strong>第一部分：背景知识&lt;/strong>
&lt;/h3>&lt;h4 id="11-信号处理的起源">&lt;strong>1.1 信号处理的起源&lt;/strong>
&lt;/h4>&lt;p>字典学习的根源可以追溯到信号处理领域。信号处理的目标是从复杂的信号（如音频、图像、视频）中提取有意义的信息。20世纪中期，傅里叶变换（Fourier Transform）和小波变换（Wavelet Transform）成为信号分析的主流工具：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>傅里叶变换&lt;/strong>：将信号分解为不同频率的正弦波和余弦波的组合。&lt;/li>
&lt;li>&lt;strong>小波变换&lt;/strong>：在傅里叶变换基础上增加了时间局部性，适合分析非平稳信号。&lt;/li>
&lt;/ul>
&lt;p>然而，这些方法依赖于预定义的基函数（比如正弦波、小波），对某些复杂信号的表示能力有限。比如，图像中的边缘特征或音频中的瞬态变化可能无法被这些固定基函数很好地捕捉。这就引出了一个问题：能不能从数据本身学习一组更适合的基函数？&lt;/p>
&lt;h4 id="12-稀疏表示的兴起">&lt;strong>1.2 稀疏表示的兴起&lt;/strong>
&lt;/h4>&lt;p>20世纪90年代，稀疏表示（Sparse Representation）开始受到关注。稀疏表示的核心思想是：许多自然信号可以用少量基向量的线性组合来表示。这种思想受到以下启发：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>生物学&lt;/strong>：人类视觉系统（比如V1皮层）倾向于用稀疏的方式编码信息。例如，神经元对特定方向的边缘响应，而对其他方向不响应。&lt;/li>
&lt;li>&lt;strong>压缩感知（Compressed Sensing）&lt;/strong>：Donoho 和 Candès 等人在2000年代证明，如果信号是稀疏的，可以通过少量测量精确重构信号。&lt;/li>
&lt;/ul>
&lt;p>稀疏表示需要一个“字典”（Dictionary），传统方法（如傅里叶基、小波基）使用固定字典，但这些字典并非对所有信号都最优。于是，研究者开始探索从数据中自适应学习字典的可能性。&lt;/p>
&lt;h4 id="13-机器学习与特征提取">&lt;strong>1.3 机器学习与特征提取&lt;/strong>
&lt;/h4>&lt;p>与此同时，机器学习领域也在快速发展。20世纪末，特征提取成为模式识别和数据分析的关键问题。传统的特征提取方法（如主成分分析 PCA）虽然有效，但有局限性：&lt;/p>
&lt;ul>
&lt;li>PCA 是线性方法，假设数据服从高斯分布。&lt;/li>
&lt;li>PCA 的基向量是全局的，无法捕捉局部特征。&lt;/li>
&lt;/ul>
&lt;p>字典学习应运而生，它结合了稀疏表示和自适应学习的优势，成为一种强大的特征提取工具。与 PCA 不同，字典学习不要求基向量正交，且可以通过过完备字典（原子数大于数据维度）捕捉更多样化的模式。&lt;/p>
&lt;h4 id="14-历史里程碑">&lt;strong>1.4 历史里程碑&lt;/strong>
&lt;/h4>&lt;ul>
&lt;li>&lt;strong>1996年，Olshausen 和 Field&lt;/strong>：提出了稀疏编码的概念，首次尝试从自然图像中学习字典，模拟人类视觉系统。&lt;/li>
&lt;li>&lt;strong>2006年，K-SVD 算法&lt;/strong>：Aharon 等人提出了 K-SVD，一种高效的字典学习算法，结合了 K-Means 和奇异值分解（SVD），成为经典方法。&lt;/li>
&lt;li>&lt;strong>2000年代后期，压缩感知&lt;/strong>：字典学习与压缩感知结合，推动了其在信号恢复中的应用。&lt;/li>
&lt;li>&lt;strong>2010年代，深度学习&lt;/strong>：卷积稀疏编码和字典学习的思想被融入深度神经网络，进一步扩展了其影响力。&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="第二部分理论基础">&lt;strong>第二部分：理论基础&lt;/strong>
&lt;/h3>&lt;h4 id="21-线性代数视角">&lt;strong>2.1 线性代数视角&lt;/strong>
&lt;/h4>\[ X \approx D A \]&lt;ul>
&lt;li>如果 \( k = m \) 且 \( D \) 可逆，这类似于 PCA 或 ICA（独立成分分析）。&lt;/li>
&lt;li>如果 \( k > m \)，字典是过完备的（Overcomplete），允许更灵活的表示，但增加了求解难度。&lt;/li>
&lt;/ul>
&lt;h4 id="22-稀疏性与-l1-正则化">&lt;strong>2.2 稀疏性与 L1 正则化&lt;/strong>
&lt;/h4>\[ \min_a \| x - D a \|_2^2 \]\[ \min_a \| x - D a \|_2^2 + \lambda \| a \|_1 \]&lt;p>
L1 范数（\( \| a \|_1 = \sum |a_i| \)）相比 L2 范数（\( \| a \|_2^2 = \sum a_i^2 \)）更倾向于产生零值解，这是稀疏性的来源。&lt;/p>
&lt;h4 id="23-过完备字典的优势">&lt;strong>2.3 过完备字典的优势&lt;/strong>
&lt;/h4>&lt;p>过完备字典（\( k > m \)）相比完备字典（\( k = m \)）有以下优势：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>表达能力强&lt;/strong>：可以表示更复杂的模式。&lt;/li>
&lt;li>&lt;strong>鲁棒性&lt;/strong>：对噪声和数据缺失更具容忍度。&lt;/li>
&lt;li>&lt;strong>稀疏性&lt;/strong>：允许用更少的原子组合表示信号。&lt;/li>
&lt;/ul>
&lt;p>但缺点是计算复杂度增加，且优化问题变得非凸（Non-convex），需要迭代求解。&lt;/p>
&lt;h4 id="24-与其他方法的对比">&lt;strong>2.4 与其他方法的对比&lt;/strong>
&lt;/h4>&lt;ul>
&lt;li>&lt;strong>PCA&lt;/strong>：字典正交，重构误差最小，但不稀疏。&lt;/li>
&lt;li>&lt;strong>NMF（非负矩阵分解）&lt;/strong>：字典和系数非负，适合特定数据（如图像光谱），但不一定稀疏。&lt;/li>
&lt;li>&lt;strong>小波变换&lt;/strong>：固定字典，计算效率高，但缺乏自适应性。&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="第三部分更详细的数学推导">&lt;strong>第三部分：更详细的数学推导&lt;/strong>
&lt;/h3>&lt;h4 id="31-目标函数">&lt;strong>3.1 目标函数&lt;/strong>
&lt;/h4>\[ \min_{D, A} \| X - D A \|_F^2 + \lambda \sum_{i=1}^n \| a_i \|_1 \]&lt;p>
其中：&lt;/p>
&lt;ul>
&lt;li>\( \| X - D A \|_F^2 = \sum_{i,j} (X_{ij} - (D A)_{ij})^2 \) 是 Frobenius 范数。&lt;/li>
&lt;li>\( \sum_{i=1}^n \| a_i \|_1 \) 是稀疏惩罚项。&lt;/li>
&lt;/ul>
&lt;h4 id="32-稀疏编码推导">&lt;strong>3.2 稀疏编码推导&lt;/strong>
&lt;/h4>\[ \min_{a_i} \| x_i - D a_i \|_2^2 + \lambda \| a_i \|_1 \]&lt;p>
这是一个凸优化问题。我们可以用近端梯度下降（Proximal Gradient Descent）：&lt;/p>
&lt;ol>
&lt;li>定义损失函数 \( f(a_i) = \| x_i - D a_i \|_2^2 \) 和正则项 \( g(a_i) = \lambda \| a_i \|_1 \)。&lt;/li>
&lt;li>梯度：\( \nabla f(a_i) = 2 D^T (D a_i - x_i) \)。&lt;/li>
&lt;li>近端算子：对 \( g(a_i) \) 的近端映射是软阈值（Soft Thresholding）：
\[ \text{prox}_{\lambda}(z) = \text{sign}(z) \max(|z| - \lambda, 0) \]&lt;/li>
&lt;li>迭代更新：\( a_i^{t+1} = \text{prox}_{\lambda} (a_i^t - \eta \nabla f(a_i^t)) \)。&lt;/li>
&lt;/ol>
&lt;h4 id="33-字典更新推导">&lt;strong>3.3 字典更新推导&lt;/strong>
&lt;/h4>\[ \min_D \| X - D A \|_F^2 \]\[ \frac{\partial}{\partial D} \| X - D A \|_F^2 = -2 (X - D A) A^T \]\[ D = X A^T (A A^T)^{-1} \]&lt;p>
但为了避免 \( D \) 的列范数过大，通常加入约束 \( \| d_j \|_2 \leq 1 \)，需要投影到约束集。&lt;/p>
&lt;h4 id="34-k-svd-的细节">&lt;strong>3.4 K-SVD 的细节&lt;/strong>
&lt;/h4>&lt;p>K-SVD 改进了字典更新步骤：&lt;/p>
&lt;ol>
&lt;li>对每个原子 \( d_j \) 和对应的系数行 \( a^j \) 单独更新。&lt;/li>
&lt;li>计算残差 \( E_j = X - \sum_{k \neq j} d_k a^k \)。&lt;/li>
&lt;li>对 \( E_j \) 做 SVD 分解，更新 \( d_j \) 和 \( a^j \)。&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h3 id="第四部分更详细的实现k-svd-示例">&lt;strong>第四部分：更详细的实现（K-SVD 示例）&lt;/strong>
&lt;/h3>&lt;p>以下是一个手写 K-SVD 的简版实现，帮助你理解其内部机制：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">omp&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">X&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">D&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">sparsity&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;正交匹配追踪求稀疏系数&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n_samples&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n_features&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">X&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">shape&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">k&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">D&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">shape&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">A&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">zeros&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="n">k&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n_samples&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_samples&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">x&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">X&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">residual&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">copy&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">support&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">_&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">sparsity&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">scores&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">abs&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">D&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">T&lt;/span> &lt;span class="o">@&lt;/span> &lt;span class="n">residual&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">support&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">idx&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">argmax&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">scores&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">idx&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">argmax&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">scores&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">array&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">support&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">dtype&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">)))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">support&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">idx&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">D_s&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">D&lt;/span>&lt;span class="p">[:,&lt;/span> &lt;span class="n">support&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">a_s&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">linalg&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pinv&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">D_s&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">@&lt;/span> &lt;span class="n">x&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">residual&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">x&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">D_s&lt;/span> &lt;span class="o">@&lt;/span> &lt;span class="n">a_s&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">A&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">support&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">a_s&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">A&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">k_svd&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">X&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n_atoms&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">sparsity&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n_iter&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;K-SVD 算法&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n_features&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n_samples&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">X&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">shape&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">D&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">random&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">randn&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_features&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n_atoms&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">D&lt;/span> &lt;span class="o">/=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">linalg&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">norm&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">D&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">axis&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># 归一化&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">iteration&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_iter&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 稀疏编码&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">A&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">omp&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">X&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">D&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">sparsity&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 字典更新&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">j&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_atoms&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">I&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">A&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">j&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">:]&lt;/span> &lt;span class="o">!=&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sum&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">I&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">continue&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">E_j&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">X&lt;/span>&lt;span class="p">[:,&lt;/span> &lt;span class="n">I&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">D&lt;/span> &lt;span class="o">@&lt;/span> &lt;span class="n">A&lt;/span>&lt;span class="p">[:,&lt;/span> &lt;span class="n">I&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">outer&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">D&lt;/span>&lt;span class="p">[:,&lt;/span> &lt;span class="n">j&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="n">A&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">j&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">I&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">s&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">Vt&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">linalg&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">svd&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">E_j&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">full_matrices&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">False&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">D&lt;/span>&lt;span class="p">[:,&lt;/span> &lt;span class="n">j&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">U&lt;/span>&lt;span class="p">[:,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">A&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">j&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">I&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">s&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">Vt&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">D&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">A&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 测试&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">X&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">random&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">randn&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">20&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">100&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># 20维，100个样本&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">D&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">A&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">k_svd&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">X&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n_atoms&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">30&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">sparsity&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">5&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n_iter&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">10&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">X_reconstructed&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">D&lt;/span> &lt;span class="o">@&lt;/span> &lt;span class="n">A&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">error&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">mean&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="n">X&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">X_reconstructed&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">**&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;重构误差: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">error&lt;/span>&lt;span class="si">:&lt;/span>&lt;span class="s2">.4f&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="代码解释">&lt;strong>代码解释&lt;/strong>
&lt;/h4>&lt;ul>
&lt;li>&lt;strong>OMP&lt;/strong>：实现正交匹配追踪，逐步选择字典原子。&lt;/li>
&lt;li>&lt;strong>K-SVD&lt;/strong>：交替进行稀疏编码和字典更新。&lt;/li>
&lt;li>&lt;strong>归一化&lt;/strong>：确保字典原子单位长度。&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="第五部分更广泛的背景与展望">&lt;strong>第五部分：更广泛的背景与展望&lt;/strong>
&lt;/h3>&lt;h4 id="51-跨学科联系">&lt;strong>5.1 跨学科联系&lt;/strong>
&lt;/h4>&lt;ul>
&lt;li>&lt;strong>神经科学&lt;/strong>：字典学习与大脑的稀疏编码机制有相似之处。&lt;/li>
&lt;li>&lt;strong>物理学&lt;/strong>：在量子信息和稀疏恢复中有潜在应用。&lt;/li>
&lt;li>&lt;strong>计算机视觉&lt;/strong>：用于目标检测、图像超分辨率等。&lt;/li>
&lt;/ul>
&lt;h4 id="52-当前挑战">&lt;strong>5.2 当前挑战&lt;/strong>
&lt;/h4>&lt;ul>
&lt;li>&lt;strong>计算复杂度&lt;/strong>：大数据下的字典学习仍需优化。&lt;/li>
&lt;li>&lt;strong>非凸性&lt;/strong>：全局最优解难以保证。&lt;/li>
&lt;li>&lt;strong>可解释性&lt;/strong>：学到的字典如何与物理意义对应？&lt;/li>
&lt;/ul>
&lt;h4 id="53-未来方向">&lt;strong>5.3 未来方向&lt;/strong>
&lt;/h4>&lt;ul>
&lt;li>与深度学习的融合（如卷积字典学习）。&lt;/li>
&lt;li>在线学习和分布式计算的应用。&lt;/li>
&lt;li>多模态数据的字典学习。&lt;/li>
&lt;/ul>
&lt;hr></description></item><item><title>对比了几种大模型在相同任务下的表现</title><link>https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/</link><pubDate>Thu, 06 Mar 2025 15:11:55 +0800</pubDate><guid>https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/</guid><description>&lt;img src="https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index.png" alt="Featured image of post 对比了几种大模型在相同任务下的表现" />&lt;p>&lt;code>每个模型我试了多次，然后取比较好的，当然可能也和提示词有关！！！&lt;/code>&lt;/p>
&lt;h2 id="内容梳理任务">内容梳理任务
&lt;/h2>&lt;h3 id="总结文档的内容-1">总结文档的内容-1
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">Summarize the content from the following websites:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">https://www.zhihu.com/hot: 知乎 - 有问题，就会有答案打开知乎App在「我的页」右上角打开扫一扫其他扫码方式：微信下载知乎App开通机构号无障碍模式 验证码登录密码登录获取短信验证码获取语音验证码登录/注册其他方式登录未注册手机验证后自动登录，注册即代表同意《知乎协议》《隐私保护指引》知乎专栏圆桌发现移动应用联系我们来知乎工作注册机构号Investor Relations© 2025 知乎京 ICP 证 110745 号京 ICP 备 13052560 号 - 1京公网安备 11010802020088 号京网文[2022]2674-081 号出版物经营许可证药品医疗器械网络信息服务备案（京）网药械信息备字（2022）第00334号广播电视节目制作经营许可证:（京）字第06591号互联网宗教 信息服务许可证：京（2022）0000078侵权举报网上有害信息举报专区儿童色情信息举报专区互联网算法推荐举报专区违法和不良信息举报：010-82716601举报邮箱：jubao@zhihu.com
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">https://www.aibase.com/zh/daily : AI日报 - 每天三分钟关注AI行业趋势_AIbase zh AI产品榜 每月不到10元，就可以无限制地访问最好的AIbase。立即成为会员 首 页 AI资讯 AI日报 变现指南 AI教程 AI工具导航 AI产品库zh AI产品榜 3月5号 AI 日报AI日报：抖音测试接入豆包AI；即梦接入DeepSeek支持智能提示词生成；Grok语 音模式全面开放查看日报 包含 10 个AI热点话题内容1、AI思维导图神器 MindMapper ：扔个链接就能生成交互式思维导图2、​全新技术 Fast3R ：实现千张图片一键3DD 重建，速度惊人!3、强强联合！即梦接入DeepSeek 从提示词到绘画一步到位4、抖音打通豆包AI，字节跳动开启超级AI生态战略5、Grok 语音模式全面开放：11 种模式 上线，自带字幕成英语学习利器6、爱诗科技完成A5轮融资，剑指AI视频生成领域新高地7、微软开源图片模型ART，可生成多图层透明图片8、音乐创作领域投下核弹！DiffRhythm 炸裂问世：10 秒 AI 神曲，人声伴奏一键搞定！9、vivo重组调整，成立新AI部门并将大模型训练转向端侧10、雷军亮相首场代表通道：小米将把最新的AI技术 应用到各个终端上往期日报~3月4号 AI 日报AI日报：可生成汉字！智谱开源文生图模型CogView4；大模型工具Ollama存在严重漏洞；腾讯元宝下载量超DeepSeek 包含 13 个AI热点话题内容查看日报1、智谱发布首个能生成汉字的开源文生图模型CogView42、超强视频生成模型 Wan2.1 GP：低配GPU也能搞定大片！3、颠覆城市建模！AI生 成3D城市模型GaussianCity，生成速度提升 60 倍！4、火山引擎宣布大模型应用开源：上线“大模型应用实验室”，释放 AI 创新潜力5、雷军两会建议：建议加强“AI换脸拟声”违法侵权重灾区治理6、雷军2025两会建议：聚焦人工智能终端与AI换脸拟声治理7、警惕安全隐患！Ollama 大模型工具被指存在严重漏洞8、从编码到创意写作 xAI Grok-3 击败 GPT4.5全能登顶大模型竞技场3月3号 AI 日报AI日报：字节AI编程工具Trae国内版发布；天价AI域名ai.com挂牌1亿美元；星火深度推理大模型X1全面升级 包含 13 个AI热点话题内容查看日报1、科大讯飞宣布完成星火深度推理大模型X1全面升级2、百度文库、百度网盘AI创作新物种「自由画布」全量上线3、中国2025一季 度人工智能现状分析：摆脱“学生”标签，从追赶者到竞争者4、Flora推出AI驱动的“无限画布”工具，专为创意专业人士打造5、字节跳动AI编程产品Trae国内版发布 配置 豆包1.5pro、满血版DeepSeek模型6、荣耀 CEO 李健发布阿尔法计划：未来5年投100亿美元打造 AI 生态！7、超越DeepSeek-R1！阿里万相大模型登上全球开源榜首8、天价域名再现：ai.com挂牌1亿美元，或成史上最贵域名交2月28号 AI 日报AI日报：OpenAI最大最贵模型GPT-4.5发布；百度文心大模型4.5上线定档3月16日；字节AI编程工具Trae集成Claude 3.7 包含 13 个AI热点话题内容查看日报1、百度网盘与百度文库全量上线DeepSeek-R1满血版 前者将于3月改版2、免费试用！Krea推出 Wan 2.1模型：动态效果惊艳 可理解复杂提示3、转战 AI 课程直播！​“嘎子哥”谢孟伟开卖DeepSeek课程4、荣耀与阿里在AI领域展开合作 千问、万相等已接入YOYO智能体5、百度文 心大模型4.5将于3月16日发布 具备原生多模态、深度思考等能力6、华为AI助手小艺网页版上线 支持问答、写作、编程等7、文生图模型Ideogram 2a 震撼发布：速度翻 倍、成本减半，英文排版媲美人类设计8、DeepSeek开源周第五天：6.6TiB/s炸场！3FS重新定义AI存储基建2月27号 AI 日报AI日报：阿里春招3000岗位AI相关占50%；DeepSeek开源DualPipe与EPLB技术；字节豆包APP推“照片动起来”功能 包含 18 个AI热点话题内容查看日报1、腾讯混元新一代快思考模型 Turbo S 发布 即将在腾讯元宝中上线2、百度文心4.5或将在3月中旬发布 提升推理及多模态能力3、​Anthropic 开放 Claude AI GitHub 集成，助力开发者代码效率4、快手可灵AI 1月全球访问用户环 比增长113%5、Adobe推出Photoshop iOS版本，提供丰富免费功能与无缝跨设备体验6、B站文本转语音模型IndexTTS ：支持拼音纠正汉字发音、精准控制停顿7、阿里启动2026届春招，开放3000岗位AI相关占近50%8、字节跳动AI智能助手豆包APP推出“照片动起来”功能2月26号 AI 日报AI日报：阿里开源文生视频模型万相2.1；幻方量化回应DeepSeek-R2模型提前发布；百度“秒哒”开启用户邀测 包含 16 个AI热点话题内容查看日报1、OpenAI向免费用户推出基于GPT-4o mini的高级语音模式2、支持联网搜索！OPPO ColorOS接入满血版DeepSeek-R13、谷歌超低价AI模型Gemini 2.0 Flash-Lite正式上线 4、OpenAI免费开放ChatGPT高级语音聊天模式 基于GPT-4o mini5、萌翻全网！AI“魔法”让校园地标秒变毛绒玩偶，创意特效火爆出圈！6、报道称字节跳动旗下AI产品 “即梦” 考虑接入 DeepSeek7、AI料理 “神还原” 引爆全网 网友：8888元卖给 上海人！8、阿里全面开源文生视频模型万相2.1：14B和1.3B双版本上线2月25号 AI 日报AI日报：全球首个混合推理模型Claude 3.7 Sonnet发布；阿里开源推理模型QwQ ；DeepSeek平台API充值服务恢复 包含 12 个AI热点话题内容查看日报1、谷歌推出免费AI代码助手Gemini Code Assist ：每月提供18万次代码补全2、DeepSeek开放平 台API充值服务已正式恢复3、百度教育「拍照搜题」、「AI写作文」接入DeepSeek-R1模型4、京东零售技术发布京点点AIGC内容生成平台 一键生成商品图、营销文案5、 拼多多组建电商推荐大模型团队：负责人年薪数倍于百度时期，内部推行赛马机制6、商汤小浣熊家族全面升级：多模态融合 10秒钟即可复刻网页7、DeepSeek开源周第二日：首个面向MoE模型的开源EP通信库8、​ChatGPT新增Safari扩展功能，可设置为Safari浏览器地址栏默认搜索引擎2月24号 AI 日报AI日报：DeepSeek开源大模型加速 器FlashMLA；海螺AI推I2V-01-Director模型；Pixverse V4.0支持同步音效与转绘功能 包含 13 个AI热点话题内容查看日报1、百度APP全面焕新：上线AI入口 DeepseekR1深度搜索不卡顿2、海螺AI解锁全新“导演”模式：I2V-01-Director模型向所有人开放3、1x发布家庭机器人NEO Gamma：能冲咖啡、洗衣和吸尘等4、DeepSeek 开源周首日 ：发布大模型加速利器FlashMLA 解码性能飙升至3000GB/s5、Grok 3上线实时语音功能 一共支持10种模式 6、LiblibAI哩布哩布AI宣布再获数亿元融资 一年内连续完成 四轮融资7、融资速度“开挂”！LiblibAI再获数亿投资，一年连融四轮 领跑 AI 应用赛道8、Meta AI 发布新型视频学习模型V-JEPA ：视频理解新突破2月21号 AI 日报AI日报：给力！DeepSeek下周将开源五个项目；阿里通义万相将开源视频生成模型WanX 2.1；ChatGPT周活跃用户突破4亿 包含 15 个AI热点话题内容查看日报1、网信办发布2025年“清朗”系列专项行动 整治AI技术滥用乱象2、​小红书将接入DeepSeek，AI 搜索产品“点点” 内测深度思考功能3、腾讯文档接入DeepSeek 上线PPT直出、周报神 器、文献速读功能4、DeepSeek App 上线一个月下载量突破 1 亿5、扣子Coze宣布独家支持 DeepSeek Function Calling 工具调用能力6、超给力！DeepSeek 宣布下周开源五个项目7、Figure推出新型智能模型 Helix，让人形机器人接受语音命令做家务8、Midjourney 网站新增多项组织功能，提升用户体验2月20号 AI 日报AI日报：腾讯 深度思考模型“混元T1”全面开放；字节跳动全新视频生成工具Phantom；苹果智能将于4月初支持简体中文 包含 12 个AI热点话题内容查看日报1、xAI称已面向所有用户 免费提供 Grok3 直到他们服务器崩溃2、谷歌发布全新视觉语言模型 PaliGemma 2 Mix 集成多种功能助力开发者3、NVIDIA和Arc研究所联合发布全球最大生物学 AI 模型 Evo2，助力基因组研究与设计4、Mistral的AI助手Le Chat两周内下载量突破百万5、警惕！马斯克的新AI模型Grok 3被曝存在严重安全漏洞，黑客可轻松操控！6、​Xboxx推新生成AI模型Muse,助力游戏开发者高效创建游戏元素7、微软团队推多模态AI模型Magma：整合视觉、语言和动作决策技能8、​Rabbit展示新AI代理能力：从下载游戏 到自动管理购物清单
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Task:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;URL&amp;gt;: &amp;lt;保留原本的内容，但是更有利于阅读，总结&amp;gt;. ...
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>模型效果&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Qwen ☆☆☆☆☆&lt;/li>
&lt;li>Grok ☆☆☆☆☆&lt;/li>
&lt;li>Deepseek ☆☆&lt;/li>
&lt;li>ChatGLM ☆&lt;/li>
&lt;/ul>
&lt;h4 id="qwen25-max-">Qwen2.5-max ☆☆☆☆☆
&lt;/h4>&lt;p>&lt;img src="https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-1.png"
width="1078"
height="2524"
srcset="https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-1_hu6152397313497818675.png 480w, https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-1_hu8127081967247254462.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="42"
data-flex-basis="102px"
>&lt;/p>
&lt;h4 id="grok3-">Grok3 ☆☆☆☆☆
&lt;/h4>&lt;p>&lt;img src="https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-2.png"
width="923"
height="1498"
srcset="https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-2_hu8510705812572543949.png 480w, https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-2_hu17230258792404041778.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="61"
data-flex-basis="147px"
>&lt;/p>
&lt;h4 id="deepseek-v3-">DeepSeek-V3 ☆☆
&lt;/h4>&lt;p>&lt;img src="https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-4.png"
width="891"
height="889"
srcset="https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-4_hu5369825730596627333.png 480w, https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-4_hu8149871076561849693.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h4 id="chatglm-plus-">ChatGLM-plus ☆
&lt;/h4>&lt;p>&lt;img src="https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-3.png"
width="911"
height="307"
srcset="https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-3_hu9201263964769619040.png 480w, https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-3_hu16061482419243742038.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="296"
data-flex-basis="712px"
>&lt;/p>
&lt;h3 id="总结文档的内容-2-检查是否更新">总结文档的内容-2 （检查是否更新
&lt;/h3>&lt;p>&lt;strong>模型效果&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>qwq-32b ☆☆☆☆☆&lt;/li>
&lt;li>Grok ☆☆☆☆☆&lt;/li>
&lt;li>Deepseek ☆☆&lt;/li>
&lt;li>ChatGLM ☆&lt;/li>
&lt;/ul>
&lt;p>&lt;span style="color:red"> 这里我给出一个实际上没有更新的内容，最好应该就是返回没有更新 &lt;/span>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">你是一个订阅号运营专家，可以根据差异内容总结出订阅内容的更新情况，请对以下内容差异进行总结：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;[&amp;#34;&amp;#34;Changed: &amp;#39;53 分钟&amp;#39; -&amp;gt; &amp;#39;1 小时&amp;#39;&amp;#34;&amp;#34;, &amp;#34;&amp;#34;Changed: &amp;#39;1&amp;#39; -&amp;gt; &amp;#39;2&amp;#39;&amp;#34;&amp;#34;, &amp;#34;&amp;#34;Changed: &amp;#39;3&amp;#39; -&amp;gt; &amp;#39;4&amp;#39;&amp;#34;&amp;#34;, &amp;#34;&amp;#34;Changed: &amp;#39;3&amp;#39; -&amp;gt; &amp;#39;4&amp;#39;&amp;#34;&amp;#34;, &amp;#34;&amp;#34;Changed: &amp;#39;4&amp;#39; -&amp;gt; &amp;#39;5&amp;#39;&amp;#34;&amp;#34;, &amp;#34;&amp;#34;Changed: &amp;#39;4&amp;#39; -&amp;gt; &amp;#39;5&amp;#39;&amp;#34;&amp;#34;]&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 注意，有些内容的可能仅仅是时间或者数据的变化，这样的内容更新是不需要总结的，可以看作没有更新，返回空数组
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 要求：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 1. 提供简洁的内容更新概要
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 2. 提取关键点
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 3. 计算内容的列表长度
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 返回结果使用中文,如果内容更新或者没有关键点，请返回空数组。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 请根据以上要求，总结出订阅内容的更新情况，并返回结果。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 返回格式json（请严格按照以下格式返回）：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;summary&amp;#34;: {{
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;content&amp;#34;: [],
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;key_points&amp;#34;: [],
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;word_count&amp;#34;: 0,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;generated_at&amp;#34;: &amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }},
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;&amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="qwq-32b-">qwq-32b ☆☆☆☆☆
&lt;/h4>&lt;p>非常可以，只返回了json，没有一点多余的内容&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-5.png"
width="370"
height="240"
srcset="https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-5_hu12128349948813418695.png 480w, https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-5_hu7737725446969878513.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="154"
data-flex-basis="370px"
>&lt;/p>
&lt;h4 id="grok3--1">Grok3 ☆☆☆☆
&lt;/h4>&lt;p>也非常可以，对了，但是比起qwq-32b ，还是没有做到：只返回json&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-6.png"
width="827"
height="881"
srcset="https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-6_hu12477414393771626373.png 480w, https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-6_hu8893536766018933659.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="93"
data-flex-basis="225px"
>&lt;/p>
&lt;h3 id="按照要求输出内容-1">按照要求输出内容-1
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="err">from&lt;/span> &lt;span class="err">datetime&lt;/span> &lt;span class="err">import&lt;/span> &lt;span class="err">datetime&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">import&lt;/span> &lt;span class="err">time&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">from&lt;/span> &lt;span class="err">langchain_core.prompts&lt;/span> &lt;span class="err">import&lt;/span> &lt;span class="err">PromptTemplate&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">from&lt;/span> &lt;span class="err">langchain_core.output_parsers&lt;/span> &lt;span class="err">import&lt;/span> &lt;span class="err">PydanticOutputParser&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">import&lt;/span> &lt;span class="err">json&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">import&lt;/span> &lt;span class="err">re&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">from&lt;/span> &lt;span class="err">pydantic&lt;/span> &lt;span class="err">import&lt;/span> &lt;span class="err">BaseModel,&lt;/span> &lt;span class="err">Field&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">from&lt;/span> &lt;span class="err">typing&lt;/span> &lt;span class="err">import&lt;/span> &lt;span class="err">List,&lt;/span> &lt;span class="err">Optional&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">#&lt;/span> &lt;span class="err">假设的&lt;/span> &lt;span class="err">LLM&lt;/span> &lt;span class="err">获取函数（需要根据你的实际环境调整）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">from&lt;/span> &lt;span class="err">src.agent.llm&lt;/span> &lt;span class="err">import&lt;/span> &lt;span class="err">get_ali_llm&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">#&lt;/span> &lt;span class="err">定义&lt;/span> &lt;span class="err">Pydantic&lt;/span> &lt;span class="err">模型用于输出解析&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">class&lt;/span> &lt;span class="err">SummaryResponse(BaseModel):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">content:&lt;/span> &lt;span class="err">List&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="err">str&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">Field(default_factory=list,&lt;/span> &lt;span class="err">description=&lt;/span>&lt;span class="s2">&amp;#34;内容更新概要&amp;#34;&lt;/span>&lt;span class="err">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">key_points:&lt;/span> &lt;span class="err">List&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="err">str&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">Field(default_factory=list,&lt;/span> &lt;span class="err">description=&lt;/span>&lt;span class="s2">&amp;#34;关键点列表&amp;#34;&lt;/span>&lt;span class="err">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">word_count:&lt;/span> &lt;span class="err">int&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">Field(default=&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="err">,&lt;/span> &lt;span class="err">description=&lt;/span>&lt;span class="s2">&amp;#34;内容字数统计&amp;#34;&lt;/span>&lt;span class="err">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">generated_at:&lt;/span> &lt;span class="err">str&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">Field(default=&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="err">,&lt;/span> &lt;span class="err">description=&lt;/span>&lt;span class="s2">&amp;#34;生成时间&amp;#34;&lt;/span>&lt;span class="err">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">status:&lt;/span> &lt;span class="err">str&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">Field(default=&lt;/span>&lt;span class="s2">&amp;#34;success&amp;#34;&lt;/span>&lt;span class="err">,&lt;/span> &lt;span class="err">description=&lt;/span>&lt;span class="s2">&amp;#34;处理状态&amp;#34;&lt;/span>&lt;span class="err">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">error_message:&lt;/span> &lt;span class="err">Optional&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="err">str&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">Field(default=None,&lt;/span> &lt;span class="err">description=&lt;/span>&lt;span class="s2">&amp;#34;错误信息&amp;#34;&lt;/span>&lt;span class="err">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">raw_response:&lt;/span> &lt;span class="err">Optional&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="err">str&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">Field(default=None,&lt;/span> &lt;span class="err">description=&lt;/span>&lt;span class="s2">&amp;#34;原始响应&amp;#34;&lt;/span>&lt;span class="err">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">class&lt;/span> &lt;span class="err">SubscriptionAgent:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">def&lt;/span> &lt;span class="err">__init__(self,&lt;/span> &lt;span class="err">llm_model=None,&lt;/span> &lt;span class="err">max_retries=&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="err">,&lt;/span> &lt;span class="err">retry_delay=&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="err">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">#&lt;/span> &lt;span class="err">初始化&lt;/span> &lt;span class="err">LLM，如果没有传入特定模型，使用默认配置&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">self.llm&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">llm_model&lt;/span> &lt;span class="err">if&lt;/span> &lt;span class="err">llm_model&lt;/span> &lt;span class="err">else&lt;/span> &lt;span class="err">get_ali_llm(&lt;/span>&lt;span class="s2">&amp;#34;qwen-7b-chat&amp;#34;&lt;/span>&lt;span class="err">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">self.max_retries&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">max_retries&lt;/span> &lt;span class="err">#&lt;/span> &lt;span class="err">最大重试次数&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">self.retry_delay&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">retry_delay&lt;/span> &lt;span class="err">#&lt;/span> &lt;span class="err">重试间隔时间（秒）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">#&lt;/span> &lt;span class="err">定义&lt;/span> &lt;span class="err">Pydantic&lt;/span> &lt;span class="err">输出解析器&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">self.parser&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">PydanticOutputParser(pydantic_object=SummaryResponse)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">#&lt;/span> &lt;span class="err">定义提示模板，进一步优化以确保提取&lt;/span> &lt;span class="err">key_points&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">self.prompt_template&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">PromptTemplate(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">input_variables=&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;contentdiff&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">partial_variables=&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;format_instructions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="err">self.parser.get_format_instructions()&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">template=&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> 你是一个订阅号运营专家，可以根据差异内容总结出订阅内容的更新情况。请对以下内容差异进行总结：
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> {contentdiff}
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> ###注意，有些内容的可能仅仅是时间或者数据的变化，这样的内容更新是不需要总结的，可以看作没有更新，返回空数组
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> ###要求：
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> 1. 提供内容更新概要（content），用数组形式返回。
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> 2. 提取每个内容的关键点（key_points），每个关键点应简洁且突出重点。
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> 3. content和key_points的列表长度应当一致，也就是他们是一一对应关系
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> 4. 计算 content 字段的总字数（仅统计中文和英文字符，不包括标点和空格）。
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> 5. 返回结果使用中文，如果没有实质性更新或关键点，返回空数组。
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> 6. 严格按照以下 JSON 格式返回结果，不添加任何多余的说明文字或注释：
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> {format_instructions}
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> &amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">def&lt;/span> &lt;span class="err">extract_json(self,&lt;/span> &lt;span class="err">raw_content:&lt;/span> &lt;span class="err">str)&lt;/span> &lt;span class="err">-&amp;gt;&lt;/span> &lt;span class="err">str:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;从原始响应中提取 JSON 字符串&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">json_match&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">re.search(r&amp;#39;\&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="err">.*\&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="err">&amp;#39;,&lt;/span> &lt;span class="err">raw_content,&lt;/span> &lt;span class="err">re.DOTALL)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">return&lt;/span> &lt;span class="err">json_match.group(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="err">)&lt;/span> &lt;span class="err">if&lt;/span> &lt;span class="err">json_match&lt;/span> &lt;span class="err">else&lt;/span> &lt;span class="err">raw_content&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">def&lt;/span> &lt;span class="err">generate_summary(self,&lt;/span> &lt;span class="err">contentdiff:&lt;/span> &lt;span class="err">str)&lt;/span> &lt;span class="err">-&amp;gt;&lt;/span> &lt;span class="err">SummaryResponse:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> 生成 summary 的主函数
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> 参数:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> contentdiff: 输入的内容差异文本
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> 返回:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> SummaryResponse: 包含摘要内容的 Pydantic 模型
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> &amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">retries&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">last_exception&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">None&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">raw_response&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">None&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">while&lt;/span> &lt;span class="err">retries&lt;/span> &lt;span class="err">&amp;lt;&lt;/span> &lt;span class="err">self.max_retries:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">try:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">#&lt;/span> &lt;span class="err">执行&lt;/span> &lt;span class="err">LLM&lt;/span> &lt;span class="err">调用获取原始响应&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">chain&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">self.prompt_template&lt;/span> &lt;span class="err">|&lt;/span> &lt;span class="err">self.llm&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">raw_response&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">chain.invoke(&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;contentdiff&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="err">contentdiff&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="err">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">#&lt;/span> &lt;span class="err">检查并提取原始内容&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">raw_content&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">raw_response.content&lt;/span> &lt;span class="err">if&lt;/span> &lt;span class="err">hasattr(raw_response,&lt;/span> &lt;span class="err">&amp;#39;content&amp;#39;)&lt;/span> &lt;span class="err">else&lt;/span> &lt;span class="err">str(raw_response)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">json_content&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">self.extract_json(raw_content)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">#&lt;/span> &lt;span class="err">尝试解析响应&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">response&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">self.parser.parse(json_content)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">#&lt;/span> &lt;span class="err">确保生成时间字段有值&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">if&lt;/span> &lt;span class="err">not&lt;/span> &lt;span class="err">response.generated_at:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">response.generated_at&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">datetime.now().isoformat()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">#&lt;/span> &lt;span class="err">计算字数（如果&lt;/span> &lt;span class="err">LLM&lt;/span> &lt;span class="err">未提供，则基于&lt;/span> &lt;span class="err">content&lt;/span> &lt;span class="err">计算）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">if&lt;/span> &lt;span class="err">response.word_count&lt;/span> &lt;span class="err">==&lt;/span> &lt;span class="mi">0&lt;/span> &lt;span class="err">and&lt;/span> &lt;span class="err">response.content:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">response.word_count&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">len(&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="err">.join(response.content).replace(&lt;/span>&lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>&lt;span class="err">,&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="err">).replace(&lt;/span>&lt;span class="s2">&amp;#34;,&amp;#34;&lt;/span>&lt;span class="err">,&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="err">).replace(&lt;/span>&lt;span class="s2">&amp;#34;.&amp;#34;&lt;/span>&lt;span class="err">,&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="err">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">#&lt;/span> &lt;span class="err">添加原始响应到结果中&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">response.raw_response&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">raw_content&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">return&lt;/span> &lt;span class="err">response&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">except&lt;/span> &lt;span class="err">Exception&lt;/span> &lt;span class="err">as&lt;/span> &lt;span class="err">e:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">last_exception&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">e&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">retries&lt;/span> &lt;span class="err">+=&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">if&lt;/span> &lt;span class="err">retries&lt;/span> &lt;span class="err">&amp;lt;&lt;/span> &lt;span class="err">self.max_retries:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">time.sleep(self.retry_delay)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">continue&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">#&lt;/span> &lt;span class="err">所有重试都失败后，返回错误响应&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">raw_content&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">raw_response.content&lt;/span> &lt;span class="err">if&lt;/span> &lt;span class="err">raw_response&lt;/span> &lt;span class="err">and&lt;/span> &lt;span class="err">hasattr(raw_response,&lt;/span> &lt;span class="err">&amp;#39;content&amp;#39;)&lt;/span> &lt;span class="err">else&lt;/span> &lt;span class="err">str(raw_response)&lt;/span> &lt;span class="err">if&lt;/span> &lt;span class="err">raw_response&lt;/span> &lt;span class="err">else&lt;/span> &lt;span class="s2">&amp;#34;No response&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">return&lt;/span> &lt;span class="err">SummaryResponse(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">content=&lt;/span>&lt;span class="p">[]&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">key_points=&lt;/span>&lt;span class="p">[]&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">word_count=&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">generated_at=datetime.now().isoformat(),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">status=&lt;/span>&lt;span class="s2">&amp;#34;error&amp;#34;&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">error_message=f&lt;/span>&lt;span class="s2">&amp;#34;Failed to parse SummaryResponse: {str(last_exception)}&amp;#34;&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">raw_response=raw_content&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">#&lt;/span> &lt;span class="err">使用示例&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">def&lt;/span> &lt;span class="err">main():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">#&lt;/span> &lt;span class="err">创建示例&lt;/span> &lt;span class="err">contentdiff，确保包含可提取的关键点&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">sample_contentdiff&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="err">Changed:&lt;/span> &lt;span class="err">&amp;#39;&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="err">&amp;#39;&lt;/span> &lt;span class="err">-&amp;gt;&lt;/span> &lt;span class="err">&amp;#39;&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="err">分钟前\n.\nAIbase\nFlower&lt;/span> &lt;span class="err">Labs&lt;/span> &lt;span class="err">颠覆AI应用模式，&lt;/span>&lt;span class="mi">2360&lt;/span>&lt;span class="err">万美元打造首个全开放混合计算平台\n人工智能正在以前所未有的速度融入我们的日常应用，而一家名为Flower&lt;/span> &lt;span class="err">Labs的初创公司正以革命性的方式改变AI模型的部署和运行方式。这家获得Y&lt;/span> &lt;span class="err">Combinator支持的新锐企业近日推出了Flower&lt;/span> &lt;span class="err">Intelligence，一个创新的分布式云平台，专为在移动设备、个人电脑和网络应用中提供AI模型服务而设计。Flower&lt;/span> &lt;span class="err">Intelligence的核心优势在于其独特的混合计算策略。该平台允许应用程序在本地设备上运行AI模型，既保证了速度，又增强了隐私保护。当需要更强大的计算能力时，系统会在获得用户同意的情况下，无\n&lt;/span>&lt;span class="mi">7&lt;/span>&lt;span class="err">&amp;#39;&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="err">Added:&lt;/span> &lt;span class="err">&amp;#39;美国埃隆大学的一项调查显示，&lt;/span>&lt;span class="mi">5&lt;/span>&lt;span class="err">&amp;#39;&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="err">Added:&lt;/span> &lt;span class="err">&amp;#39;%的美国成年人都曾使用过像ChatGPT、Gemini、Claude这样的AI大语言模型。这项由北卡罗来纳州埃隆大学“想象数字未来中心”在&amp;#39;&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="err">Added:&lt;/span> &lt;span class="err">&amp;#39;月份开展的调查，选取了&lt;/span>&lt;span class="mi">500&lt;/span>&lt;span class="err">名受访者。结果发现，在使用过AI的人群中，&lt;/span>&lt;span class="mi">34&lt;/span>&lt;span class="err">%的人表示至少每天会使用一次大语言模型。其中，ChatGPT最受欢迎，&lt;/span>&lt;span class="mi">72&lt;/span>&lt;span class="err">%的受访者都用过;谷歌的Gemini位居第二，使用率为&lt;/span>&lt;span class="mi">50&lt;/span>&lt;span class="err">%&lt;/span> &lt;span class="err">。图源备注：图片由AI生成，图片授权服务商Midjourney越来越多的人开始和AI聊天机器人建立起特殊的关系。调查显示，&lt;/span>&lt;span class="mi">38&lt;/span>&lt;span class="err">%的用户认为大语言模\n&lt;/span>&lt;span class="mi">27&lt;/span>&lt;span class="err">&amp;#39;&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="err">Changed:&lt;/span> &lt;span class="err">&amp;#39;&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="err">&amp;#39;&lt;/span> &lt;span class="err">-&amp;gt;&lt;/span> &lt;span class="err">&amp;#39;&lt;/span>&lt;span class="mi">9&lt;/span>&lt;span class="err">&amp;#39;&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="err">Changed:&lt;/span> &lt;span class="err">&amp;#39;&lt;/span>&lt;span class="mi">49&lt;/span>&lt;span class="err">&amp;#39;&lt;/span> &lt;span class="err">-&amp;gt;&lt;/span> &lt;span class="err">&amp;#39;&lt;/span>&lt;span class="mi">55&lt;/span>&lt;span class="err">&amp;#39;&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="err">Changed:&lt;/span> &lt;span class="err">&amp;#39;&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="err">&amp;#39;&lt;/span> &lt;span class="err">-&amp;gt;&lt;/span> &lt;span class="err">&amp;#39;&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="err">&amp;#39;&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="err">Deleted:&lt;/span> &lt;span class="err">&amp;#39;\n&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="err">小时前\n.\nAIbase\n叫板Sora？潞晨科技开源视频大模型Open-Sora&lt;/span> &lt;span class="mf">2.0&lt;/span>&lt;span class="err">，降本提速\n听说过壕无人性的&lt;/span> &lt;span class="err">OpenAI&lt;/span> &lt;span class="err">Sora&lt;/span> &lt;span class="err">吧?动辄几百万美元的训练成本，简直就是视频生成界的“劳斯莱斯”。现在，潞晨科技宣布开源视频生成模型&lt;/span> &lt;span class="err">Open-Sora&lt;/span>&lt;span class="mf">2.0&lt;/span>&lt;span class="err">!仅仅花费了区区&lt;/span>&lt;span class="mi">20&lt;/span>&lt;span class="err">万美元（相当于&lt;/span>&lt;span class="mi">224&lt;/span>&lt;span class="err">张&lt;/span> &lt;span class="err">GPU&lt;/span> &lt;span class="err">的投入），就成功训练出了一个拥有&lt;/span> &lt;span class="mi">110&lt;/span>&lt;span class="err">亿参数的商业级视频生成大模型。性能直追“OpenAI&lt;/span> &lt;span class="err">Sora&lt;/span> &lt;span class="err">”别看&lt;/span> &lt;span class="err">Open-Sora&lt;/span>&lt;span class="mf">2.0&lt;/span>&lt;span class="err">成本不高，实力可一点都不含糊。它可是敢于叫板行业标杆&lt;/span> &lt;span class="err">HunyuanVideo&lt;/span> &lt;span class="err">和拥有&lt;/span>&lt;span class="mi">300&lt;/span>&lt;span class="err">亿参数的&lt;/span> &lt;span class="err">Step-Video&lt;/span> &lt;span class="err">的狠角色。在权威评测&lt;/span> &lt;span class="err">VBench&lt;/span> &lt;span class="err">和用户偏好测试中，Open-Sora&lt;/span>&lt;span class="mf">2.0&lt;/span>&lt;span class="err">的表现都令人刮目相看，多项关键指&amp;#39;&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="s2">&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> &amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">#&lt;/span> &lt;span class="err">初始化智能体&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">agent&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">SubscriptionAgent(max_retries=&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="err">,&lt;/span> &lt;span class="err">retry_delay=&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="err">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">summary_result&lt;/span> &lt;span class="err">=&lt;/span> &lt;span class="err">agent.generate_summary(sample_contentdiff)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">#&lt;/span> &lt;span class="err">打印调试信息&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">#&lt;/span> &lt;span class="err">print(&lt;/span>&lt;span class="s2">&amp;#34;Raw response:&amp;#34;&lt;/span>&lt;span class="err">,&lt;/span> &lt;span class="err">summary_result.raw_response)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">#&lt;/span> &lt;span class="err">print(&lt;/span>&lt;span class="s2">&amp;#34;Error message:&amp;#34;&lt;/span>&lt;span class="err">,&lt;/span> &lt;span class="err">summary_result.error_message)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">#&lt;/span> &lt;span class="err">print(&lt;/span>&lt;span class="s2">&amp;#34;Summary result:&amp;#34;&lt;/span>&lt;span class="err">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">print(json.dumps(summary_result.model_dump(),&lt;/span> &lt;span class="err">indent=&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="err">,&lt;/span> &lt;span class="err">ensure_ascii=False))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">if&lt;/span> &lt;span class="err">__name__&lt;/span> &lt;span class="err">==&lt;/span> &lt;span class="s2">&amp;#34;__main__&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">main()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">现在我只要你返回应当的json内容&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="qwq-max-">qwq-max ☆☆☆☆
&lt;/h4>&lt;p>返回的格式不完全符合要求&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-8.png"
width="1150"
height="760"
srcset="https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-8_hu9523732708904297952.png 480w, https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-8_hu1849222021799701870.png 1024w"
loading="lazy"
alt="qwq-max"
class="gallery-image"
data-flex-grow="151"
data-flex-basis="363px"
>&lt;/p>
&lt;h4 id="qwq-32b--1">qwq-32b ☆☆☆
&lt;/h4>&lt;p>返回的内容不完全符合要求&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-9.png"
width="941"
height="663"
srcset="https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-9_hu6801517613251352668.png 480w, https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-9_hu16422422075371520873.png 1024w"
loading="lazy"
alt="qwq-32b"
class="gallery-image"
data-flex-grow="141"
data-flex-basis="340px"
>&lt;/p>
&lt;h4 id="grok3--2">grok3 ☆☆☆☆☆
&lt;/h4>&lt;p>完全符合要求&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-7.png"
width="890"
height="499"
srcset="https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-7_hu16178115535946650130.png 480w, https://www.zata.cc/p/%E5%AF%B9%E6%AF%94%E4%BA%86%E5%87%A0%E7%A7%8D%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E7%9B%B8%E5%90%8C%E4%BB%BB%E5%8A%A1%E4%B8%8B%E7%9A%84%E8%A1%A8%E7%8E%B0/images/index/index-7_hu15248036276141505441.png 1024w"
loading="lazy"
alt="grok3"
class="gallery-image"
data-flex-grow="178"
data-flex-basis="428px"
>&lt;/p></description></item></channel></rss>