AI客服问答自动生成文章(基于deepseek实现)

news2025/5/10 14:57:16

小编一直在用AI做网站平台文章的润色或者二创。一直有一个想法,在自己网站加一个AI智能客服,通过文心或者deepseek来智能回答网友提出的问题,这样就能减少很多人工回复的麻烦,提高互动效率。

开发背景

其实很多网友提出的问题非常有针对性,而且对于其他网友来说也是非常迫切想解决的共性问题,所以我就想把网友提问和AI智能回复的内容自动整理成文章自动发布到网站平台的问答专区。这样做有两个目的:

1、现在的AI大模型已经非常成熟,大多AI的回复也比较中肯实用

2、本身网站内容的更新也需要关键词或者标题,往往自己去抓取的关键词还不如网友的问题更具有实用性

具体实现

因为我的网站是基于zblog搭建的博客,我的想法就是前台直接加一个栏目菜单作为问答窗口,然后后端识别到用户的提问后直接转到deepseek或者百度文心进行创作,把创作后的内容再返回到前端问答窗口,最后再同步把网友的问题作为标题,把AI返回的内容作为文章内容进行入库操作,这样就能通过网友的问答实时更新网站文章。

1、前端

前端我通过写了一个聊天窗口的插件,嵌入到菜单栏,中途也让deepseek给我做了一个前端的简化,通过js传参数到后端。

前端传参代码:

  // 调用API获取AI回复
            async function fetchAIResponse(userMessage) {
                try {
                    // 创建FormData对象并添加reply参数
                    const formData = new FormData();
                    formData.append('reply', userMessage);
                    
                    const response = await fetch('/zb_users/plugin/yx_ai_kefu/ling/reply.php', {
                        method: 'POST',
                        body: formData
                    });
                    
                    if (!response.ok) {
                        throw new Error(`API请求失败: ${response.status}`);
                    }
                    
                    // 直接解析为JSON对象,JavaScript会自动处理Unicode转义序列
                    return await response.json();
                } catch (error) {
                    console.error('API请求错误:', error);
                    throw error;
                }
            }

中间转码这些细节就不多说了。

2、后端

后端主要是通过调用AI的API接口并实现参数返回,我最开始想用deepseek,也成功接入并测试了,效果还不错,不过我想用一个免费的并且效果比较好的,于是我直接用了百度的智能体API,百度智能体可以免费实用deepseek模型,GPT4模型,不过通过API每天的调用上限是500条,我看我目前的每日提问数量也差不多够了,果断选择百度智能体API。

智能体API申请也很简单,直接百度搜:百度智能体,然后登录自己的百度账号建立一个与你网站内容相关的智能体,然后点击”部署“,选择通过API部署,会自动生成一个密钥,接入方式大同小异。

$url = "https://agentapi.baidu.com/assistant/getAnswer?appId=xxxaaa&secretKey=xxxxxx";

$postdata = [
    "message" => [
        "content" => [
            "type" => "text",
            "value" => [
                "showText" => $reply
            ]
        ]
    ],
    "source" => "xxxxx",
    "from" => "openapi",
    "openId" => $userid
];

$ajax = Network::Create();
$ajax->open('POST', $url);
$ajax->setTimeOuts(600, 600, 0, 0);
$ajax->setRequestHeader('Content-Type', 'application/json');
$ajax->setRequestHeader('User-Agent', 'Apifox/1.0.0 (https://apifox.com)');
$ajax->setRequestHeader('Accept-Encoding', 'gzip');
$ajax->setRequestHeader('Authorization', 'Bearer '.$AppID);
curl_setopt($ajax->ch, CURLOPT_ENCODING, 'gzip');
$ajax->send(json_encode($postdata, JSON_UNESCAPED_UNICODE));

// 获取原始响应
$response = json_decode($ajax->responseText, true);

if (isset($response['data']['content'][0]['data'])) {
    $text2 = $response['data']['content'][0]['data'];
    $text = preg_replace("#^(好的|以下|为你|请注意)[^\n]+\n\n#", '', $text2);
            $text = preg_replace("#(^|\n\n)(内容概要|正文|内容|概要|标题)(:)?\n\n#isu", "\n", $text);
            $text = str_replace('\\n\\n', "\n", $text);
            
   // 创建文章
  $Parsedown = new \Parsedown();
   $content = $Parsedown->text($response['data']['content'][0]['data']);
      try {
    // 新建文章对象
    $categoryId=49;
    $article = new Post();
    $article->Title = $reply; // 截取用户提问作为标题
    $article->Content = $content;
    $article->Intro = ''; // 摘要可为空
    $article->CateID = $categoryId; // 设置栏目ID
    $article->AuthorID = $userid; // 当前用户ID
    $article->PostTime = time(); // 当前时间
    $article->Status = 0; // 0:草稿 1:等待审核 2:公开 3:私有
    
    // 保存文章
    $article->Save();

实测效果还不错,返回参数的同时直接转码入库就可以了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2372384.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Web MVC基础理论和使用

目录 什么是MVC 什么是SpringMVC SpringMVC基础使用 建立连接 RequestMapping介绍 请求 传递参数 传递对象 参数重命名 传递数组 传递JSON数据 获取URL中参数 上传文件 获取Cookie/Session 获取Header 响应 返回静态页面 RestController和Controller的区别 返…

课程审核流程揭秘:确保内容合规与用户体验

业务流程 为什么课程审核通过才可以发布呢? 这样做为了防止课程信息有违规情况,课程信息不完善对网站用户体验也不好,课程审核不仅起到监督作用,也是 帮助教学机构规范使用平台的手段。 如果流程复杂用工作流 说明如下&#xff…

Mac电脑,idea突然文件都展示成了文本格式,导致ts,tsx文件都不能正常加载或提示异常,解决方案详细说明如下

有一天使用clean my mac软件清理电脑 突然发现idea出现了文件都以文本格式展示,如图所示 然后就卸载,计划重新安装,安装了好几个版本,并且setting->file types怎么设置都展示不对,考虑是否idea没卸载干净&#xff…

HarmonyOS开发-组件市场

1. HarmonyOS开发-组件市场 HarmonyOS NEXT开源组件市场是一个独立的插件,需通过DevEco Studio进行安装,可以点击下载,无需解压,直接通过zip进行安装,具体安装和使用方法可参考HarmonyOsNEXT组件市场使用说明。Harmony…

vison transformer vit 论文阅读

An Image is Worth 16x16 Words 20年的论文看成10年的哈斯我了 [2010.11929] 一张图像胜过 16x16 个单词:用于大规模图像识别的转换器 --- [2010.11929] An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale 为什么transformer好训练&am…

物理服务器紧急救援:CentOS系统密码重置全流程实战指南

前言 在企业IT运维实践中,物理服务器密码丢失是典型的"低概率高风险"事件。某金融科技公司曾因核心服务器密码遗失导致业务中断36小时,直接损失超过800万元。这起真实案例揭示了系统密码管理的关键性——当承载重要业务的物理服务器遭遇密码丢…

Linux系统下使用Kafka和Zookeeper

Apache Kafka 是一个分布式流处理平台,最初由 LinkedIn 开发,后来成为 Apache 软件基金会的顶级项目。它具有高吞吐量、可扩展性、持久性、容错性等特点,主要用于处理实时数据流。 Linux系统下使用Kafka 1.安装 Java Kafka 和 Zookeeper 都是基于 Java 开发的,所以需要先…

Unity按钮事件冒泡

今天unity写程序时,我做了一个透明按钮,没图片,只绑了点击事件,把子对象文字组件也删了,空留一个透明按钮,此时运行时点击按钮是没有反应的,网上的教程说必须指定target graphic(目标…

指令图像编辑模型:ICEdit-MoE-LoRA

ICEdit-MoE-LoRA 一、研究背景与目标 In-Context Edit 是一种新颖的基于指令的图像编辑方法,旨在实现与现有最佳方法相当甚至更优的编辑效果。传统图像编辑技术在处理复杂指令时存在一定局限性,尤其是在多轮编辑任务中,结果的准确性和连贯性…

捌拾叁- 量子傅里叶变换

1. 前言 最近公司地震,现在稍微有点时间继续学习。 看了几个算法,都说是基于 量子傅里叶变换 ,好,就是他了 Quantum Fourier。 2. 傅里叶变换 大学是学通信的,对于傅里叶变换还是有所理解的。其实就是基于一个 时域…

2.在Openharmony写hello world

原文链接:https://kashima19960.github.io/2025/03/21/openharmony/2.在Openharmony写hello%20world/ 前言 Openharmony 的第一个官方例程的是教你在Hi3861上编写hello world程序,这个例程相当简单编写 Hello World”程序,而且步骤也很省略&…

STM32外设-串口UART

STM32外设-串口UART 一,串口简介二,串口基础概念1,什么是同步和异步/UART与USART对比2,串行与并行3,波特率 (Baud Rate)4,数据帧 (Data Frame)5,TX 和 RX 三,硬件连接1,u…

MCU存储系统架构解析

今天和大家分享一下MCU存储器层次结构的设计思路。这种分层存储架构通过整合不同特性的存储单元,能够很好地平衡性能与成本需求。 首先是寄存器层,它直接集成在CPU内核里,速度最快(纳秒级),但容量比较小&a…

Linux——MySQL基础

基础知识 连接服务器 mysql -h 127.0.0.1 -P 3306 -u root -p -h 指明登录部署了myqsl服务的主机 -P 指明访问的端口号 -u 指明用户 -p 指明登录密码(可以不填写) 什么是数据库 首先,数据库是分为服务端和客户端的: mysql是客户…

OpenGl实战笔记(2)基于qt5.15.2+mingw64+opengl实现纹理贴图

一、作用原理 1、作用:将一张图片(纹理)映射到几何体表面,提升视觉真实感,不增加几何复杂度。 2、原理:加载图片为纹理 → 上传到 GPU;为顶点设置纹理坐标(如 0~1 范围)&…

【计算机视觉】OpenCV实战项目: opencv-text-deskew:实时文本图像校正

opencv-text-deskew:基于OpenCV的实时文本图像校正 一、项目概述与技术背景1.1 核心功能与创新点1.2 技术指标对比1.3 技术演进路线 二、环境配置与算法原理2.1 硬件要求2.2 软件部署2.3 核心算法流程 三、核心算法解析3.1 文本区域定位3.2 角度检测优化3.3 仿射变换…

Java 23种设计模式 - 结构型模式7种

Java 23种设计模式 - 结构型模式7种 1 适配器模式 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 优点 将目标类和适配者类解耦增加了类的透明性和复用性,将具体的实现封…

数据库(MySQL)基础

一、登录数据库 在linux系统中登录数据库的指令 mysql -h 127.48.0.236 -P 3306 -u root -p -h:填写IP地址,指明要连接的主机。如果不加该字段表示本地主机-P:填写端口号,指明进程。 如果不加该字段会使用默认的端口号。-u&…

Vue 2.0 详解全教程(含 Axios 封装 + 路由守卫 + 实战进阶)

目录 一、Vue 2.0 简介1.1 什么是 Vue?1.2 Vue 2.x 的主要特性 二、快速上手2.1 引入 Vue2.2 创建第一个 Vue 实例 三、核心概念详解3.1 模板语法3.2 数据绑定3.3 事件绑定3.4 计算属性 & 侦听器 四、组件系统4.1 定义全局组件4.2 单文件组件(*.vue …

依赖关系-根据依赖关系求候选码

关系模式R(U, F), U{},F是R的函数依赖集,可以将属性分为4类: L: 仅出现在依赖集F左侧的属性 R: 仅出现在依赖集F右侧的属性 LR: 在依赖集F左右侧都出现的属性 NLR: 在依赖集F左右侧都未出现的属性 结论1: 若X是L类…