DeepSeek V4和Gemini 3.1 Pro日常生成代码对比测试

AI 智能摘要
DeepSeek V4专家模式写WordPress钩子函数靠谱吗?我拿它和Gemini 3.1 Pro比了比。核心是让代码能真跑通,自动刷新腾讯云EdgeOne和Cloudflare的双线CDN缓存,解决站长更新文章后国内外内容不同步的老大难问题。V4生成的PHP代码自带详细注释,连API签名都考虑了,实测可用性挺高。

这两天DeepSeek V4发布的消息在站长圈子里传得挺凶,搞得我也手痒想试试。说实话,作为主题铺的站长,平时对这种AI工具的依赖度挺高,尤其是写一些WordPress钩子函数的时候。之前我一直蹲在Google的Gemini 3.1 Pro Preview坑里,毕竟这种国际大厂的模型在逻辑和代码准确度上确实有两把刷子。但这次既然DeepSeek号称升级了专家模式,我就想干脆拿它跟Gemini来个实战PK。这次测试我不看那些虚头巴脑的跑分指标,咱们草根站长只看实际写出来的代码能不能跑通,能不能解决我的痛点。

一、为什么我要折腾这个双线缓存刷新

主题铺手头有个站点,为了追求极致的加载速度,搞了个挺复杂的CDN架构。国内流量我走的是腾讯云EO加速,也就是那个EdgeOne,国外流量就直接扔给Cloudflare处理。这种方案性能是拉满了,但维护起来那是真的心累。最蛋疼的事情就是每次我后台更新一篇文章,或者是改了个分类页面的内容,国内外的缓存就不同步。访客经常反馈说怎么看到的内容还是几小时前或者几天前的。手动去两个后台点刷新简直是浪费生命,所以我打算搞个函数直接挂载到WordPress的发布和更新动作上,实现全自动化刷新。

二、DeepSeek V4专家模式给出的方案

我先把需求塞给了DeepSeek V4的专家模式,都是联网模式和深度思考同时启用的。说实话,它吐代码的速度确实快,而且看这代码的排版,各种注释写得还挺像那么回事。它给我手搓了一套腾讯云API的V3签名逻辑,这点倒是让我挺意外。代码如下:

// ---------- 腾讯云 EO 缓存刷新 (EdgeOne Purge) ----------
function ztp_purge_tencent_eo_urls($urls) {
    // ======= 请在此填入腾讯云 EO 凭证 =======
    $secret_id  = '你的腾讯云 SecretId';
    $secret_key = '你的腾讯云 SecretKey';
    $zone_id    = '你的 EO 站点 ID';      // 类似 zone-xxxxxxxx
    // =====================================

    if (empty($secret_id) || empty($secret_key) || empty($zone_id) || empty($urls)) {
        return;
    }

    // 腾讯云 EO 刷新 URL 接口:单次最多支持 1000 个,按需分批
    $service  = 'teo';
    $version  = '2022-09-01';
    $action   = 'PurgeCache';
    $host     = 'teo.tencentcloudapi.com';
    $endpoint = "https://$host";
    $region   = 'ap-guangzhou'; // EO 目前为全球服务,区域可固定

    $timestamp   = time();
    $date        = gmdate('Y-m-d', $timestamp);
    $http_method = 'POST';
    $canonical_uri  = '/';
    $canonical_querystring = '';
    $ct         = 'application/json; charset=utf-8';
    $algorithm  = 'TC3-HMAC-SHA256';

    // 分批处理,单次最多 1000 个 URL
    $chunks = array_chunk($urls, 1000);

    foreach ($chunks as $chunk) {
        $payload = wp_json_encode([
            'ZoneId' => $zone_id,
            'Urls'   => $chunk,
        ]);

        // ************* 计算签名 *************
        $hashed_request_payload = hash('sha256', $payload);
        $canonical_headers = "content-type:$ct\nhost:$host\nx-tc-action:" . strtolower($action) . "\n";
        $signed_headers    = 'content-type;host;x-tc-action';

        $canonical_request = "$http_method\n$canonical_uri\n$canonical_querystring\n$canonical_headers\n$signed_headers\n$hashed_request_payload";

        $credential_scope = "$date/$service/tc3_request";
        $string_to_sign   = "$algorithm\n$timestamp\n$credential_scope\n" . hash('sha256', $canonical_request);

        $secret_date    = hash_hmac('sha256', $date, 'TC3' . $secret_key, true);
        $secret_service = hash_hmac('sha256', $service, $secret_date, true);
        $secret_signing = hash_hmac('sha256', 'tc3_request', $secret_service, true);
        $signature      = bin2hex(hash_hmac('sha256', $string_to_sign, $secret_signing, true));

        $authorization = "$algorithm Credential=$secret_id/$credential_scope, SignedHeaders=$signed_headers, Signature=$signature";

        // ************* 发送请求 (极致非阻塞) *************
        wp_remote_post($endpoint, [
            'method'    => 'POST',
            'blocking'  => false,
            'timeout'   => 1,
            'sslverify' => false,
            'headers'   => [
                'Content-Type'      => $ct,
                'Host'              => $host,
                'X-TC-Action'       => $action,
                'X-TC-Version'      => $version,
                'X-TC-Timestamp'    => $timestamp,
                'X-TC-Region'       => $region,
                'Authorization'     => $authorization,
            ],
            'body' => $payload,
        ]);
    }
}

// ----------  Cloudflare + 腾讯云 EO 联合刷新 ----------
add_action('transition_post_status', 'ztp_precise_purge_cdn_cache', 10, 3);

function ztp_precise_purge_cdn_cache($new_status, $old_status, $post) {
    // 1. 终极防御:确保 $post 对象合法,防止第三方垃圾插件引发异常
    if (empty($post) || !isset($post->ID)) {
        return;
    }

    // 2. 忽略系统自动保存和修订版本,防止频繁误触发
    if (wp_is_post_revision($post->ID) || wp_is_post_autosave($post->ID)) {
        return;
    }

    // 3. 仅在:发布新文章、更新已发布文章、或将已发布文章下架(回收站/草稿)时触发
    if ($new_status !== 'publish' && $old_status !== 'publish') {
        return;
    }

    // 4. 仅对文章 (post) 和 页面 (page) 生效,跳过菜单、附件等无关对象
    if (!in_array($post->post_type, ['post', 'page'])) {
        return;
    }

    // 5. 收集需要精准刷新的 URL 矩阵
    $urls_to_purge = [];
    $urls_to_purge[] = home_url('/'); // 刷新首页
    $urls_to_purge[] = get_permalink($post->ID); // 刷新当前文章/页面

    // 🚀 核心追溯:安全获取分类 URL,并【递归向上追溯所有父级大分类】
    $categories = get_the_category($post->ID);
    if (!empty($categories) && !is_wp_error($categories)) {
        $cat_ids_to_purge = [];
        
        foreach ($categories as $cat) {
            $cat_ids_to_purge[] = $cat->term_id;
            // 顺藤摸瓜:获取该子分类的所有父级、爷级分类 ID
            $ancestors = get_ancestors($cat->term_id, 'category');
            if (!empty($ancestors)) {
                $cat_ids_to_purge = array_merge($cat_ids_to_purge, $ancestors);
            }
        }
        
        // 去重父级 ID
        $cat_ids_to_purge = array_unique($cat_ids_to_purge);
        
        foreach ($cat_ids_to_purge as $term_id) {
            $urls_to_purge[] = get_category_link($term_id);
        }
    }

    // 安全获取标签 URL
    $tags = get_the_tags($post->ID);
    if (!empty($tags) && !is_wp_error($tags)) {
        foreach ($tags as $tag) {
            $urls_to_purge[] = get_tag_link($tag->term_id);
        }
    }

    // 6. 数据清洗:去重并过滤掉空值(防黑防呆机制)
    $urls_to_purge = array_values(array_filter(array_unique($urls_to_purge)));

    // 7. 同时发送给 Cloudflare 和腾讯云 EO
    ztp_purge_cloudflare_urls($urls_to_purge);
    ztp_purge_tencent_eo_urls($urls_to_purge);   // ← 新增腾讯云 EO 刷新
}

三、Gemini 3.1 Pro Preview给出的答案

就在我准备把DeepSeek的代码往生产环境扔之前,我心想还是稳一手。万一这玩意报错了,我这一晚上的折腾就白费了。于是我把同样的需求塞给了Gemini 3.1 Pro Preview。有趣的事情发生了,Gemini给出的代码在调用腾讯云API的时候,细节处理得有些不一样。如下代码:

// --- ZTP 极客专属:文章发布/更新/删除时,双线精准异步刷新 CF 和 EO 缓存 (大厂级免SDK架构) ---
add_action('transition_post_status', 'ztp_precise_purge_cdn_cache', 10, 3);

function ztp_precise_purge_cdn_cache($new_status, $old_status, $post) {
    // 1. 防御:确保 $post 对象合法,过滤自动保存和修订版本
    if (empty($post) || !isset($post->ID) || wp_is_post_revision($post->ID) || wp_is_post_autosave($post->ID)) {
        return;
    }

    // 2. 仅响应核心状态流转:发布、更新、下架(回收站)
    if ($new_status !== 'publish' && $old_status !== 'publish') {
        return;
    }

    // 3. 仅对文章和页面生效
    if (!in_array($post->post_type, ['post', 'page'])) {
        return;
    }

    // 4. 构建刷新矩阵 (首页、本文)
    $urls_to_purge = [];
    $urls_to_purge[] = home_url('/'); 
    $urls_to_purge[] = get_permalink($post->ID);

    // 获取并追溯分类树
    $categories = get_the_category($post->ID);
    if (!empty($categories) && !is_wp_error($categories)) {
        $cat_ids =[];
        foreach ($categories as $cat) {
            $cat_ids[] = $cat->term_id;
            $ancestors = get_ancestors($cat->term_id, 'category');
            if (!empty($ancestors)) {
                $cat_ids = array_merge($cat_ids, $ancestors);
            }
        }
        foreach (array_unique($cat_ids) as $term_id) {
            $urls_to_purge[] = get_category_link($term_id);
        }
    }

    // 获取标签
    $tags = get_the_tags($post->ID);
    if (!empty($tags) && !is_wp_error($tags)) {
        foreach ($tags as $tag) {
            $urls_to_purge[] = get_tag_link($tag->term_id);
        }
    }

    // 5. 绝对去重清洗
    $urls_to_purge = array_values(array_filter(array_unique($urls_to_purge)));

    // 6. 🚀 开启全球双线狙击
    ztp_purge_cloudflare($urls_to_purge);
    ztp_purge_edgeone($urls_to_purge);
}

// ==========================================
// 模块一:Cloudflare 异步清理
// ==========================================
function ztp_purge_cloudflare($urls) {
    // 【请在此填入 CF 凭证】
    $zone_id   = '填入你的Cloudflare区域ID';
    $api_token = '填入你的Cloudflare API令牌';

    if (empty($zone_id) || empty($api_token) || empty($urls)) return;

    $api_url = "https://api.cloudflare.com/client/v4/zones/{$zone_id}/purge_cache";
    $chunks = array_chunk($urls, 30); // CF 限制每次最多 30 个

    foreach ($chunks as $chunk) {
        wp_remote_post($api_url,[
            'method'    => 'POST',
            'blocking'  => false, 
            'timeout'   => 1,     
            'sslverify' => false, 
            'headers'   =>[
                'Content-Type'  => 'application/json',
                'Authorization' => 'Bearer ' . $api_token,
            ],
            'body'      => wp_json_encode(['files' => $chunk])
        ]);
    }
}

// ==========================================
// 模块二:腾讯云 EdgeOne 异步清理 (原生 V3 签名)
// ==========================================
function ztp_purge_edgeone($urls) {
    // 【请在此填入 腾讯云 凭证】
    $secret_id  = '填入你的腾讯云SecretId';
    $secret_key = '填入你的腾讯云SecretKey';
    $zone_id    = '填入你的EdgeOne的ZoneId(以zone-开头)';

    if (empty($secret_id) || empty($secret_key) || empty($zone_id) || empty($urls)) return;

    $host    = 'teo.tencentcloudapi.com';
    $service = 'teo';
    $action  = 'CreatePurgeTask';
    $version = '2022-09-01';

    $chunks = array_chunk($urls, 100); // EO 限制更宽,100个一批

    foreach ($chunks as $chunk) {
        // 构建请求 Payload
        $payload = wp_json_encode([
            'ZoneId'  => $zone_id,
            'Type'    => 'purge_url',
            'Method'  => 'invalidate', // invalidate (标记过期) 比 delete (物理删除) 体验更好
            'Targets' => $chunk
        ], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);

        // --- 核心黑科技:手搓腾讯云 API V3 签名 ---
        $timestamp = time();
        $date = gmdate('Y-m-d', $timestamp);
        
        $canonicalUri = '/';
        $canonicalQueryString = '';
        $canonicalHeaders = "content-type:application/json; charset=utf-8\nhost:{$host}\n";
        $signedHeaders = 'content-type;host';
        $hashedRequestPayload = hash('sha256', $payload);
        $canonicalRequest = "POST\n{$canonicalUri}\n{$canonicalQueryString}\n{$canonicalHeaders}\n{$signedHeaders}\n{$hashedRequestPayload}";

        $algorithm = 'TC3-HMAC-SHA256';
        $credentialScope = "{$date}/{$service}/tc3_request";
        $hashedCanonicalRequest = hash('sha256', $canonicalRequest);
        $stringToSign = "{$algorithm}\n{$timestamp}\n{$credentialScope}\n{$hashedCanonicalRequest}";

        $secretDate = hash_hmac('sha256', $date, "TC3" . $secret_key, true);
        $secretService = hash_hmac('sha256', $service, $secretDate, true);
        $secretSigning = hash_hmac('sha256', 'tc3_request', $secretService, true);
        $signature = hash_hmac('sha256', $stringToSign, $secretSigning);

        $authorization = "{$algorithm} Credential={$secret_id}/{$credentialScope}, SignedHeaders={$signedHeaders}, Signature={$signature}";
        // ----------------------------------------

        // 发送给腾讯云 EdgeOne 节点
        wp_remote_post("https://{$host}/",[
            'method'    => 'POST',
            'blocking'  => false,  // 依然是非阻塞秒级放手
            'timeout'   => 1,
            'sslverify' => false,
            'headers'   =>[
                'Content-Type'   => 'application/json; charset=utf-8',
                'Host'           => $host,
                'Authorization'  => $authorization,
                'X-TC-Action'    => $action,
                'X-TC-Version'   => $version,
                'X-TC-Timestamp' => $timestamp
            ],
            'body'      => $payload
        ]);
    }
}

四、双方对比差别

老实说,刚开始看的时候我觉得这两段代码差不多,甚至DeepSeek的代码看起来更整齐一点。但我仔细盯着腾讯云EO的那个API接口看,发现事情不对劲。DeepSeek写的动作是PurgeCache,而Gemini写的动作是CreatePurgeTask。这两个玩意到底谁是对的?

我当时就想,这好办,我直接把DeepSeek的代码发给Gemini让它挑刺,再把Gemini的代码发给DeepSeek。好家伙,这两位大佬在对话框里直接吵起来了。

DeepSeek信誓旦旦地说腾讯云的API就是这么用的,还给我解释了一通底层逻辑。

图片[1]-DeepSeek V4和Gemini 3.1 Pro日常生成代码对比测试-主题铺

Gemini也不甘示弱,说对方的代码在生产环境下绝对跑不通。

图片[2]-DeepSeek V4和Gemini 3.1 Pro日常生成代码对比测试-主题铺

这种AI互掐的场面我见多了,但真涉及到底层代码准确性,我只能去翻腾讯云的官方API文档。

查完文档那一刻我真的有点无语。事实证明Gemini是对的。腾讯云EO的API接口里,真正用来创建清理任务的动作确实叫CreatePurgeTask。至于DeepSeek给出的那个PurgeCache,估计是从其他CDN厂商或者是老掉牙的API文档里脑补出来的。

图片[3]-DeepSeek V4和Gemini 3.1 Pro日常生成代码对比测试-主题铺

这其实反映了国内AI模型的一个硬伤。它们在生成前端页面、写简单的算法或者是搞点文案创作时确实很猛,但一旦涉及这种非常垂直、甚至连文档都在随时更新的技术细节,就容易掉链子。国内很多模型在知识库断层或者是遇到盲区的时候,由于语言组织能力太强,它们会一本正经地给你编造一个极其合理的解释。如果你是个建站新手,真的一点怀疑都没有直接用了,估计得对着白屏的控制台哭半天。

简单来说就是,我们认为的AI模型,虽然可以联网,但是大部分时间都是基于自己模型已有的数据进行生成答案,很少使用互联网深度探索或者爬取正确内容后再生成答案。结果DeepSeek模式已有的数据的时间估计是2025年初或者更早,Gemini的模型已有的数据时间或者在生成答案的实时性上会更优于DeepSeek的模式。

其实吧,在一些难点或者是这种跟第三方平台深度对接的问题上,我感觉Gemini这种国际大厂的模型在知识库的深度和实时性上还是更稳一点。退一步讲,不管AI说得多么天花乱坠,咱们站长自己动手查一下官方文档的习惯绝对不能丢。毕竟AI只是个助手,它不背锅,最后网站挂了还得咱们自己修。这次PK结果挺明显的,DeepSeek V4想在生产力层面彻底取代Gemini,看来还有挺长一段路要走。

当然了,主题铺测试的不一定准,只是自己使用过程中发现的一个小问题。也是很希望国内的这些AI模型更加强大。

普通人用用确实绰绰有余,但如果你要折腾这种硬核代码,还是多对比几个模型比较稳妥。你说呢?

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容