首先認證受權:python
在開始調用任何API以前須要先進行認證受權,具體的說明請參考:json
http://ai.baidu.com/docs#/Auth/topapp
獲取Access Tokenide
向受權服務地址https://aip.baidubce.com/oauth/2.0/token發送請求(推薦使用POST),並在URL中帶上如下參數:ui
grant_type:?必須參數,固定爲client_credentials;編碼
client_id:?必須參數,應用的API Key;url
client_secret:?必須參數,應用的Secret Key;spa
例如:code
具體Python3代碼以下:
# -*- coding: utf-8 -*-
#!/usr/bin/env python
import urllib
import json
#client_id 爲官網獲取的AK, client_secret 爲官網獲取的SK
client_id =【百度雲應用的AK】
client_secret =【百度雲應用的SK】
#獲取token
def get_token():
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret
request = urllib.request.Request(host)
request.add_header('Content-Type', 'application/json; charset=UTF-8')
response = urllib.request.urlopen(request)
token_content = response.read()
if token_content:
token_info = json.loads(token_content)
token_key = token_info['access_token']
return token_key
智能春聯:
具體說明請參考:http://ai.baidu.com/docs#/IntelligentWriting-API/f85d34cc
接口描述
根據用戶輸入的命題關鍵詞自動生成一副春聯,包括上聯、下聯和橫批。
注:請使用方注意接口使用的合規性,不得利用該接口從事不合規場景的應用;若有違規使用,一經發現,AI開放平臺有權當即中止提供服務
請求說明
HTTP方法: POST
請求URL: https://aip.baidubce.com/rpc/2.0/nlp/v1/couplets
URL參數:
參數 值
access_token 經過API Key和Secret Key獲取的access_token,參考「Access Token獲取」
Header以下:
參數 值
Content-Type application/json
Body請求示例:
{
"text": "百度",
"index": 0
}
請求參數
參數 是否必選 類型 描述
text 是 string 字符串(限5字符數之內)即春聯的主題
Index 否 int 整數 默認爲數值爲0,即第一幅春聯。每換一次,數值加1便可,必定數量後會返回以前的春聯結果。
返回參數
參數 類型 描述
log_id uint64 請求惟一標識碼
first string 春聯上聯:成7-9個字的上聯
second string 春聯下聯:生成7-9個字的春聯下聯
center string 春聯橫批:生成4個字的春聯橫批
提示: 請求body爲json字符串,無須對body進行urlencode(百分號編碼)
Python3調用代碼以下:
#調用百度智能春聯接口
def get_couplets(content):
token=get_token()
url = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/couplets'
params = dict()
params['index'] = 0
params['text'] = content
params = json.dumps(params).encode('utf-8')
access_token = token
url = url + "?access_token=" + access_token
request = urllib.request.Request(url=url, data=params)
request.add_header('Content-Type', 'application/json')
response = urllib.request.urlopen(request)
content = response.read()
if content:
content=content.decode('utf-8')
#print (content)
data = json.loads(content)
data=data['couplets']
print ('上聯:',data['first'])
print ('下聯:',data['second'])
print ('橫批:',data['center'])
get_couplets('社區')
調用結果:
上聯: 和諧社會春光好
下聯: 富貴人家福祉多
橫批: 大好春光
建議:
1,建議統一文本處理返回的編碼,如今有的是UTF-8(好比春聯)有的是GB2312(好比文本糾錯),使用起來不太方便。
2,實際返回JSON爲:{"couplets":{"center":"大好春光","first":"和諧社會春光好","second":"富貴人家福祉多"}}與API幫助給的例子Json:
{
"log_id": 7310552510652020090,
"first": "喜氣千年千里新",
"second": "清風百度百花豔",
"center": "千雲祥集"
}
不太同樣,建議修改API幫助