本地大模型搭配CMS,网站AI问答功能开发

想在网站上加入AI问答功能,又不想依赖外部API?用本地大模型搭配CMS自己开发,既能保护数据隐私,又能省去调用费用。这篇教程从零开始,带你完成环境搭建、接口编写到CMS嵌入的全过程,最终实现一个能回答访客问题的智能问答模块。 ## 先搞清楚:你的服务器能跑得动吗 本地大模型对硬件有要求,动手前先确认配置。 - **CPU**:建议4核以上,支持AVX指令集。 - **内存**:至少8GB,推荐16GB。7B参数模型量化后约需4-6GB内存。 - **硬盘**:预留10GB以上空间存放模型文件。 - **操作系统**:Ubuntu 20.04/22.04或CentOS 7+,本文以Ubuntu 22.04为例。 如果服务器配置较低,可以选择更小的模型(如Qwen2.5-1.5B或Phi-3-mini),运行速度会快很多。 ## 部署本地大模型推理服务 我们选用Ollama作为推理引擎,它安装简单,支持多种开源模型。 ### 安装Ollama 在终端执行以下命令: ```bash curl -fsSL https://ollama.com/install.sh | sh ``` 安装完成后,启动服务并设置开机自启: ```bash sudo systemctl enable ollama sudo systemctl start ollama ``` 验证服务是否正常: ```bash curl http://localhost:11434/api/tags ``` 如果返回JSON格式的模型列表(可能为空),说明服务已运行。 ### 下载并测试模型 拉取一个轻量级中文模型,例如Qwen2.5-7B的量化版本: ```bash ollama pull qwen2.5:7b ``` 下载完成后,测试模型是否能正常回答: ```bash ollama run qwen2.5:7b "你好,请介绍一下你自己" ``` 看到模型返回文本,说明本地大模型已就绪。 ## 编写AI问答接口 CMS需要通过网络请求调用模型,我们写一个简单的PHP接口作为中转。 在网站根目录创建`ai_api.php`,内容如下: ```php '消息不能为空']); exit; } $data = [ 'model' => 'qwen2.5:7b', 'prompt' => $userMessage, 'stream' => false ]; $ch = curl_init('http://localhost:11434/api/generate'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); curl_setopt($ch, CURLOPT_TIMEOUT, 60); $response = curl_exec($ch); curl_close($ch); $result = json_decode($response, true); $answer = $result['response'] ?? '抱歉,暂时无法回答。'; echo json_encode(['answer' => $answer]); ``` **注意**:`qwen2.5:7b`需替换为你实际拉取的模型名称。接口文件应放在网站可访问目录,但建议通过Nginx限制只允许内部调用或添加简单鉴权。 ## 在CMS中嵌入问答界面 不同CMS嵌入方式不同,这里以通用方法为例,在主题模板中添加一个问答区块。 ### 添加前端HTML和JavaScript 在需要显示问答的页面模板中,加入以下代码: ```html
``` 如果使用WordPress,可以将这段代码放入主题的`functions.php`中通过短代码输出,或直接编辑模板文件。 ### 样式微调 简单加一些CSS让界面更友好: ```css #ai-chat { border: 1px solid #ddd; padding: 15px; border-radius: 8px; max-width: 600px; } #chat-messages { height: 300px; overflow-y: auto; margin-bottom: 10px; background: #f9f9f9; padding: 10px; } #chat-input { width: 70%; padding: 8px; } #ai-chat button { padding: 8px 20px; } ``` ## 避坑指南:这些地方容易出错 - **模型响应慢**:7B模型在CPU上生成128个token可能需要10-20秒。如果访客等待时间过长,可以换用更小模型,或限制回答长度(在API请求中加`"num_predict": 128`)。 - **接口超时**:PHP默认执行时间可能只有30秒,在`ai_api.php`开头加`set_time_limit(120);`。 - **跨域问题**:如果前端和接口不同域,需要在接口中添加`header('Access-Control-Allow-Origin: *');`,但建议指定具体域名。 - **内存不足**:Ollama运行中若报内存错误,尝试量化等级更高的模型,如`qwen2.5:7b-q4_K_M`。 - **安全风险**:接口不要暴露敏感信息,避免被恶意调用。可以加一个简单的token验证,或限制IP访问。 ## 验证效果与后续优化 完成以上步骤后,访问包含问答界面的页面,输入问题测试。如果AI能正确回答,说明本地大模型搭配CMS的网站AI问答功能已开发成功。 若回答不理想,可以从这些方面优化: - **调整提示词**:在`ai_api.php`的prompt前加上系统指令,例如“你是一个网站客服助手,请用简洁的中文回答”。 - **启用流式输出**:将`stream`设为`true`,前端用EventSource接收,实现打字机效果,提升体验。 - **知识库增强**:如果需要回答特定领域问题,可以结合RAG技术,先从网站内容中检索相关段落,再交给模型生成答案。 **关键结论**:本地大模型搭配CMS开发AI问答,核心是让Ollama提供推理API,CMS通过PHP中转调用,前端用JavaScript交互。整个过程不依赖外部服务,数据完全自主可控。 ## 常见疑问 **问:一定要用Ollama吗?** 答:不是。也可以用LocalAI、FastChat等,原理类似。Ollama安装最简单,适合新手。 **问:模型回答速度太慢怎么办?** 答:优先换用更小的模型(如1.5B参数),或者升级服务器CPU/内存。GPU加速效果显著,但成本较高。 **问:CMS有缓存插件会影响吗?** 答:问答接口是动态请求,通常不会被缓存。但如果页面本身被缓存,确保问答区块通过AJAX加载,而不是静态输出。 **问:如何限制每个访客的提问频率?** 答:可以在`ai_api.php`中基于IP或session做简单计数,例如每分钟最多5次,防止滥用。 按照本文步骤操作,你应该已经让网站拥有了一个本地AI问答功能。过程中如果遇到报错,先检查Ollama服务是否运行、模型名称是否正确、PHP的curl扩展是否开启。
分享到:
上一篇
AI大模型部署到本地算力机,API接口开发
下一篇
AI Agent监控网站状态,自动告警故障通知
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意