PHP结合星火大模型的智能客服web应用

一、项目目标

随着现代技术的快速发展,大型神经网络模型已经成为解决各种实际问题的强大工具。这些 大模型不仅能够处理海量数据,还具备强大的自动化和智能能力,使它们在自然语言处理、 计算机视觉、语音识别等领域中广受欢迎。同时,许多知名的科技公司和研究机构也提供了 大模型API,使开发者能够轻松访问和应用这些模型。

本项目的目标是让你初步了解大模型应用开发。你将综合运用所学的前端技术和后端技术如 数据库操作,文件操作,正则表达式,重定向等PHP知识,并利用大型神经网络模型的强大 能力来构建一个PHP应用程序。

二、实验内容

创建一个智能客服web应用,功能如下(不一定要实现所有功能,可根据自己能力进行一定改进或简化)

节点一ui布局开发

      ①用户选择咨询方式

②用户查看其历史咨询内容

③用户管理界面

节点二、用户管理

节点三、权限管理

节点四、日志管理

节点五、智能客服咨询方式包括单轮问答,多轮对话,信息选择

节点六、web程序可视化管理功能

三、实验结果

3.1  模块一,登录和注册

密码只能由数字和字母组成,用了正则表达式

3.2  模块二,用户选择咨询方式或服务界面

3.3  模块三,单轮问答

不会联系上一个问题给出答案

3.4  模块四,多轮问答

会联系上一个问题给出答案

3.5  模块五,用户查看其历史咨询内容

只能查看自己所登录账号的历史记录

3.6  模块六,用户管理界面,权限管理

管理员的用户管理界面,可修改所有人的权限,密码,可删除用户

普通用户的用户管理界面,只能修改自己的密码

3.7  模块七,意见反馈(创新功能)

管理员的意见反馈界面,查看所有普通用户发出过的意见反馈

普通用户的意见反馈界面,可提交自己对该系统的意见反馈

四、总结与心得:

4.1 联系上下文多轮问答模块的实现总结与心得:

在“智能客服问答(联系上下文)”界面输入想要问的问题后点击提交,多轮问答的处理文件(web_demo_m.php)用一个变量$question接收所输入问题,从 WebSocket 服务器接收数据后得出问题的答案,同时将这个问答插入到数据库的历史问答表(hView)中,将答案用cookie传递给“智能客服问答(联系上下文)”界面显示在上方文本框中并重定向回这个问答界面。

当问出下一个问题后,会查询数据库,select本id用户在历史问答表(hView)中的问答记录倒序后的第一个问答记录,会结合这个问答记录(也就是上一个问题的问答记录)给出本问题的答案,从而实现联系上下文多轮问答的功能。

4.2 用户管理,用户权限模块的实现总结与心得:

每个用户设置了权限存在数据库中,1表示为管理员,0表示为普通用户。管理员一般为内部人员,在用户管理界面可以修改所有用户的权限,密码,可以删除用户,从而管理员可以权限管理。普通用户为管理员之外的使用该系统的人,在用户管理界面只可以修改自己的密码。修改的新密码只能由数字和字母组成,用了正则表达式。具体实现方法为对数据库的增删改查。

4.3 数据库设计心得:

一个设计了三个表:

用户表(user)包括主键id,用户名(userN),密码(passW),权限(permission),

用于登录和注册,权限1表示为管理员,0表示为普通用户。

历史记录表(hView)存储了所有用户的历史问答,外键id引用user表中的id字段,区分不同用户的历史问答。还包括主键viewId,问题(question),答案(answer)。

意见反馈表(feedback)包括主键和意见反馈(feedback)用于普通用户插入意见反馈,管理员查看意见反馈。

五、关键代码

5.1联系上下文多轮问答模块部分代码

 $question = $_POST['question'];                                 // 获取用户输入的问题
            $data = $this->getBody($Appid, $question);           //问题(传入)
            $client->send($data);

            // 从 WebSocket 服务器接收数据
            $answer = "";
            while (true) {
                $response = $client->receive();
                $resp = json_decode($response, true);
                $code = $resp["header"]["code"];
                echo "从服务器接收到的数据: " . $response;
                if (0 == $code) {
                    $status = $resp["header"]["status"];
                    if ($status != 2) {
                        $content = $resp['payload']['choices']['text'][0]['content'];
                        $answer .= $content;
                    } else {
                        $content = $resp['payload']['choices']['text'][0]['content'];
                        $answer .= $content;
                        $total_tokens = $resp['payload']['usage']['text']['total_tokens'];
                        print("\n本次消耗token用量:\n");
                        print($total_tokens);
                        break;
                    }
                } else {
                    echo "服务返回报错" . $response;
                    break;
                }
            }

            print("\n返回结果为:\n");
            print($answer);                              //结果(传出)   
                                                     
            setcookie("answerM", $answer, time() + 3600); //将$answer存储在名为"answer"的Cookie中
            // 连接到SQLite数据库
            $database = new SQLite3('iC.db');

            $id = $_COOKIE["id_iM"]; //获取iCM.php传来的$id
            // 历史记录插入数据
            $insert_data = "INSERT INTO hView (question, answer, id) VALUES ('$question', '$answer', '$id');";
            $database->exec($insert_data);
            // 检查是否成功插入数据
            if ($database->lastErrorCode() != 0) {
                die('插入数据失败');
            } else {
                echo '成功插入数据';
                header("Location: iCM.php");   //跳转问答界面
                exit();
            }
 // 连接到SQLite数据库
        $database = new SQLite3('iC.db');
        $id = $_COOKIE["id_iM"]; //获取iCM.php传来的$id
        // 通过主键viewId 倒序,查询该用户id数据库最后一条数据
        $query_data = "SELECT * FROM hView where id = '$id' ORDER BY viewId desc limit 0,1";
        $result = $database->query($query_data);
        $row = $result->fetchArray();
        $header = array(
            "app_id" => $appid,
            "uid" => "12345"
        );
        $parameter = array(
            "chat" => array(
                "domain" => "general",
                "temperature" => 0.5,
                "max_tokens" => 1024
            )
        );
        $payload = array(
            "message" => array(
                "text" => array(
                    // 需要联系上下文时,要按照下面的方式上传历史对话
                    array("role" => "user", "content" => (string)$row['question']),
                    array("role" => "assistant", "content" => (string)$row['answer']),
                    // ...省略的历史对话
                    array("role" => "user", "content" => $question)
                )
            )
        );

5.2用户管理模块修改密码的代码

<?php
// 获取用户输入的上传汽车信息
$id = $_COOKIE["id"];
$passW = $_POST['password'];
// 连接到SQLite数据库
$database = new SQLite3('iC.db');
if (preg_match('/^[a-zA-Z0-9]+$/', $passW)){//正则表达式密码只能由数字和字母组成
        // 更新数据
        $update_data = "UPDATE user SET passW = '$passW'WHERE id = '$id'";
        $database->exec($update_data);
        // 检查是否成功插入数据
        if ($database->lastErrorCode() != 0) {
            die('修改数据失败');
        } else {
            echo "<script>alert('修改密码成功')</script>"; //消息框
        }
}else{
        echo "修改失败,密码只能由数字和字母组成";
}
?>

5.3意见反馈模块根据不同权限用户显示不同界面的代码

<body>
    <?php
    $username = $_GET['userN'];

    // 连接到SQLite数据库
    $database = new SQLite3('iC.db');

    // 查询本用户的权限,显示不同界面
    $query_data = "SELECT permission FROM user where userN = '$username' ";
    $result = $database->query($query_data);
    $row = $result->fetchArray();

    if ((string)$row['permission'] == 0) { //普通用户,提交意见
    ?>
        <h1>意见反馈</h1>
        <p>您的意见对我们非常重要</p>
        <form method="POST" action="feedbackS.php">
            <div id="sendVal" style="text-align: center;">
                <input type=" text" id="feedback" name="feedback">
            </div>
            <div id="sendVal" style="text-align: center;">
                <button type=" submit" id="btn">提交</button>
            </div>
        </form>
        <p><a href="choose.php">返回选择服务界面</a> </p>
    <?php } else {                          //管理员用户,查看意见
        // 查询数据
        $query_data = "SELECT * FROM uFeedback";   //查询所有意见
        $result = $database->query($query_data);   ?>
        <table border="1">
            <h1>查看意见反馈</h1>
            <?php while ($row = $result->fetchArray()) { ?>
                <tr>
                    <td><?php echo $row['feedback'] ?></td>
                </tr>
            <?php } ?>
        </table>
        <p><a href="choose.php">返回选择服务界面</a> </p>
    <?php } ?>
</body>

 功能演示视频:PHP结合星火大模型写的智能客服WEB应用2.0_哔哩哔哩_bilibili

  • 34
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值