PHP 文心千帆API接口对接

 一:API 调用流程简介

  1. 创建一个智能云应用。根据实际需求创建智能云应用。创建成功后,获取AppID、API Key、Secret Key 等信息。
  2. API 授权。对应用的 AppID 进行授权。
  3. 获取接口访问凭证 access_token 。根据第1步获取的 API Key 和 Secret Key ,
    获取 access_token ,通过 access_token 鉴权调用者身份。
  4. 调用API接口。调用创建chat接口,详见本文说明。

二:具体功能实现

 Chat.php

<?php
namespace bdchat;
class Chat {private $client_id;// API Keyprivate $client_secret;// Secret Keyprivate $message;// 聊天上下文信息public function __construct($client_id, $client_secret) {$this->client_id = $client_id;$this->client_secret = $client_secret;}public function runErnieBot($message) {$curl = curl_init();curl_setopt_array($curl, array(CURLOPT_URL => "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token={$this->getAccessToken()}",CURLOPT_TIMEOUT => 30,CURLOPT_RETURNTRANSFER => true,CURLOPT_CUSTOMREQUEST => 'POST',CURLOPT_POSTFIELDS =>$message,CURLOPT_HTTPHEADER => array('Content-Type: application/json'),));$response = curl_exec($curl);curl_close($curl);return $response;}public function runErnieBotTurbo($message) {$curl = curl_init();curl_setopt_array($curl, array(CURLOPT_URL => "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant?access_token={$this->getAccessToken()}",CURLOPT_TIMEOUT => 30,CURLOPT_RETURNTRANSFER => true,CURLOPT_CUSTOMREQUEST => 'POST',CURLOPT_POSTFIELDS =>$message,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(){$curl = curl_init();curl_setopt_array($curl, array(CURLOPT_URL => "https://aip.baidubce.com/oauth/2.0/token?client_id=".$this->client_id."&client_secret=".$this->client_secret."&grant_type=client_credentials",CURLOPT_TIMEOUT => 30,CURLOPT_RETURNTRANSFER => true,CURLOPT_CUSTOMREQUEST => 'POST',CURLOPT_HTTPHEADER => array('Content-Type: application/json','Accept: application/json'),));$response = curl_exec($curl);curl_close($curl);$rtn = json_decode($response);return $rtn->access_token;}
}

 这里我使用的是多轮

public function run() {$user_id = 1;//用户ID$msg = "如何成为更好的人";//用户聊天内容$is_stream = 0;//是否以流式接口的形式返回数据,默认false。$cacheKey = $user_id.'@chatlog';// 缓存文件名$old_content = cache($cacheKey);include_once CMF_ROOT . 'vendor/baidubce/Chat.php';$chat = new Chat('ClientId','ClientSecret');//自行更改一下配置$messages = [];$my_msg = [];$my_msg['role'] = 'user';$my_msg['content'] = $msg;if (!$old_content) {// 之前该用户没有存在聊天记录$messages['messages'][] = $my_msg;} else {// 之前有聊天记录$messages = json_decode($old_content,true);$messages['messages'][] = $my_msg;}$messages['stream'] = $is_stream == 1 ? true : false;$data = json_encode($messages,JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);$response = $chat->runErnieBotTurbo($data);$res = [];if ($is_stream == 1) {$str_arr = explode("data: ",$response);array_shift($str_arr);$res_msg = [];for ($i=0; $i < count($str_arr); $i++) {$arr = [];$arr =  json_decode($str_arr[$i],true);$res_msg[] = $arr['result'];}$res['result'] = implode("\n\n",$res_msg);} else {$res = json_decode($response,true);}$assistant_msg = [];$assistant_msg['role'] = 'assistant';$assistant_msg['content'] = $res['result'];$messages['messages'][] = $assistant_msg;cache($cacheKey,json_encode($messages));$this->success('请求成功!',$messages);
}

三:相关问题

 01 单轮与多轮的区别

多轮的需要在请求参数中将之前发送与返回的数据也加上,上面的代码示例是用的多轮,不过推荐大家使用单轮响应的方式。

 

 02 注意流式接口返回数据与其他不同,需要对数据进行处理

 03 可能会遇到的问题

最开始对接的时候,提示以下错误信息:(无权限访问该用户数据。)

{"error_code":6,"error_msg":"No permission to access data"}

 首先这种问题需要考虑创建应用是否勾选相关接口权限。

 

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

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

相关文章

《PyTorch深度学习实践》第五讲 用PyTorch实现线性回归

b站刘二大人《PyTorch深度学习实践》课程第五讲用PyTorch实现线性回归笔记与代码&#xff1a;https://www.bilibili.com/video/BV1Y7411d7Ys?p5&vd_sourceb17f113d28933824d753a0915d5e3a90 PyTorch官网教程&#xff1a;https://pytorch.org/tutorials/beginner/pytorch_w…

数据中心动环监控系统分析与应用

摘要&#xff1a;介绍了数据中心动环监控系统&#xff0c;并结合原理图详细分析。本系统主要对数据中心的电源设备和环境参数 进行监控&#xff0c;如 UPS、蓄电池、配电柜、温湿度、漏水监测等&#xff0c;将实现多机房、微模块远程联网集中监管&#xff0c; 从而为提高数据中…

Linux服务器扩容VG时报错 Couldn‘t create temporary archive name

今天扩容磁盘遇到失败报错。 [rootmysql ~]# vgextend rhel /dev/sdc1 Couldnt create temporary archive name. 原因&#xff1a;磁盘使用100%&#xff0c;无法执行挂载&#xff0c;须预留部分空间出来。解决办法&#xff1a;删掉其中无用文件、log日志继续操作即可。释放空间…

React之hooks

Hooks函数 1.useState()&#xff1a;状态钩子。纯函数组件没有状态&#xff0c;用于为函数组件引入state状态, 并进行状态数据的读写操作。 const [state, setState] useState(initialValue); // state&#xff1a;初始的状态属性&#xff0c;指向状态当前值&#xff0c;类似…

6.26学习 es6中的类

学习 es6中的类 1.了解构造函数的属性2.类的继承2.1继承父类实例上的属性2.2继承父类原型上的属性或则方法&#xff08;公共属性或则方法&#xff09;2.2.1 Object.create2.2.2 Object.setPrototypeOf 3.es6中的类3.1定义3.2 继承 1.了解构造函数的属性 先上一份代码思考一下它…

数据结构-链表

链表结构 链表结构五花八门&#xff0c;今天我重点给你介绍三种最常见的链表结构&#xff0c;它们分别是&#xff1a;单链表、双向链表和循环链表。我们首先来看最简单、最常用的单链表。 单链表 我们习惯性地把第一个结点叫作头结点&#xff0c;把最后一个结点叫作尾结点。其…

Spring Boot 中的事务超时时间

Spring Boot 中的事务超时时间 在 Spring Boot 中&#xff0c;事务管理是一个非常重要的话题。当我们在数据库中执行一些复杂的操作时&#xff0c;需要确保这些操作能够在一定的时间内完成&#xff0c;否则可能会导致数据一致性问题。为了解决这个问题&#xff0c;Spring Boot…

springboot 整合mybatis plus,使用druid 切换多数据源实现单数据库事务,附赠项目源码地址

项目源码地址 GitHub - liyanlei58/ssm: springboot druid mybatis plus 事务 最近想搭一套spring cloud开发环境&#xff0c;各种不顺利吧&#xff0c;先是spring cloud的组件某些功能不好用&#xff0c;是版本自身的bug。后来又碰到了事务无法回滚&#xff0c;这个搞了好几个…

windows的环回网卡(loopback adapter) 安装方法

0.说明&#xff1a;windows的环回网卡(loopback adapter)的作用&#xff1a; microsoft loopback adapter就是安装在本机上的一块虚拟网卡&#xff0c;它跟本机上的其它物理网卡、和物理网卡连接的网络是没有关系的&#xff0c;你可以理解成这块网卡上的网线接到了另外一个空白…

Python 字节数组方式写入kafka(含报错return ‘<SimpleProducer batch=%s>‘ % self.async)

一、背景 项目开发了一个类似kafka tools查询工具的kafka 查询&#xff0c;现在需要测试一下如果通过字节数组的形式写入&#xff0c;看看查询有没有问题 二、kafka查询代码 Python代码示例&#xff1a; from kafka import KafkaProducer import json# 创建Kafka生产者 pro…

美好未来“一束光”儿童安全教育项目在四川泸定正式启动

6月26日&#xff0c;由中华少年儿童慈善救助基金会和北京臻爱公益基金会共同发起的美好未来计划“一束光”儿童安全教育公益项目启动仪式&#xff0c;在四川省甘孜藏族自治州泸定县贡嘎山片区寄宿制学校举行。 出席本次启动仪式活动的嘉宾有&#xff1a;中华少年儿童慈善救助基…

【Spring Boot 事务】万字详解Spring Boot 事务,赶快跟随良辰一起去学习Spring Boot 事务吧! ! !

前言: 大家好,我是良辰丫,这篇文章我将带领大家一起去学习Spring Boot 事务文章,我们在学习数据库的时候已经接触过事务了,来跟随我的脚步一起来瞧一下Spring Boot 事务吧.&#x1f48c;&#x1f48c;&#x1f48c; &#x1f9d1;个人主页&#xff1a;良辰针不戳 &#x1f4d6;…