创建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 += '' + message + '';
- 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 += '/images/levitated.png')}}">' + result.replace(/\n/g, '
') + ''; - //自动展示最新,将滚轮滑动至最下方
- 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 += '' + message + '';
- 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 += '/images/levitated.png')}}">' + result.replace(/\n/g, '
') + ''; - //自动展示最新,将滚轮滑动至最下方
- if (chatbox.scrollHeight - chatbox.scrollTop - chatbox.clientHeight > 10) {
- scrollToBottom();
- }
- }
-
- })
- event.preventDefault(); // 阻止 Enter 键的默认行为
- return false;
- }
-
- }
-
- </script>
-
- </body>
- </html>