WordPress AI助手插件wp-ai-chat:从提示词生成到对话集成全解析
简介这是一款专为WordPress站长设计的AI助手插件开源免费集成DeepSeek、通义千问、百度千帆、豆包、Kimi、OpenAI等主流模型也支持自定义文本模型和通义千问图片生成可完成提示词生成文章、前台实时对话、AI翻译与总结适合想快速为网站接入智能能力的开发者和内容运营者。压缩包共14个文件以PHP核心逻辑、JS前端交互、HTML说明页面为主另有CSS样式和TXT配置文档结构清晰整体仅103KB部署非常轻量。目前已有212人浏览学习插件启用后会自动创建前台对话页面支持Markdown格式回复对话记录独立存储并支持删除还能对接腾讯云、百度云TTS实现文章和回复朗读。这份资源提供完整插件源码、安装说明和自定义提示词示例内置DeepSeek-V3与R1模型选项也提供余额查看功能可帮助WordPress用户减少从零开发AI功能的时间与成本。1. WordPress 上的 AI 助手真正要解决的问题不是“会不会写”把“小半AI助手wp-ai-chat”装进 WordPress 后台第一反应通常是“让它帮我写一篇文章”。用一段提示词生成全文再复制进编辑器点击发布这确实是多数人上手的方式但也是把插件用窄了。wp-ai-chat 这类插件的价值不在“生成文本”而在于把提示词生成和 chat 智能对话同时接入了 WordPress 自己的内容生产链路文章数据走文章表对话上下文走自己的存储前端交互走 AJAX 而不是第三方网页。WordPress 应用中心里的大多数 AI 插件只包一层接口“回消息”就是全部功能wp-ai-chat 这类随更版插件则把两件完全不同的事——长文生成和短轮对话——放在一个后台里靠提示词模板和会话上下文把它们分开。这篇文章按“定位 → 安装 → 文章生成 → 对话集成 → 随更版维护”的顺序把它讲透。2. wp-ai-chat 的定位与三条底层选型逻辑2.1 插件为什么把“提示词生成”和“chat 智能对话”做成一体wp-ai-chat 之所以要把生成文章和对话放在同一个插件里不是为了让功能列表更长而是因为这两件事在代码层面共用同一套基础设施模型网关、提示词模板、上下文管理、请求去重和错误处理。文章生成是“一次请求传一大段文本等 30 秒拿到全文后入库”chat 对话是“多次请求每次带上历史消息等 3 秒拿到增量回复后回显”。两者的差异集中在请求参数和输出处理上网络层、鉴权层、日志层完全一致。实际项目里常见的失误是把聊天和生成拆成两个插件对话插件只管前端浮窗生成插件只管编辑器按钮。结果就是两套 API Key、两套模型配置、两套上下文格式模型升级时要在两个后台分别改参数。wp-ai-chat 的选型逻辑很简单把“生成任务”和“对话会话”抽象成两种任务类型走同一个任务分发器。用大白话说后台收到请求后先判断这是generate还是chat再决定把请求体拼成“拉长文本”还是“多轮消息”其他逻辑共用。如果你在开发自己的 WordPress AI 插件这个合并思路同样值得沿用同一份build_headers()、同一份parse_response()不要为对话和生成各写一遍 HTTP 客户端。对比下面两段伪代码就能看出差异// 生成把提示词塞进 system要求一次返回完整内容 $payload [ model get_option(wp_ai_chat_model), messages [ [role system, content $prompt_template], [role user, content $topic], ], temperature 0.7, max_tokens 2048, ]; // 对话把会话记录原样带上只追加当前用户消息 $payload [ model get_option(wp_ai_chat_model), messages array_merge($history, [[role user, content $question]]), temperature 0.3, stream true, ];两个请求的差异只有三处temperature、max_tokens、stream。所以插件内部完全没必要维护两套请求构建器按任务类型给同一套send_request()传不同参数即可。参数说明temperature控制随机性写文章用 0.7 左右保持文风稳定对话用 0.3 防止跑题max_tokens决定单次输出上限文章最少 2048对话 512 就够stream为 true 时前端可以逐字回显false 时只能等待完整响应。2.2 模型接口抽象层插件不绑定单一模型wp-ai-chat 这类随更版插件一个容易被忽略的设计点是模型接口抽象层。所谓抽象层就是插件内部不直接写“去请求某某模型”而是定义一个统一接口WP_AI_Chat_Engine由它来负责组装请求、发送请求、解析响应。你只需要在设置页选择模型名插件会把它拼接进请求地址。这样做的好处有三个模型升级不用改插件代码响应格式变化时只需要改parse_response()一个方法调试时可以在该方法的入口处加日志把所有入参和出参记录下来。class WP_AI_Chat_Engine { public function generate($prompt, $context []) { $payload $this-build_payload(generate, $prompt, $context); $response $this-send_request($payload); return $this-parse_response($response); } }提示如果插件在后台对模型名做了硬校验不允许填写未收录模型可以挂option_wp_ai_chat_model过滤器手动放开白名单随更版通常不会给你完整的模型表。2.3 上下文与记忆的存储边界聊天功能要记住上下文文章生成不需要这是 wp-ai-chat 内部对“记忆”的唯一区分。文章生成是一次性任务上下文存在请求体里生成结束即销毁对话则必须保存历史否则 chat 就成了“失忆版”。插件的对话历史一般会存在自定义表里字段结构大致如下CREATE TABLE wp_ai_chat_sessions ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, user_id BIGINT UNSIGNED NOT NULL DEFAULT 0, session_key VARCHAR(64) NOT NULL UNIQUE, history LONGTEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;参数说明session_key通常由用户 ID 加时间戳哈希生成前端每次打开对话框都复用同一个 key这样刷新页面后对话还能继续history字段存JSON编码的消息数组不要存纯文本因为模型接口要求的消息格式就是role content结构。每次对话更新时要把整个 history 读出来、追加、再写回而不是用 SQL 直接拼接否则会破坏 JSON 结构。3. 安装与基线配置把 wp-ai-chat 跑起来的那几个参数3.1 zip 安装与 API Key 注入wp-ai-chat 以 zip 形式发布随更版意味着你从应用中心下载到的未必是最终版本作者可能还会在社区里放出更新包。安装方式和其他 WordPress 插件没有区别后台“插件 → 安装插件 → 上传插件”选择 zip 包启用后进入设置页。真正值得注意的是 API Key 的存储方式。很多插件会把密钥存进wp_options表明文可见更稳妥的做法是读环境变量或 wp-config.php 常量。wp-ai-chat 如果支持常量覆盖一般会写成这样// wp-config.php 中添加 define(WP_AI_CHAT_API_KEY, sk-xxxxxxxxxxxxxxxxxxxx); define(WP_AI_CHAT_MODEL, gpt-4o-mini);代码说明插件在读取 API Key 时优先取常量常量不存在才去读数据库选项。这样站点代码入库、数据库泄露时不会带走密钥。WP_AI_CHAT_MODEL用来统一指定模型避免每个作者在编辑器里各自选模型导致同一篇文章前后文风格不一致。3.2 必调的三个参数及其影响wp-ai-chat 这类插件最影响出稿质量的设置不是模型名而是下面几个参数参数推荐值影响temperature0.3 对话 / 0.7 生成值越高回答越发散越低越保守max_tokens512 对话 / 2048 生成值太低会截断长文生成历史消息轮数6 轮左右太多会撑爆 token太少会失去上下文如果你的站点使用 nginx建议给 wp-admin 的 AJAX 接口单独加超时配置否则长文生成时 PHP 进程会被网关掐断。常见做法是在 nginx 站点配置里加location ~* /wp-admin/admin-ajax.php { fastcgi_read_timeout 120s; proxy_read_timeout 120s; }参数说明fastcgi_read_timeout指 FastCGI 进程处理请求的最长时间生成 2000 token 的文章约需 3060 秒默认 60 秒可能刚好不够proxy_read_timeout只在 WordPress 跑在反向代理后面时需要。两个值建议都设为 120 秒以上不要设成 300 秒否则前端 AJAX 早超时了后端还在傻等。3.3 请求失败时的快速自检顺序碰到“生成失败”或“对话无响应”我不建议一上来就动插件代码。按下面顺序查大概率几分钟内定位问题用命令行先测试远端接口是否通curl -sS -m 10 -H Authorization: Bearer $WP_AI_CHAT_API_KEY https://api.example.com/v1/models。这一步能快速排除网络和密钥问题。检查 WordPress 站点是否启用了对象缓存插件若缓存了包含密钥的请求会导致密钥轮换后仍然用旧密钥请求。打开 WP_DEBUG 日志观察wp_ai_chat_开头的错误记录一般在wp-content/debug.log。确认目标接口有没有 CORS 限制若前端直接调接口而不是走后端 AJAX 代理浏览器会拦截跨域响应。注意排查过程中不要频繁点击生成按钮插件如果没有内置请求去重会同时发出多个并发请求浪费 token 额度不说还容易触发平台的速率限制。4. 用提示词在后台批量生成文章的落地场景4.1 提示词模板语法占位符、指令、约束分开写wp-ai-chat 的提示词生成文章功能核心是一套可编辑的模板。常见的模板是把占位符、指令、约束分成三段。占位符负责接收变量比如标题、关键词、目标读者指令负责定义写作风格约束负责控制输出格式。比如一个面向技术博客的文章生成模板你是资深技术编辑擅长写通俗易懂的WordPress教程。 请根据标题生成一篇结构完整的文章{title} 关键词参考{keywords} 要求 1. 开头 200 字直接说明问题场景 2. 中间必须包含可运行的代码示例 3. 结尾给出一个排错技巧 4. 全文 1500 字左右在使用时{title}和{keywords}会被替换为真实值插件把替换后的完整文本作为system消息发给模型。这里有个使用技巧不要把文章大纲写死在模板里而是让模型根据标题自己搭结构否则每篇文章的章节目录会高度雷同不利于站点搜索收录。提示词工程做得好不好第一看替换变量是否放在合适的位置第二看约束条件是否像上面的 1 到 4 条一样可验证。不要写“请写出高质量的文章”这种无法被模型衡量的模糊要求要写“不少于 1500 字”这类可量化的约束。4.2 文章生成请求的钩子与任务链这类插件在生成文章时通常不是一步到位的。常见的流程是用户在编辑器点击“生成草稿”插件先创建一篇草稿文章再调用模型接口拿到结果后更新post_content。每一步都有对应的动作钩子方便开发者介入。// 示例在生成之前自动填充自定义字段 add_action(wp_ai_chat_before_generate, function($post_id, $prompt) { update_post_meta($post_id, _ai_generate_time, current_time(mysql)); update_post_meta($post_id, _ai_generate_prompt, $prompt); }, 10, 2); // 示例生成之后自动设置文章摘要 add_action(wp_ai_chat_after_generate, function($post_id, $content) { $excerpt wp_trim_words($content, 80); wp_update_post([ ID $post_id, post_excerpt $excerpt, ]); }, 10, 2);钩子说明wp_ai_chat_before_generate在请求模型之前触发第二个参数是替换变量后的完整提示词适合做审计记录wp_ai_chat_after_generate在内容写回文章后触发适合用 PHP 代码替代模型去做摘要、加标签、生成别名等机械性操作。第二个参数是完整正文取决于生成是否被截断建议在写摘要前检查字数。4.3 三个影响文章可用性的设置项批量生成文章时有三个参数直接决定内容能不能直接用温度值temperature设置页里如果提供滑动条生成文章建议 0.650.75 之间。取 0.9 以上会产生大量“虽然但是”类的转折句看似流畅实则在凑字数。字数上限max_tokensWordPress 中文文章 1500 字约等于 1000 个 token。如果设置成 512生成的文章显然会断在半截。要生成 2000 字文章max_tokens至少给 1500否则模型会在段落中间停下。禁止输出标题模板里建议写明“不要输出文章标题直接正文”。很多模型会在生成时自动加一个# 标题入库后和编辑器里手动填的标题冲突产生重复 H1不利于 SEO。注意随更版插件的模板可能存在转义问题直接粘贴带中文引号的文本进模板可能被存成 HTML 实体。粘贴后一定要切到文本模式看引号是否变成了quot;。5. chat 智能对话如何嵌进前台实现“随更版”体验5.1 对话前端短代码、消息队列、流式回显wp-ai-chat 的 chat 部分如果支持短代码用法通常是[wp_ai_chat sessionmy-avatar]。同一个 session 名代表同一个上下文不同 session 之间互不干扰。前端对话框一般维持一个本地消息队列用户每发一句就 push 进去收到回复后再 push 一条。这一步不推荐把整个 history 发给后端而是只发session_key 当前消息由后端负责从数据库取历史再组装。在前端做流式回显时最稳妥的方式是用fetch加ReadableStream逐块读取而不是用XMLHttpRequest。注意如果你的站点还在用 jQuery 的$.ajax要把timeout设成 0 且不声明否则长回复会被 JS 侧掐断。5.2 后端 AJAX 动作的分流设计对话请求统一走admin-ajax.php或 REST API。wp-ai-chat 这类插件通常注册两个动作wp_ajax_wp_ai_chat_reply和wp_ajax_nopriv_wp_ai_chat_reply后者允许未登录用户在前台使用对话功能。登录用户和游客共用同一套上下文存储会串号所以 session_key 要有访客标识add_action(wp_ajax_wp_ai_chat_reply, wp_ai_chat_handle_reply); add_action(wp_ajax_nopriv_wp_ai_chat_reply, wp_ai_chat_handle_reply); function wp_ai_chat_handle_reply() { check_ajax_referer(wp_ai_chat_nonce, nonce); $session_key sanitize_key($_POST[session_key]); $message sanitize_textarea_field($_POST[message]); // 读取历史、追加新消息、请求模型、写回历史 wp_send_json_success($reply); }参数说明check_ajax_referer直接拦掉跨站伪造请求推荐开启sanitize_textarea_field会保留换行适合用户输入长文本场景。需要注意游客的 session_key 不能存在 cookie 里并依赖它做身份标识否则换台电脑就丢上下文常见做法是把 key 存在 localStorage并在刷新时重新生成。5.3 对话场景的限流与常见报错处理对话功能开放给匿名用户后就会有人用脚本刷接口。wp-ai-chat 如果没有内置限流建议自己挂一个 IP 维度的计数逻辑。最简单的是用 Transient API 实现 60 秒内最多 10 次请求$ip $_SERVER[REMOTE_ADDR]; $count_key wp_ai_chat_limit_ . md5($ip); $count (int) get_transient($count_key); if ($count 10) { wp_send_json_error([code rate_limited, message 请求太频繁请稍后再试]); } set_transient($count_key, $count 1, 60);如果你在前台对话时看到类似Error creating chat failed to resolve feature override precedence的报错多数是模型接口传参格式不对通常发生在自定义模型名被插件拼接到了不存在的接口路径上。先检查设置页里的模型名是否填成了模型别名而不是接口接受的模型 ID。其次关闭插件自带的“协商格式”开关让请求中的response_format固定为纯文本避免部分模型拒绝返回 JSON。6. 对随更版做一次可维护的升级三个验证方法随更版插件升级频繁升级前先冻结当前版本再对生产环境做一次可回归的验证。先把当前版本备份下来通常做法是复制一份插件目录并压成 zip 留存。更新后不要急着测试“生成文章”而是优先验证三件事第一个是数据库结构去看wp_ai_chat_sessions表是否存在且没有丢失历史数据第二个是 API Key 是否被升级脚本重置第三个是既有文章是否有索引过期的现象。建议写一个最小验证脚本挂在init钩子上做冒烟测试而不是手动点按钮add_action(init, function() { if (!isset($_GET[ai_smoke_test])) return; $response wp_remote_post(https://api.example.com/v1/chat/completions, [ timeout 10, headers [Authorization Bearer . constant(WP_AI_CHAT_API_KEY)], body wp_json_encode([ model gpt-4o-mini, messages [[role user, content ping]], max_tokens 5, ]) ]); wp_send_json_success([status wp_remote_retrieve_response_code($response)]); });最后给出一个技巧wp-ai-chat 这类插件的随更版通常不会修改你保存在数据库里的模板设置但升级时可能用默认配置覆盖“未设置”的空值。所以升级前把每个提示词模板复制一份存成 WordPress 自定义文章类型升级后对照差异再把模板写回。别用代码方式强制覆盖远端默认值优先把本地模板的 content 字段格式化好再比较。本文还有配套的精品资源点击获取
上一篇/下一篇内容由系统自动关联
返回资讯列表 →