文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

php对接讯飞星火认知大模型SparkDesk的Web API示例代码

2023-08-31 10:12

关注

最近我在给客户开发科大讯飞的星火认知大模型SparkDesk,踩过一些坑,网上几乎搜不到PHP的demo代码,这里模板兔给出以下成果代码供大家参考。

首先,sparkdesk的接口需要使用到websocket,所以我们需要先安装websocket,使用composer在网站根目录安装:

composer require textalk/websocket

然后就是写php代码:

createUrl($api_key, $api_secret);$client = new Client($url);//拼接要发送的信息$message = $this->createMsg($app_id, $prompt);try {$client->send(json_encode($message, true));$response = $client->receive();$response_arr = json_decode($response, true);// 科达讯飞会分多次发送消息do {if ($response_arr['header']['code'] == '0') {echo 'data: '.$response."\n\n"; //转成EventSource的输出格式}else{echo '[error]'.$response_arr['header']['message'];break;}$content = $response_arr['payload']['choices']['text'][0]['content'];if ($response_arr['header']['status'] == 2) {echo 'data: [DONE]'."\n\n";break;}//继续接收消息$response = $client->receive();$response_arr = json_decode($response, true);} while (true);} catch (Exception $e) {} finally {$client->close();}}private function sign($api_key, $api_secret, $time){$signature_origin = 'host: spark-api.xf-yun.com' . "\n";$signature_origin .= 'date: ' . $time . "\n";$signature_origin .= 'GET /v1.1/chat HTTP/1.1';$signature_sha = hash_hmac('sha256', $signature_origin, $api_secret, true);$signature_sha = base64_encode($signature_sha);$authorization_origin = 'api_key="' . $api_key . '", algorithm="hmac-sha256", ';$authorization_origin .= 'headers="host date request-line", signature="' . $signature_sha . '"';$authorization = base64_encode($authorization_origin);return $authorization;}private function createUrl($api_key, $api_secret){$url = 'wss://spark-api.xf-yun.com/v1.1/chat';$time = gmdate('D, d M Y H:i:s') . ' GMT';$authorization = $this->sign($api_key, $api_secret, $time);$url .= '?' . 'authorization=' . $authorization . '&date=' . urlencode($time) . '&host=spark-api.xf-yun.com';return $url;}private function createMsg($app_id, $prompt){return ['header' => ['app_id' => $app_id,],'parameter' => ["chat"=> ["domain"=> "general","temperature"=> 0.5,"max_tokens"=> 1000, ]],'payload' => ["message"=> ["text"=> [["role"=> "user", "content"=> $prompt]]]],];}}header("Content-Type: text/event-stream");header("Cache-Control: no-cache");header("X-Accel-Buffering: no");header('Connection: keep-alive');$params = array("prompt"=>"你好","APPID"=>"","APIKEY"=>"","APISecret"=>"");$test = new api();$test->sendMsg($params);

我把接口输出的流转成EventSource的输出格式,这样客户端方便对接,毕竟之前对接过GPT,这样来讲切换会更容易些。

最后我们再通过客户端js来输出数据,js代码这里就不多赘述了。

原文:https://www.mobantu.com/9976.html

来源地址:https://blog.csdn.net/getluo/article/details/131228144

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯