1. 简介
百度文心一言是一款提供兴趣、健康、情感、礼仪等话题的短句分享工具,作为开发者我们可以通过 API 获取一句话,并且实现语言转换功能。本文将介绍如何使用 PHP 实现百度文心一言随机语句的语言转换功能。
2. API 接口
首先需要获取百度文心一言的 API 接口,可以在官方文档中查询到相应的接口信息。
API 接口的 URL 为:https://api.lwl12.com/hitokoto/main/get
请求方式为:GET
2.1 请求参数
接口共有三个请求参数:
c:字符串,可选参数,表示返回语言类型,中文为 c,其他语言为其他参数(如:日语为 j,韩语为 k)
encode:字符串,可选参数,表示数据编码方式,默认为 utf-8
charset:字符串,可选参数,表示返回数据的编码方式,默认为 utf-8
参数示例:
$c = 'c'; // 中文
$encode = 'utf-8'; // 数据编码
$charset = 'utf-8'; // 返回数据的编码
$url = "https://api.lwl12.com/hitokoto/main/get?c={$c}&encode={$encode}&charset={$charset}";
2.2 返回数据
接口返回的数据为 JSON 格式,包括以下几个信息:
id:短句的 ID
hitokoto:短句内容
type:短句类型
from:短句出处
creator:短句作者
数据示例:
{
"id":1935,
"hitokoto":"积极向上的人总是面带微笑,他们知道遇到困难不是借口,而是表示有机会。",
"type":"a",
"from":"《儒家爱国者》",
"creator":"Lan"
}
3. 语言转换功能
为了实现语言转换的功能,需要调用第三方翻译 API,在本文中使用百度翻译 API。
3.1 获取 API KEY
首先需要去 百度翻译 API 官网注册一个账号,然后创建一个应用获取 API KEY。
3.2 请求参数
调用百度翻译 API 时需要传递相应的参数:
q:字符串,请求翻译的内容
from:字符串,翻译源语言,可选值为 auto 或者语言标识符(如:中文为 zh)
to:字符串,翻译目标语言,可选值为语言标识符(如:英文为 en)
appid:字符串,创建应用时获取的 API KEY
salt:字符串,随机数,用于生成 sign
sign:字符串,签名,计算方法为:md5(appid+q+salt+密钥)
参数示例:
$q = '积极向上的人总是面带微笑';
$from = 'zh';
$to = 'en';
$appid = 'your_appid';
$key = 'your_key';
$salt = rand(10000,99999);
$sign = md5($appid.$q.$salt.$key);
$url = "https://api.fanyi.baidu.com/api/trans/vip/translate?q={$q}&from={$from}&to={$to}&appid={$appid}&salt={$salt}&sign={$sign}";
3.3 解析返回数据
百度翻译 API 返回的数据格式同样是 JSON 格式,参数说明如下:
from:源语言,如果请求参数中指定了 from 则该值与请求参数中的值相同,否则为 API 自动检测出来的语言
to:目标语言,与请求参数中的 to 相同
trans_result:翻译结果,数组格式,包含每个段落的翻译结果。每个段落的翻译结果也是数组,包含一个 src 字段和 dst 字段,分别表示源语言和目标语言
数据示例:
{
"from":"zh",
"to":"en",
"trans_result":[
{
"src":"积极向上的人总是面带微笑",
"dst":"Positive people always smile. They don't make excuses when they face difficulties, because difficulties mean opportunities."
}
]
}
4. 整合 API 接口实现语言转换
我们先通过请求百度文心一言的 API 获取一句话,然后再将其翻译成指定的语言,从而实现语言转换的功能。
// 随机获取一句话
$response = file_get_contents($url);
$data = json_decode($response, true);
$hitokoto = $data['hitokoto'];
// 将其翻译成英文
$q = $hitokoto;
$from = 'zh';
$to = 'en';
$appid = 'your_appid';
$key = 'your_key';
$salt = rand(10000,99999);
$sign = md5($appid.$q.$salt.$key);
$trans_url = "https://api.fanyi.baidu.com/api/trans/vip/translate?q={$q}&from={$from}&to={$to}&appid={$appid}&salt={$salt}&sign={$sign}";
$trans_response = file_get_contents($trans_url);
$trans_data = json_decode($trans_response, true);
$trans_hitokoto = $trans_data['trans_result'][0]['dst'];
代码中,通过 file_get_contents() 函数向 API 接口发送 GET 请求,并将响应结果转为 JSON 格式。随机获取一句话后,再通过百度翻译 API 将其翻译成英文。最后,将翻译得到的结果保存在变量 $trans_hitokoto 中。