基于 OpenAPI 实现
由于公司项目需要,在对接百度千帆AppBuilder 时发现官方没有提供现成的 sdk,反正也是对接,顺手做了一个基于接口的简易sdk出来。
开源地址:jeeinn/qf_app_builder: qianfan AppBuilder openApi sdk (github.com)
百度千帆 qianfan AppBuilder php sdk OpenAPI wrapper
官方文档地址:https://cloud.baidu.com/doc/AppBuilder/s/klv2eywua
安装
composer require jeeinn/qf_app_builder
示例
require_once __DIR__ . '/vendor/autoload.php';
use Jeeinn\QfAppBuilder\Agent;
use Jeeinn\QfAppBuilder\Utils;
$appId = 'your app id';
$appToken = 'your app token';
// 创建会话
$agent = new Agent($appId, $appToken);
$conversationId = $agent->newConversation();
echo Utils::formatMsg("conversation_id created, conversation_id: {$conversationId}");
// 上传文件
// 注意,在实际测试中发现传入的路径需包含后缀名称 2024/5/9
// 否则千帆会报错:未知文件类型
$fileId = $agent->uploadFile(__DIR__ . '/your_test_file.xlsx', $conversationId);
echo Utils::formatMsg("file uploaded, file id: {$fileId}");
// 对话
$query = "我该如何描述和总结表格中的数据?";
$answer = $agent->talk($conversationId, $query, $fileId);
echo Utils::formatMsg("answer: {$answer}");
// 流式对话
$query = '你好,你是如何对我的数据进行安全处理的?';
ob_end_flush();
ob_start();
$answer = $agent->talkStream($conversationId, $query, null, function ($eventMsg){
echo Utils::formatMsg($eventMsg);
ob_flush();
flush();
}, function ($errInfo){
echo Utils::formatMsg($errInfo);
ob_flush();
flush();
});
echo Utils::formatMsg("answer: {$answer}");
方法列表
- newConversation()
- uploadFile($filePath, $conversationId)
- talk($conversationId, $query, $fileId)
- talkStream($conversationId, $query, $fileId, $callback, $callbackErr)