当前位置: 首页 > news >正文

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>

相关文章:

  • Docker使用daocloud镜像加速
  • 基于python的随机森林回归预测+贝叶斯优化超参数前后训练效果对比
  • 1.k8s:架构,组件,基础概念
  • 和小红书一起参会! 了解大模型与大数据融合的技术趋势
  • 后台运行大师:HarmonyOS 3.0中如何轻松设置APP常驻后台
  • 左耳听风_030_29_推荐阅读分布式数据调度相关论文
  • Vue.js有哪些优点和缺点
  • Redis-实战篇-什么是缓存-添加redis缓存
  • 安卓应用开发学习:通过腾讯地图SDK实现定位功能
  • 在Spring Boot项目中引入本地JAR包的步骤和配置
  • 【SkiaSharp绘图14】SKCanvas方法详解(三)URL注释、按顶点绘制、 是否裁切区域之外、旋转、缩放、倾斜、平移、保存/恢复画布
  • Linux_fileio实现copy文件
  • RK3568平台(USB篇)USB HID设备
  • 【文件上传】
  • Linux CentOS 环境 MySQL 主从复制集群搭建
  • [数据结构]链表的实现在PHP中
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 0基础学习移动端适配
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Android 架构优化~MVP 架构改造
  • Angular2开发踩坑系列-生产环境编译
  • avalon2.2的VM生成过程
  • ES2017异步函数现已正式可用
  • ESLint简单操作
  • jquery cookie
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • log4j2输出到kafka
  • quasar-framework cnodejs社区
  • springMvc学习笔记(2)
  • SSH 免密登录
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • use Google search engine
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 基于HAProxy的高性能缓存服务器nuster
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 聊聊redis的数据结构的应用
  • 前端面试之CSS3新特性
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 说说动画卡顿的解决方案
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #1015 : KMP算法
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)基于IDEA的JAVA基础12
  • (转) Face-Resources
  • (转载)Linux 多线程条件变量同步
  • (轉貼) UML中文FAQ (OO) (UML)
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .net打印*三角形
  • .net和php怎么连接,php和apache之间如何连接