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

创建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.mzph.cn/pingmian/37315.shtml

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

相关文章

阿一网络安全培训中心专门为你准备了一份WScan使用教程

下载地址&#xff1a;https://github.com/chushuai/wscan/releases 版本的选择 Windows就选windows_amd64 Linux就选linux_amd64 mac就选darwin_amd64 下载好后&#xff0c;运行一次exe会生成一个config.yaml文件 把该文件中plugins下面的所有插件的enabled设置为True。&…

数据库使用笔记

1.mysql数据库频繁访问导致连接超时 解决办法一&#xff1a; 优化查询&#xff1a;检查并优化SQL查询语句&#xff0c;减少不必要的数据库调用。增加连接池大小&#xff1a;如果应用程序使用连接池&#xff0c;可以考虑增加连接池的最大连接数。&#xff08;注&#xff1a;不能…

Nginx网站服务详解(设置并发数、实现不同虚拟主机等)

一、nginx的最大并发数设置已经状态收集模块 [root192 nginx]# cat nginx.conf # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/user ngin…

单源最短路径问题(Dijstra)

#include<iostream> using namespace std; #define MAX 500 #define INT 999 typedef struct {char vex[MAX];int Edge[MAX][MAX];int vexnum,arcnum; }MGraph; void InitMG(MGraph &MG) {cout<<"输入顶点数和边数&#xff1a;";cin>>MG.vexnu…

SOBEL图像边缘检测器的设计

本项目使用FPGA设计出SOBEL图像边缘检测器&#xff0c;通过分析项目在使用过程中的工作原理和相关软硬件设计进行分析详细介绍SOBEL图像边缘检测器的设计。 资料获取可联系wechat 号&#xff1a;comprehensivable 边缘可定义为图像中灰度发生急剧变化的区域边界,它是图像最基本…

linux中find命令和exec的强大组合用法

如何将 find 命令与 exec 一起使用 Find 是一个已经非常强大的命令&#xff0c;用于根据许多条件搜索文件。exec 命令使您能够处理 find 命令的结果。 我在这里分享的例子只是一瞥。find-exec 命令组合在一起为您提供了在 Linux 命令行中执行操作的无限可能。 find 和 exec 命令…

Llama 3 模型微调的步骤

环境准备 操作系统&#xff1a;Ubuntu 22.04.5 LTS Anaconda3&#xff1a;Miniconda3-latest-Linux-x86_64 GPU&#xff1a; NVIDIA GeForce RTX 4090 24GStep 1. 准备conda环境 创建一个新的conda环境&#xff1a; conda create --name llama_factory python3.11激活刚刚创…

[每周一更]-(第103期):GIT初始化子模块

文章目录 初始化和更新所有子模块分步骤操作1. 克隆包含子模块的仓库2. 初始化子模块3. 更新子模块 查看子模块状态提交子模块的更改处理子模块路径错误的问题 该问题的缘由是因为&#xff1a;在写某些代码的时候&#xff0c;仓库中有些文件夹&#xff0c;只提交了文件夹名称到…

使用 Ubuntu x86_64 平台交叉编译适用于 Linux aarch64(arm64) 平台的 QT5(包含OpenGL/WebEngine支持) 库

使用 Ubuntu AMD64 平台交叉编译适用于 Linux ARM64 平台的 QT5(包含 OpenGL/WebEngine 支持) 库 目录 使用 Ubuntu AMD64 平台交叉编译适用于 Linux ARM64 平台的 QT5(包含 OpenGL/WebEngine 支持) 库写在前面前期准备编译全流程1. 环境搭建2. 复制源码包并解压&#xff0c;创…

在Mac上恢复丢失或未保存的Word文档的5种有效方法

“救命&#xff01;我想在Mac上恢复丢失的Word文档。就在 1 小时前&#xff0c;我错误地删除了它们&#xff0c;并清空了垃圾桶。这些Word文档对我来说非常重要。我不知道如何恢复它们&#xff0c;谁能帮我&#xff1f;提前致谢&#xff01; 没有什么比忘记保存 Word 文档或在…

3d模型里地毯的材质怎么赋予?---模大狮模型网

在进行3D建模时&#xff0c;赋予地毯逼真的材质是营造现实感和增强场景氛围的重要步骤。模大狮将介绍在常见的3D建模软件中&#xff0c;如何有效地为地毯赋予各种材质&#xff0c;以及一些实用的技巧和注意事项。 一、选择合适的地毯材质 在3D建模中&#xff0c;地毯的材质选择…

双向长短期记忆神经网络BiLSTM

先说一下LSTM LSTM 是一种特殊的 RNN&#xff0c;它通过引入门控机制来解决传统 RNN 的长期依赖问题。 LSTM 的结构包含以下几个关键组件&#xff1a; 输入门&#xff08;input gate&#xff09;&#xff1a;决定当前时间步的输入信息对细胞状态的影响程度。遗忘门&#xff…

C盘满了怎么办?用这方法彻底拯救你的C盘

C盘满了怎么办&#xff1f;用这方法彻底拯救你的C盘。我们的C盘是整个电脑运行的核心部分&#xff0c;里面装载了很重要的系统框架和数据&#xff0c;由于使用的时间越来越长&#xff0c;C盘也会积累很多的垃圾&#xff0c;这样就经常容易出现爆满的情况。 对于C盘爆满&#x…

扫扫地,搞搞卫生 ≠ 车间5S管理

在制造业的日常运营中&#xff0c;车间管理是一项至关重要的工作&#xff0c;它直接关系到生产效率、产品质量以及员工的工作环境。然而&#xff0c;许多人常常将简单的“扫扫地&#xff0c;搞搞卫生”等同于车间5S管理&#xff0c;这种误解不仅可能导致管理效果不佳&#xff0…

Halcon 如何让图像自适应窗口

一 如何让图像自适应窗口 read_image(Image,1)get_image_size(Image,Width, Height)dev_close_window()dev_open_window(0,0,Width/2,Height/2,black,WindowHandle)dev_set_part(0,0,Height-800,Width-800)dev_display(Image)二 如何实现彩色图像转化为灰色图像 read_image(I…

浅谈逻辑控制器之Switch控制器

浅谈逻辑控制器之Switch控制器 Switch Controller是Apache JMeter中一个强大的逻辑控制器&#xff0c;它允许用户基于特定的变量值或参数来控制哪些子采样器被执行。与简单地按照配置顺序执行的控制器不同&#xff0c;Switch Controller根据提供的“switch value”来决定执行哪…

深度相机识别物体——实现数据集准备与数据集分割

一、数据集准备——Labelimg进行标定 1.安装labelimg——pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple 2.建立相应的数据集存放文件夹 3.打开labelimg&#xff0c;直接在命令行输入labelimg即可&#xff0c;并初始化 4.开始标注&#xff0c;设置标注好…

【人工智能学习之图像操作(三)】

【人工智能学习之图像操作&#xff08;三&#xff09;】 图像滤波滤波概念卷积平滑算子均值滤波高斯滤波中值滤波双边滤波锐化算子USM锐化梯度算子 傅里叶变换直方图直方图直方图均衡化自适应均衡化2D 直方图直方图反向投影 图像滤波 滤波概念 滤波过程就是把不需要的信号频率…

Navicat安装与连接教程

navicat 的安装 官网&#xff1a;https://www.navicat.com.cn/ 进入官网之后点击左上角的产品&#xff0c;然后往下滑动就可以看见许多类型&#xff0c;我们使用的是MongoDB数据库&#xff0c;所以就下载Navicat 17 for MongoDB 进入到这里之后&#xff0c;选择自己的系统版本…

J2EE框架之mybatis学习——连接数据库实现查询操作

J2EE框架之mybatis学习——连接数据库实现查询操作 作业要求&#xff1a; 作者&#xff1a;杨建东 关于具体内容我正准备更新至我的CSDN【被瞧不起的神】也可移步我的公众号【猿小馆】 结合老师的课件和黑马程序员的课程学习。 因为我上课老师已经讲过了基本的概念和理解&a…