目录

-腾讯AI开放平台的接口调用指南

目录

腾讯AI开放平台的接口调用指南

最近无意发现腾讯AI开放平台上提供了大量好玩的人工智能云服务,而且是完全免费的。只需要用QQ号登录即可。这么好的东西,作为一个程序员,当然要试试了!

https://i-blog.csdnimg.cn/blog_migrate/d5e5ca78bd9a6804450d14301dacb2a9.webp?x-image-process=image/format,png

从上图可以看出腾讯AI开放平台提供的人工智能服务主要有自然语言处理,计算机视觉和智能语音三大类。我当然是从最简单的自然语言处理开始学习。

这是腾讯AI开放平台的自然语言处理的API说明:

其实也就是我们熟悉的Restful API调用:

https://i-blog.csdnimg.cn/blog_migrate/43c9ed1cd43383d9aa969f5321840d34.webp?x-image-process=image/format,png

新建一个PHP文件,把下面这个链接的源代码粘贴进去:

然后在Eclipse里Run As->PHP CLI Application,

https://i-blog.csdnimg.cn/blog_migrate/b767c660bc10174742ba7859777c973d.webp?x-image-process=image/format,png

即可看到下列输出:“腾讯AI开放平台”这个句子,已经被腾讯人工智能成功分词成了:腾讯,AI,开放,平台。

https://i-blog.csdnimg.cn/blog_migrate/45193efa0960025f5cb0e8833032f126.webp?x-image-process=image/format,png

下面就来解释下PHP代码的主要逻辑。

$appkey = 'LHGNH0usjUTRRRSA';

$params = array(

    'app_id' => '2107823355',

    'time_stamp' => strval(time()),

     'nonce_str' => strval(rand()),

     'text' => '腾讯AI开放平台',

     'sign' => '',

);

第一行和第四行分别为我在腾讯 AI 平台上创建的测试应用的 key 和 ID。第五行是发起请求的时间戳,第六行用 rand()生成了一个随机数,第七行为希望使用腾讯 AI 人工智能分词的输入句子,第 8 行 sign 是一个需要动态计算出的签名值。

https://i-blog.csdnimg.cn/blog_migrate/f85664ffb61ac6cb6b01bd2a08a28ad7.webp?x-image-process=image/format,png

这个签名值在下列 PHP 函数调用里计算:

$params[‘sign’] = getReqSign($params, $appkey);

现在进入getRegSign内部:

https://i-blog.csdnimg.cn/blog_migrate/b14dbc7d13252a10b43e26114b453107.webp?x-image-process=image/format,png

首先执行ksort对PHP的key-value数组$params 按照 key 进行升序排序,可以比较上图升序排序前和下图排序后的顺序:

https://i-blog.csdnimg.cn/blog_migrate/3a9bee27c3317bfbf31b331cbb79187d.webp?x-image-process=image/format,png

接着把字典里每个 key-value 键值对用 key=value&key=value…这种形式连接起来,注意 text 值需要用 urlencode 进行编码。

https://i-blog.csdnimg.cn/blog_migrate/e4b59134320584cf1f41c6948166ff00.webp?x-image-process=image/format,png

最后把连接好的字符串用 md5 函数计算出 MD5 哈希值,然后用 strtoupper 转成大写,这就是计算好的签名值。

https://i-blog.csdnimg.cn/blog_migrate/339c727f56bbdfadc28baf9145187f9e.webp?x-image-process=image/format,png

最后一步就是调用 doHttpPost 发送请求。

https://i-blog.csdnimg.cn/blog_migrate/a9a83dca01ff0b487f5f4fc87d575dfc.webp?x-image-process=image/format,png

Post 请求的 fields 仍然是 key=value&key=value 这种类型的键值对,参考下面调试器里的截图:

https://i-blog.csdnimg.cn/blog_migrate/866a2ce47410df7458eeaf2fb3d94961.webp?x-image-process=image/format,png

为方便您的参考,我把调试器里显示的$body记录在下面:

app_id=2107823355&time_stamp=1533960023&nonce_str=12169&text=%CC%DA%D1%B6AI%BF%AA%B7%C5%C6%BD%CC%A8&sign=EA9CAC254A17729B20FAF28757E775DD

最后发送请求,得到结果:

curl_setopt($curl, CURLOPT_HEADER, false);

curl_setopt($curl, CURLOPT_NOBODY, false);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

$response = curl_exec($curl);

if ($response === false) {

    $response = false;

    break;

}

$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);

if ($code != 200) {

    $response = false;

    break;

}

https://i-blog.csdnimg.cn/blog_migrate/136b6d45512abc5f2d54d2ab990c90ed.webp?x-image-process=image/format,png

https://i-blog.csdnimg.cn/blog_migrate/85a7da8dbe502f23d3b9962634e22c72.webp?x-image-process=image/format,png

要获取更多 Jerry 的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

https://i-blog.csdnimg.cn/blog_migrate/988bd2852344646c700aa2618879f99b.webp?x-image-process=image/format,png

https://i-blog.csdnimg.cn/blog_migrate/f9cc009fb321982b7aed7d11da3c790d.webp?x-image-process=image/format,png