laravel对接百度智能云 实现智能机器人

news2024/12/25 12:35:57

创建API Key和 Secret Key进入网址:百度智能云千帆大模型平台

如下图操作:

填写完毕点击确认后,即可得到sk和ak

 后端接口实现代码:

  //调用百度智能云第三方机器人接口
    public function run($text) {
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-4.0-8k-0104?access_token={$this->getAccessToken()}",
            CURLOPT_TIMEOUT => 30,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_SSL_VERIFYPEER  => false,
            CURLOPT_SSL_VERIFYHOST  => false,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS =>'{
                               "messages":
                                    [
                                        {
                                             "role":"user",
                                             "content":'.'"'.$text.'"'.'
                                        }
                                    ],
            "temperature":0.8,
            "top_p":0.8,
            "penalty_score":1,
            "disable_search":false,
            "enable_citation":false,
            "enable_trace":false
            }',

            CURLOPT_HTTPHEADER => array(
                'Content-Type: application/json'
            ),

        ));

        $response = curl_exec($curl);
        curl_close($curl);
        return $response;
    }

    /**
     * 使用 AK,SK 生成鉴权签名(Access Token)
     * @return string 鉴权签名信息(Access Token)
     */
    private function getAccessToken(){
        $config = config('services.lev');
        $curl = curl_init();
        $postData = array(
            'grant_type' => 'client_credentials',
            'client_id' => '你的ak',
            'client_secret' => '你的sk'
        );
        curl_setopt_array($curl, array(
            CURLOPT_URL => 'https://aip.baidubce.com/oauth/2.0/token',
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_SSL_VERIFYPEER  => false,
            CURLOPT_SSL_VERIFYHOST  => false,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POSTFIELDS => http_build_query($postData)
        ));
        $response = curl_exec($curl);
        curl_close($curl);
        $rtn = json_decode($response);
        return $rtn->access_token;
    }

    public function info_request()
    {
        $text = request()->get('content');
        $rtn = (new LevitatefSphereController())->run($text);
        return $rtn;
    }

    public function levitated()
    {
        return view('levitated_view');
    }

 页面HTML代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Simple Chat Box</title>
    <link rel="stylesheet" href="{{ asset('static/levitated-css.css') }}" />
    <style>
        body {
            overflow-y: hidden; /* 隐藏垂直滚动条 */
        }
        #box {
            width: 1000px;
            height: 100%;
            margin: 0px auto;
            /*position: relative;*/
        }
        #chat-box {
            width: 900px;
            height: 670px;
            overflow: auto;
            border: 1px solid #ccc;
            border-radius: 10px 10px 0px 0px;
            padding: 8px;
            background-color: #ffffff;
        }
        #message-input{
            width: 916px;
            height: 110px;
            border: 1px solid #ccc;
            /*pointer-events:none;*/
            border-top:none;
            /*position: absolute;*/
            border-radius: 0px 0px 10px 10px;
            background-color: #ffffff;
        }
        #btn{
            /*width: 80px;*/
            border-radius: 10px;
            border: none;
            background-color: #8a57ea;
            color: #ffffff;
            margin-left: 820px;
            /*position: absolute;*/
            position: relative;
            bottom: 45px;
            padding: 10px 20px;
        }
        .input-div{
            width: max-content;
            padding: 10px 20px;
            border-radius: 8px 8px 0px 8px;
            float : right;
            color: #ffffff;
            margin: 10px;
        }
        .answer-div{
            width: 700px;
            padding: 10px 20px;
            border-radius: 0px 10px 10px 10px;
            /*float : left;*/
            clear: both;
            margin: 10px;
        }
        .loading {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(255, 255, 255, 0.8);
            z-index: 9999;
            text-align: center;
            padding-top: 20%;
            font-size: 24px;
            color: #333;
        }

        .logo{
            width: 40px !important;
            height: 40px !important;

        }

    </style>
</head>
<body>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="box">
    <div id="chat-box"></div>

    <div  onfocus="divFocusMess()" onclick="divClickMess()" onblur="divBlurMess()"  contenteditable = "true" tabindex="0" id="message-input" onkeydown="handleEnter(event)" onkeyup="keyup(event)" style="word-break: break-word;"></div>
    <button onclick="sendMessage()" id="btn" >提问</button>
    <div class="loading" id="loading">正在加载中 请耐心等待...</div>
</div>
<script>
    var chatbox = document.getElementById("chat-box");
    var message = document.getElementById('message-input').innerHTML;
    if(message == ''){
        document.getElementById('message-input').innerHTML = '输入消息';
    }
    function divClickMess(){ //点击时为空
        document.getElementById('message-input').innerHTML = '';
    }
    function divBlurMess(){ //失焦时设置为输入信息
        document.getElementById('message-input').innerHTML = '输入消息';
    }
    function divFocusMess(){ //聚焦时为空
        document.getElementById('message-input').innerHTML = '';
    }
    // function divSelMess(){
    //     document.getElementById('message-input').innerHTML = '';
    // } onselect="divSelMess()"

    function scrollToBottom() {
        chatbox.scrollTop = chatbox.scrollHeight;
    }
    window.onload = function() {
        var chatbox = document.getElementById("chat-box");
        chatbox.scrollTop = chatbox.scrollHeight;
    }
    function sendMessage() {
        //获取输入框内容
        var message = document.getElementById('message-input').innerHTML;

        var chatBox = document.getElementById('chat-box');
        // 清除输入框的内容
        document.getElementById('message-input').innerHTML = '';
        // 在聊天框中添加消息
        chatBox.innerHTML += '<div class="input-div" style="background-color: #8a57ea;">' + message + '</div><div style="clear: both"></div>';
        document.getElementById('loading').style.display = 'block';
        document.getElementById('message-input').innerHTML = '';
        // 在这里处理加载完成后的操作,例如显示答案等
        $.ajax({
            url:'info_request',//请求的路由接口
            data:{content:message},//传值
            type:'get',//接口类型
            dataType:'json',
            success:function (res){
                var result = res.result;
                document.getElementById('loading').style.display = 'none';
                //将返回的答案展示在页面上
                chatBox.innerHTML += '<img class="logo" src="{{asset('static/images/levitated.png')}}"><div class="answer-div"  style="background-color: #f8f8f8">' + result.replace(/\n/g, '<br>') + '</div>';
                //自动展示最新,将滚轮滑动至最下方
                if (chatbox.scrollHeight - chatbox.scrollTop - chatbox.clientHeight > 10) {
                    scrollToBottom();
                }
            }
        })
    }

    function handleEnter(event) {
        // 检查按下的键是否是回车键
        if(event.key === "Enter") {
            // 可以在这里添加其他的逻辑处理
            var message = document.getElementById('message-input').innerHTML;
            var chatBox = document.getElementById('chat-box');
            // 清除输入框的内容
            document.getElementById('message-input').innerHTML = '';

            // 在聊天框中添加消息
            chatBox.innerHTML += '<div class="input-div" style="background-color: #8a57ea;">' + message + '</div><div style="clear: both"></div>';
            document.getElementById('loading').style.display = 'block';
            document.getElementById('message-input').innerHTML = '';
            // 在这里处理加载完成后的操作,例如显示答案等
            $.ajax({
                url:'info_request',//请求的路由接口
                data:{content:message},//传值
                type:'get',//接口类型
                dataType:'json',
                success:function (res){
                    var result = res.result;
                    // 停止加载
                    document.getElementById('loading').style.display = 'none';
                    //将返回的答案展示在页面上
                    chatBox.innerHTML += '<img class="logo" src="{{asset('static/images/levitated.png')}}"><div class="answer-div"  style="background-color: #f8f8f8">' + result.replace(/\n/g, '<br>') + '</div>';
                    //自动展示最新,将滚轮滑动至最下方
                    if (chatbox.scrollHeight - chatbox.scrollTop - chatbox.clientHeight > 10) {
                        scrollToBottom();
                    }
                }

            })
            event.preventDefault(); // 阻止 Enter 键的默认行为
            return false;
        }

    }

</script>

</body>
</html>

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

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

相关文章

I/O系统

1. I/O接口 接口可以看做两个系统或两个部件之间的交接部分&#xff0c;它既可以是两种硬设备之间的连接电路&#xff0c;也可以是两个软件之间的共同逻辑边界。 I/O接口通常是指主机与I/O设备之间设置的一个硬件电路及其相应的软件控制。 2. 程序查询方式 程序查询方式是一…

代码统计工具V1.0.0(支持各种文件类型)

点击下载《代码统计工具&#xff08;支持各种文件类型&#xff09;》 1. 前言 本文介绍了一款使用C#开发的代码行数统计软件。该软件允许用户通过选择文件目录和设置统计项目类型&#xff0c;来统计指定目录下的代码行数。软件提供了三种统计方式&#xff1a;按文件名统计、按…

虹科技术丨Linux环境再升级:PLIN驱动程序正式发布

来源&#xff1a;虹科技术丨Linux环境再升级&#xff1a;PLIN驱动程序正式发布 原文链接&#xff1a;https://mp.weixin.qq.com/s/N4zmkYXTPr7xm-h2s7QiLw 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; #PLIN #LIN #LIN接口 导读 Linux驱动程序领域再添新成员&am…

关于RAG优化的几个小技巧

一、背景说明 RAG技术为大型语言模型&#xff08;LLMs&#xff09;提供了从数据源检索到的信息&#xff0c;以支撑其生成的答案。简而言之&#xff0c;RAG就是搜索加上LLM提示&#xff0c;你让模型在提供的信息上下文中回答问题。查询和检索到的上下文都被注入到发送给LLM的提…

js删除el-table删除新增项,有的已经保存有的未经保存

有时候在弹窗中的弹窗要删除数据,有的是刚新增进来的,没有经过保存就没有id,有的已经保存过就有id 根据情况设定是否为编辑模式,如果为编辑模式就需要进行筛选删除及接口,如果不是编辑模式,只需要进行筛选删除 this.editFlag true; // 为编辑模式// 删除伤亡名单handelDel() …

基于高通8155的SNPE-PTQ量化方法介绍

一、基于高通8155的SNPE-PTQ量化与打包 量化位置与工作目录&#xff0c;snpe1.51与1.43环境结构相同&#xff0c;下面以1.51为例介绍&#xff1a; SNPE1.51量化&#xff1a;172.20.84.162:/media/share_31.106SNPE1.43量化&#xff1a;172.20.65.2:/media/share_31.106 脚本…

离线翻译软件哪个好用?5款离线翻译器带你解决语言交流难题~

熬过了高考这一大关&#xff0c;也是时候给自己放放松&#xff0c;奖励自己一趟说走就走的旅行了&#xff01;正好这不周边几个国家都开放了免签政策&#xff0c;借此机会出国游也是一个不错的选择~ 不过出国旅行最怕的还是沟通问题&#xff0c;幸运的是现在可有不少好用的离线…

[游戏开发][UE5]引擎学习记录

C Log和蓝图Log C Log 方法 UE_Log(参数1&#xff0c;参数2&#xff0c;参数3) //举例: UE_LOG(LogTemp, Error, TEXT("Log Info: %s"),"Test Log"); 三个参数的作用 参数1&#xff1a;输出窗口归类使用&#xff0c;你写什么它就显示什么 参数2&#x…

二叉树基础篇

目录 一.树形结构 二.基本概念 三.二叉树种类及性质 1.满二叉树 2.完全二叉树 3.完满二叉树 4.平衡二叉树 5.二叉树的性质 6.性质相关习题 四.二叉树的存储方式 五. 二叉树的遍历方式 六.二叉树的定义 一.树形结构 树是一种非线性的数据结构&#xff0c;它是由n&#…

SAP QM 取消UD 决策

SAP QM 取消UD 决策。 SAP提供了相关Notes用于取消UD决策。 C24010PA 这个批次已经做了UD 决策 C24010PA目前库存已经是非限制库存 执行操作 成功后检查,自动产生了322,检验批状态也变回来了。 取消原来的生产入库也是Ok的。 测试成功。 需要用到以下两个Notes。 Notes(S…

【深度学习】深度学习基础

李宏毅深度学习笔记 局部极小值与鞍点 鞍点其实就是梯度是零且区别于局部极小值和局部极大值的点。 鞍点的叫法是因为其形状像马鞍。鞍点的梯度为零&#xff0c;但它不是局部极小值。我们把梯度为零的点统称为临界点&#xff08;critical point&#xff09;。损失没有办法再下…

【机器学习】自然语言处理的新前沿:GPT-4与Data Analysis

目录 1、生成二维码Prompt&#xff1a;请用二维码编码这个信息&#xff0c;我爱chatgpt2、分析PDFPrompt&#xff1a;请分析这篇pdf的主要内容&#xff0c;用中文输出分析结果&#xff0c;100字3、设计网站Prompt&#xff1a;请帮我设计一个网站&#xff0c;网站的主题是哪吒玩…

下穿隧道结构安全该如何保证,检测跟自动化监测该如何抉择

隧道监测背景&#xff1a; 隧道所处的地下环境较为复杂&#xff0c;易受地质条件恶化、结构损伤、退化失稳以及自然灾害等因素影响&#xff0c;引发隧道拱顶开裂、边墙开裂、衬砌损坏、隧道渗漏水、围岩大变形等病害&#xff0c;从而导致隧道安全事故发生&#xff0c;尤其在长期…

查普曼大学团队使用惯性动捕系统制作动画短片

道奇电影和媒体艺术学院是查普曼大学的知名学院&#xff0c;同时也是美国首屈一指的电影学院之一&#xff0c;拥有一流电影制作工作室。 最近&#xff0c;道奇学院的一个学生制作团队接手了一个项目&#xff0c;该项目要求使用真人动作、视觉效果以及真人演员和CG角色之间的互动…

斜光测距的原理及python实现

1.前言 最近做了一个基于opencv的斜光测距的小项目&#xff0c;东西不多&#xff0c;但是很有意思&#xff0c;值得拿出来学一学。项目里面需要比较精确的定位功能&#xff0c;将前人matlab代码移植到python上&#xff0c;并且做了一些优化&#xff0c;简化逻辑(毕竟我是专业的…

智芯开发板----环境配置

一、软件准备 Keil IDE/ IAR IdeSupport_Install_Package已经上传到资源中自行下载即可。 二、IAR环境配置 1.首先将IdeSupport_Install_Package内的IAR文件复制到你的IAR安装路径中如图所示&#xff1a; 2.按如图所示的路径进行复制即可 3.以记事本的方式打开这个xml文件…

基于大数据架构的内容安全风控与分析

1 项目介绍 1.1 研究目的和意义 在数字化时代&#xff0c;内容安全成为了互联网企业面临的一个重要挑战。海量数据的产生与传播&#xff0c;伴随着不良信息和网络安全威胁的日益增加。因此&#xff0c;本课题旨在通过构建一个基于大数据架构的内容安全风控与分析系统&#xf…

绿盟又行了,漏管市场占有率第一

漏洞管理平台 吉祥学安全知识星球&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 今天看到不少朋友圈在转发&#xff…

用合成数据训练边缘侧火灾检测器

火灾是人类面临的重大威胁&#xff0c;检测火灾至关重要。目前的火焰传感器在距离检测方面存在局限性。为了克服这个问题&#xff0c;我的目标是使用机器学习方法创建一个轻量级且高度准确的火灾检测系统。当需要实时数据处理或机器学习模型可用的数据集很少时&#xff0c;这个…