BLOG
AI助手接入个人网站时要注意什么
AI 助手适合用外部 API 接入,但要控制权限、提示词和日志。
先确认接入方式再动手
AI 助手接入个人网站,常见做法是调用外部 API。个人服务器跑不动大模型,自己部署既占资源又难维护,API 方式按需请求,轻量且容易替换服务商。
动手之前要分清三个问题:数据从哪里来、请求怎么转发、结果怎么存。很多人只盯着前端对话框能不能回复,忽略了后台的密钥管理、提示词配置和日志策略,等上线后才发现改一处要牵连好几处。
密钥和提示词必须放后台
API Key 不能出现在前端页面或静态文件里,否则等于把账户凭证公开在源码中。正确做法是让后台保存密钥,前端只提交用户输入,由服务端拼接请求参数。
PHP 处理时,配置项建议单独建表或写在配置文件里,不要散落在各个控制器中。后台至少要有这几项:模型接口地址、API Key、默认提示词、最大返回长度、日志开关。这样更换模型或调整语气时,不需要改动代码。
提示词要引用站点真实资料,否则 AI 回答会和网站内容脱节。比如个人介绍、服务范围、联系方式,应该从数据库读取后拼进系统提示词,而不是让 AI 凭训练数据猜测你是谁。
服务端转发是安全底线
前端 JavaScript 直接请求 AI 接口并携带密钥,属于常见错误。浏览器开发者工具里能看到完整请求头,密钥一旦暴露,任何人都能冒用你的额度。
PHP 端做转发时,逻辑大致如下:
```php
// 接收前端传来的用户消息
$userMessage = $_POST['message'] ?? '';
// 从后台配置读取密钥,而不是写在代码里
$apiKey = getConfig('ai_api_key');
$prompt = getConfig('ai_system_prompt');
// 组装请求参数
$payload = [
'system' => $prompt,
'message' => $userMessage,
'max_tokens' => (int)getConfig('ai_max_tokens'),
];
// 调用远程接口并返回结果
$response = callAiApi($apiKey, $payload);
echo json_encode(['reply' => $response]);
```
这段代码只说明处理结构,实际函数需要根据你选的接口规范来写。关键判断点是:密钥只在服务端出现,用户输入经过过滤,返回内容由 PHP 输出而不是让前端直接连第三方。
日志只留摘要不存全文
AI 对话日志如果完整保存,数据库会快速膨胀。一次对话可能几千字,频繁使用的话,几个月就能积累大量无用数据。
建议日志只记录这些字段:请求时间、用户标识(如果有登录体系)、消息长度、接口响应状态码、消耗的 token 数。对话原文不落库,除非你有明确的审核或客服需求。
日志的另一个用途是排查故障。接口返回超时或报错时,先看日志里记录的状态码和错误信息,能快速判断是网络问题、密钥失效还是参数格式不对。没有日志的话,出问题只能盲猜。
容易出错的位置
权限控制经常被忽略。AI 助手如果允许访客随意使用,可能被刷爆额度。个人网站流量不大时风险有限,但至少应该做基础防护:限制单 IP 每日请求次数、限制单次消息长度、后台可以一键关闭 AI 功能。
错误提示也要设计好。接口超时、密钥失效、内容过滤命中,这三种情况应该返回不同的提示语。用户看到“服务暂时不可用”和“请求过于频繁”感受完全不同,排查时也能缩小范围。
另一个隐蔽问题是字符编码。AI 接口返回的内容可能包含特殊符号或换行,存入数据库前要统一字符集,输出到页面时要做好转义,防止 XSS 注入。用户输入的消息同样要过滤,不能直接拼进 SQL 查询。
检查是否真正可用
功能上线后,换一个环境重新测试。电脑浏览器、手机浏览器各试一次,确认对话框布局正常、请求能发出、回复能显示。还要检查后台能否修改提示词并立即生效,而不是改完还要重启服务。
更重要的检查是关掉 AI 功能后网站是否照常运行。接入第三方服务意味着依赖外部可用性,如果 API 服务商故障,你的页面不能跟着崩溃。代码里要加超时控制和异常捕获,请求失败时给用户一个友好提示,而不是白屏或 500 错误。
维护时先看记录再动手
接手这类功能时,先看后台配置项和日志结构,比读代码更快理解系统。配置项能看出接入了哪家服务、提示词写了什么、日志开了多久;代码只是执行这些配置的工具。
遇到异常不要连续修改多处。先记录当前现象和日志时间点,再逐项排查:密钥是否过期、请求格式是否变化、接口地址是否仍然有效。原因不明时改代码,往往会把问题搞得更复杂。
AI 助手接入个人网站,本质上是一个带外部依赖的后台功能。把密钥管好、提示词可配置、日志有摘要、错误能定位,这套结构稳定之后,后续加站内知识检索或回答来源链接,都只是在现有框架上扩展,不需要推翻重来。
评论
登录后可发表评论。