public function buildSignature($secretId, $secretKey, $region, $action, $payload) { $host = 'hunyuan.tencentcloudapi.com'; $service = "hunyuan"; $version = "2023-09-01"; $timestamp = time(); $algorithm = "TC3-HMAC-SHA256"; // step 1: build canonical request string $httpRequestMethod = "POST"; $canonicalUri = "/"; $canonicalQueryString = ""; $canonicalHeaders = implode("\n", [ "content-type:application/json; charset=utf-8", "host:".$host, "x-tc-action:".strtolower($action), "" ]); $signedHeaders = implode(";", [ "content-type", "host", "x-tc-action", ]); $hashedRequestPayload = hash("SHA256", $payload); $canonicalRequest = $httpRequestMethod."\n" .$canonicalUri."\n" .$canonicalQueryString."\n" .$canonicalHeaders."\n" .$signedHeaders."\n" .$hashedRequestPayload; // step 2: build string to sign $date = gmdate("Y-m-d", $timestamp); $credentialScope = $date."/".$service."/tc3_request"; $hashedCanonicalRequest = hash("SHA256", $canonicalRequest); $stringToSign = $algorithm."\n" .$timestamp."\n" .$credentialScope."\n" .$hashedCanonicalRequest; // step 3: sign string $secretDate = hash_hmac("SHA256", $date, "TC3".$secretKey, true); $secretService = hash_hmac("SHA256", $service, $secretDate, true); $secretSigning = hash_hmac("SHA256", "tc3_request", $secretService, true); $signature = hash_hmac("SHA256", $stringToSign, $secretSigning); // step 4: build authorization $authorization = $algorithm ." Credential=".$secretId."/".$credentialScope .", SignedHeaders=".$signedHeaders.", Signature=".$signature; // curl command $curl = "curl" .' -H "Authorization: '.$authorization.'"' .' -H "Content-Type: application/json; charset=utf-8"' .' -H "Host: '.$host.'"' .' -H "X-TC-Action: '.'ChatCompletions'.'"' .' -H "X-TC-Timestamp: '.$timestamp.'"' .' -H "X-TC-Version: '.$version.'"' .' -H "X-TC-Region: '.$region.'"' ." -d '".$payload."'" ." 'https://".$host."'"; return $curl; } // 示例调用 $secretId = 'secretId'; $secretKey = 'secretKey'; $region = "ap-guangzhou"; $action = "ChatCompletions"; $payload = '{"Model":"hunyuan-pro","Messages":[{"Role":"user","Content":"计算1+1"}],"Stream":true}'; $curlCommand = buildSignature($secretId, $secretKey, $region, $action, $payload); echo $curlCommand.PHP_EOL;
PHP 混元模型Api 生成v3签名
最新推荐文章于 2025-02-06 15:22:22 发布