PHP怎么用达观数据AI_传合同文本调审查模型获风险点【硬功】

达观AI审查接口需用PHP cURL调用HTTP API,构造带SHA256签名的POST请求,传UTF-8纯文本至text字段,返回JSON格式风险点列表;签名基于app_key+timestamp+text拼接哈希,timestamp为秒级整数且偏差≤300秒,text须预处理清除零宽字符、统一空白符并确保无BOM。

php怎么用达观数据ai_传合同文本调审查模型获风险点【硬功】

达观AI审查接口怎么调用(PHP cURL版)

达观数据的合同审查模型不提供公开SDK,必须走HTTP API。核心是构造带签名的POST请求,传text字段(纯文本,非PDF/Word),返回JSON格式的风险点列表。别指望直接扔个文件路径进去——它只认UTF-8编码的字符串。

  • 接口地址形如 https://api.datagrand.com/v1/contract/risk(以你拿到的正式环境URL为准)
  • 必须携带X-Datagrand-SignatureX-Datagrand-TimestampX-Datagrand-App-Key三个Header
  • 签名算法是:对app_key + timestamp + text三者拼接后做SHA256哈希(注意:不是HMAC,没密钥)
  • text长度建议控制在10000字符内,超长可能截断或报错"text_too_long"

PHP签名生成和请求封装要注意什么

签名错是调不通的最常见原因。PHP里容易踩坑的是字符编码和拼接顺序——text必须是原始传入的UTF-8字符串,不能经过urlencodejson_encode再参与签名;timestamp必须是秒级整数(不是毫秒),且与服务器时间差不能超过300秒。

function callDaGuanRiskApi($appKey, $text) {
    $timestamp = time();
    $signature = hash('sha256', $appKey . $timestamp . $text);
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://api.datagrand.com/v1/contract/risk');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['text' => $text], JSON_UNESCAPED_UNICODE));
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: application/json',
        'X-Datagrand-App-Key: ' . $appKey,
        'X-Datagrand-Timestamp: ' . $timestamp,
        'X-Datagrand-Signature: ' . $signature
    ]);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);
    
    return json_decode($result, true);
}

返回的risk字段结构怎么解析

成功响应的data.risks是个数组,每个元素含type(风险类型,如"payment_term")、content(触发该风险的原文片段)、position(在原文中的起始字节偏移)。注意:position是字节偏移,不是字符位置——中文占3字节,别直接用substr切,得用mb_substr配合mb_strlen换算。

知了追踪

知了追踪

AI智能信息助手,智能追踪你的兴趣资讯

下载

  • 常见type值:"liability_limit"(责任限制)、"termination_condition"(解约条件)、"governing_law"(管辖法律)
  • 若返回"code": 4001,大概率是签名错误或timestamp超时
  • risks为空数组,不代表没风险,可能是模型未覆盖该条款类型,也可能是文本预处理时被过滤(比如含大量乱码或不可见控制字符)

合同文本预处理不能跳过

直接把Word复制粘贴过来的文本常含制表符、全角空格、零宽空格(/xe2/x80/x8b),这些会导致签名计算结果与服务端不一致,或让模型漏识别。达观接口对输入干净度敏感,不是“尽力而为”型。

立即学习PHP免费学习笔记(深入)”;

  • preg_replace('/[/x{200B}-/x{200D}/x{FEFF}]/u', '', $text)清除零宽字符
  • 把连续空白(包括换行、制表、全角空格)统一替换成单个半角空格:preg_replace('//s+/u', ' ', $text)
  • mb_trim(需自行实现)或trim + mb_convert_encoding确保末尾无BOM
  • 别用html_entity_decode,合同里一般没有HTML实体;但若从网页抓取,需先strip_tags

达观这个接口对文本“洁癖”程度比想象中高,签名和清洗任一环节松动,都会卡在400或空响应。真正上线前,拿同一段文本手动算一次签名,再用curl -v对比服务端收到的Header,比光看PHP日志管用。

https://www.php.cn/faq/1987572.html

发表回复

Your email address will not be published. Required fields are marked *