开放平台https://open.aippt.cn/docs/zh/guide/introduce.html?php const AIPPT_API ; const AIPPT_SECRET ; const AIPPT_UID ; /** * AK/SK 签名认证工具类 * 用于生成签名并调用 AIPPT 的 Token/Code 接口 */ class AIPPTClient { // API 基础配置 private $apiUid; // AK private $apiKey; // AK private $secretKey; // SK private $baseUrl; // API 基础地址 /** * 构造函数初始化配置 * param string $apiKey API Key (AK) * param string $secretKey Secret Key (SK) * param string $baseUrl API 基础地址 */ public function __construct($apiUid, $apiKey, $secretKey, $baseUrl https://co.aippt.cn) { $this-apiUid $apiUid; $this-apiKey $apiKey; $this-secretKey $secretKey; $this-baseUrl rtrim($baseUrl, /); } /** * 格式化API路径 (确保以/开头和结尾) * param string $uri 原始路径 * return string 格式化后的路径 */ private function formatApiUri($uri) { $uri / . ltrim($uri, /); if (substr($uri, -1) ! /) { $uri . /; } return $uri; } /** * 生成 HMAC-SHA1 Base64 签名 * param string $httpMethod HTTP请求方法 (GET/POST) * param string $apiUri API路径 (需以/开头和结尾) * param int $timestamp 时间戳(秒) * return string 最终签名值 */ private function generateSignature($httpMethod, $apiUri, $timestamp) { $apiUri $this-formatApiUri($apiUri); // 1. 构造待签字符串 (HTTP方法API路径时间戳) $stringToSign $httpMethod . . $apiUri . . $timestamp; // 2. HMAC-SHA1 加密 Base64 编码 $hash hash_hmac(sha1, $stringToSign, $this-secretKey, true); $signature base64_encode($hash); return $signature; } /** * 发送通用HTTP请求 * param string $apiPath API接口路径 * param string $method HTTP方法 (GET/POST) * param array $params 请求参数GET为queryPOST为form-data * param array $files 上传的文件列表键为参数名值为文件路径 * return array 接口响应数据 * throws Exception 请求失败时抛出异常 */ private function sendRequest($apiPath, $method GET, $params [], $files []) { // 1. 基础参数初始化 $httpMethod strtoupper($method); $apiUri $this-formatApiUri($apiPath); $timestamp time(); // 2. 构建请求URL $url $this-baseUrl . $apiUri; if ($httpMethod GET !empty($params)) { $url . ? . http_build_query($params); } // 3. 初始化cURL $ch curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 跟随301/302重定向 curl_setopt($ch, CURLOPT_MAXREDIRS, 5); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 测试环境临时关闭生产建议开启 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 4. 设置请求头任务创建需要x-token鉴权接口需要x-signature $headers [ x-api-key: . $this-apiKey, x-channel: , // 渠道标识无则传空 ]; // 任务创建接口用x-token鉴权接口用x-timestampx-signature if (strpos($apiPath, /api/grant/) 0) { // 鉴权接口获取token/code $signature $this-generateSignature($httpMethod, $apiUri, $timestamp); $headers[] x-timestamp: . $timestamp; $headers[] x-signature: . $signature; } else { // 业务接口任务创建 if (empty($this-access_token())) { throw new Exception(调用业务接口前必须设置有效的x-token); } $headers[] x-token: . $this-access_token(); } curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // 5. 处理POST请求含文件上传 if ($httpMethod POST) { curl_setopt($ch, CURLOPT_POST, true); // 构建POST数据兼容普通参数文件 $postData []; // 普通参数 foreach ($params as $key $value) { $postData[$key] $value; } // 文件参数 foreach ($files as $fieldName $filePath) { if (!file_exists($filePath)) { throw new Exception(文件不存在{$filePath}); } // CURLFile 兼容PHP 5.5处理文件上传 $postData[$fieldName] new CURLFile(realpath($filePath), mime_content_type($filePath), basename($filePath)); } curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); } // 6. 执行请求并处理响应 $response curl_exec($ch); $httpCode curl_getinfo($ch, CURLINFO_HTTP_CODE); if (curl_errno($ch)) { $error curl_error($ch); curl_close($ch); throw new Exception(cURL请求失败: . $error); } curl_close($ch); if ($httpCode ! 200) { throw new Exception(HTTP请求失败状态码: {$httpCode}响应内容: {$response}); } $result json_decode($response, true); if (json_last_error() ! JSON_ERROR_NONE) { throw new Exception(响应JSON解析失败: . json_last_error_msg()); } if (isset($result[code]) $result[code] ! 0) { throw new Exception(接口返回异常: {$result[msg]} (code: {$result[code]})); } return $result; } /** * 获取认证Token * param string $channel 渠道标识 (无则传空字符串) * return array Token响应数据 (包含token、time_expire等) * throws Exception 请求失败时抛出异常 */ private function getToken($channel ) { $queryParams [ uid $this-apiUid, channel $channel ]; return $this-sendRequest(/api/grant/token, GET, $queryParams); } /** * 本地获取访问凭证 */ public function access_token() { $accessTokenMp ; $file access_token_aippt.txt; $savePath $_SERVER[DOCUMENT_ROOT] . DIRECTORY_SEPARATOR . temp . DIRECTORY_SEPARATOR; if (!file_exists($savePath)) { mkdir($savePath, 0777, true); } $filePath $savePath . $file; if (file_exists($filePath)) { $fp fopen($filePath, r); $fpStr fread($fp, filesize($filePath)); fclose($fp); if ($fpStr) { $arr explode(_||_, $fpStr); $accessTime $arr[1]; if ($accessTime $accessTime time()) { $accessTokenMp $arr[0]; } } } if (!$accessTokenMp) { $tokenData $this-getToken(); $accessTokenMp $tokenData[data][token]; $accessTokenValidity $tokenData[data][time_expire]; $_str $accessTokenMp . _||_ . (time() $accessTokenValidity - 60); file_put_contents($filePath, $_str); } return $accessTokenMp; } /** * 创建PPT生成任务 * param array $params 任务参数根据type传对应字段 * param array $files 上传文件列表键为参数名值为文件路径 * return array 任务创建响应数据含任务ID * throws Exception */ public function createTask($params, $files []) { // 必传参数校验 if (!isset($params[type])) { throw new Exception(type参数为必传项); } $type $params[type]; // 根据type校验核心参数简化版可根据实际需求扩展 $checkRules [ 1 [required [title]], // 智能生成 7 [required [title, content]], // Markdown粘贴 8 [required [id]], // 预置词 11 [required [title, content]], // 自由输入 16 [required [link]], // 导入URL 3 [required [], files [file]], // 上传Word 4 [required [], files [file]], // 上传XMind 17 [required [title], files [files]], // 上传参考文档 ]; if (isset($checkRules[$type])) { // 校验普通必传参数 foreach ($checkRules[$type][required] as $field) { if (!isset($params[$field]) || $params[$field] ) { throw new Exception(type{$type}时{$field}为必传项); } } // 校验文件参数 if (isset($checkRules[$type][files])) { foreach ($checkRules[$type][files] as $fileField) { if (!isset($files[$fileField])) { throw new Exception(type{$type}时{$fileField}文件为必传项); } } } } // 调用任务创建接口 return $this-sendRequest(/api/ai/chat/v2/task, POST, $params, $files); } /** * 模板套装列表筛选项 * return array 创建响应数据 * throws Exception */ public function templateSuitList() { // 调用任务创建接口 return $this-sendRequest(/api/template_component/suit/select); } /** * 模板套装列表 * param array $params 任务参数根据type传对应字段 * return array 创建响应数据 * throws Exception */ public function templateList($params) { // 调用任务创建接口 return $this-sendRequest(/api/template_component/suit/search, GET, $params); } /** * 作品生成 * param array $params 任务参数根据type传对应字段 * return array 创建响应数据 * throws Exception */ public function createWork($params) { return $this-sendRequest(/api/design/v2/save, POST, $params); } /** * 作品导出 * param array $params 任务参数根据type传对应字段 * return array 创建响应数据 * throws Exception */ public function exportWork($params) { return $this-sendRequest(/api/download/export/file, POST, $params); } /** * 作品导出结果 * param array $params 任务参数根据type传对应字段 * return array 创建响应数据 * throws Exception */ public function exportExport($params) { return $this-sendRequest(/api/download/export/file/result, POST, $params); } } // 使用示例 try { // 2. 初始化客户端 $client new AIPPTClient(AIPPT_UID, AIPPT_API, AIPPT_SECRET); // 获取token----------------------------------------------- echo pre; // $tokenResult $client-access_token(); // 4. 示例1创建任务----------------------------------------------- $content # **性格测试2问卷调研结论总结** ## 一、核心发现 本次调研共收集8份有效样本通过对16个维度的统计分析可以得出以下核心结论 **样本群体呈现“务实感性型”人格倾向**在生活态度上表现出强烈的现实主义倾向但在情感决策中却依赖直觉与感觉形成“行为务实、情感随缘”的鲜明特征。 ## 二、四大核心特质总结 ### 1. **务实导向的生活观** - **高度一致性**超过60%的受访者认同“关注实际生活”、“情侣聊实际话题” - **表现**偏好实际行为评价75%、不喜深挖抽象意义75% - **内涵**群体普遍重视可触摸、可验证的现实生活避免过度哲思与空想 ### 2. **随性但有秩序的生活方式** - **矛盾统一**周末高度无计划87.5%却重视环境秩序75% - **表现**享受即兴安排但需要物品归位的生活框架 - **内涵**追求“框架内的自由”——在整洁有序的基础上享受随性 ### 3. **直觉驱动的决策模式** - **情感直觉强**62.5%相信“第一眼正缘”同样比例会“凭感觉选择” - **对比**虽然在生活中务实但在关键情感决策中依赖直觉而非逻辑 - **内涵**形成了“日常理性、情感感性”的二元决策系统 ### 4. **中庸的社交倾向** - **无明显偏好**在外向/内向、社交主动度等维度上分布均衡 - **表现**既不完全回避社交也不过度热衷 - **内涵**社交能量随情境调节无固定模式 ## 三、内在张力与平衡 本群体呈现出三组有趣的**心理平衡点** 1. **务实与感性的平衡**生活中务实高效情感上相信缘分 2. **随性与秩序的平衡**时间安排随意空间管理严格 3. **探索与安稳的平衡**愿意尝试新路线但总体生活态度务实 ## 四、群体画像标签 基于以上分析可为样本群体贴上以下标签 - **标签1**现实主义者非浪漫空想型 - **标签2**直觉决策者情感跟随感觉 - **标签3**有序随性派整洁框架自由安排 - **标签4**社交情境者无固定社交模式 ## 五、应用启示 ### 针对产品/服务设计 - 提供**结构化但选择自由**的方案符合“有序随性”需求 - 内容强调**实用价值情感共鸣**兼顾务实与感性 - 避免过度抽象或完全无序的体验设计 ### 针对人际匹配 - 适合与**同样务实但有一定生活情趣**的伴侣相处 - 需要理解其“秩序需求”与“随性安排”的共存 - 情感建立可依赖“第一眼感觉”关系维护需“实际行动” ### 针对个人发展 - 可加强**情感决策的理性补充**避免完全依赖直觉 - 利用“秩序偏好”建立高效生活系统 - 在务实基础上适度增加生活“诗意时刻” ## 六、调研价值与局限 ### 价值 - 揭示了“务实”与“感性”并非对立可在同一人格中共存 - 发现了“秩序需求”与“时间随性”的有趣组合 - 为理解当代年轻群体性格复杂性提供了样本参考 ### 局限 - 样本量较小n8结论需谨慎推广 - 样本来源集中同一IP可能存在群体同质化 - 问卷为自评数据可能存在社会赞许性偏差 --- ## 结语 本次性格测试描绘出一个**理性与感性交织、秩序与随性共存**的群体形象。他们在生活中脚踏实地在情感上相信缘分他们享受无计划的周末却需要整洁有序的家居环境。这种看似矛盾的特质组合恰恰反映了现代人复杂而多维的性格结构提示我们在理解人格时应避免简单二分更多关注不同维度间的动态平衡与情境适配。 如需进一步分析或调整测试维度可根据此结论进行问卷优化与深度研究。; $taskParams [ type 7, // Markdown粘贴 title 性格测试报告, // 必传 content $content, // 必传 sub_type 1, // 保持原文默认 model deepSeek-v3 // 智谱模型 // senior_options json_encode([ // 高级配置 // page 3, // group 6, // scene 18, // tone 40, // language 47 // ]) ]; $taskResult $client-createTask($taskParams); echo 任务创建成功:br; print_r($taskResult); // 获取PPT模版筛选类型---------------------------------------------- // $rsarrsai $client-templateSuitList(); // print_r($rsarrsai); // 获取PPT模版17618----------------------------------------------- // $params array( // colour_id 9, // style_id 1, // page_size 500 // ); // $rsarr $client-templateList($params); // print_r($rsarr); // foreach ($rsarr[data][list] as $item) { // echo 模版ID: . $item[id] . br; // echo 模版封面br; // echo img src . $item[cover_img] . width200br; // echo br; // } // 作品生成----------------------------------------------- $taskParams1 [ name 性格测试报告, task_id $taskResult[data][id], template_id 17618 ]; $taskResult1 $client-createWork($taskParams1); echo 作品生成成功:br; print_r($taskResult1); // 作品导出----------------------------------------------- $taskParams2 [ id $taskResult1[data][id], format pdf, edit true, files_to_zip false ]; $taskResult2 $client-exportWork($taskParams2); echo 作品导出成功使用作品导出结果[导出文件]:br; print_r($taskResult2); // 作品导出结果----------------------------------------------- // $taskParams [ // task_key $taskResult2[data] // ]; // $taskResult3 $client-exportExport($taskParams); // echo 作品导出结果成功:br; // print_r($taskResult3); } catch (Exception $e) { echo 请求失败: . $e-getMessage() . \n; }