Posted at

IBM BluemixでWatsonのREST APIをPythonからたたく

More than 1 year has passed since last update.

執筆途中。未完成


登録

IBM BlueMixに登録する

スペースの作成 dev

http://www.creationline.com/lab/8055

ここではCLIでやってますが,GUIで普通に出来たと思います.

Dashboardにいく

メニューからカタログを選ぶ

Pythonを選ぶ このとき指定した名前が既存のものとかぶってると,追加できない.

ダッシュボードで追加したやつを選ぶ

サービスの追加でWatson Question & Answerのサービスを追加する.

追加した時点で,APIを使うためのURLとID,パスワードが発行されています.

ダッシュボードの追加されたサービスにQ&Aがある.

ここの資格情報の表示とすると,url, id, passwordを確認できます.

また,資格情報の表示の右にドキュメントへのリンクもあるので見てみる.

documentationのapi referenceをみてみると,すべてREST APIである.

REST APIは,今回の場合はurlでアクセスすると,なにかJSON形式の応答を返してくれるというような認識でいいのではないかと思います.

Q&AのAPIにpingを飛ばすにはv1/pingと書いてある.

試しにブラウザでアクセスして確認してみる.http requestの応答としては200を返すのですが,ブラウザ上では空のJSONが見えます{}

試しにterminalからアクセスしてみると..

curl -X GET -H "Accept: application/json" -u d1447bde-bb6f-4db9-b073-eb8faadcf96d:6aX7RxuNFtJp https://gateway.watsonplatform.net/question-and-answer-beta/api/v1/ping

{}

https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Virtualization/3.0/html/REST_API_Guide/appe-REST_API_Guide-cURL_Integration.html

curl -u d1447bde-bb6f-4db9-b073-eb8faadcf96d:6aX7RxuNFtJp -LI https://gateway.watsonplatform.net/question-and-answer-beta/api/v1/ping -o /dev/null -w '%{http_code}\n' -s

200

http://sugamasao.hatenablog.com/entry/20120326/1332754813

Djangoを使用してWebアプリケーション開発

http://www.ibm.com/developerworks/jp/cloud/library/cl-worldbank-charting-app/

ここのステップ1,2だけやってみる.

It worksと表示されます.


cf のインストール & push

次にこれをデプロイしてみます.

ダッシュボードからアプリの選択

コーディングの開始を選択

CF コマンド・ライン・インターフェースを選択すると説明がでてくるので,その通りにします.

http://www.ibm.com/developerworks/jp/cloud/library/cl-worldbank-charting-app/

のステップ4をして,DjangoのプロジェクトをBlueMix上にアップしてみます.

requirement.txtに環境情報を書くだけでサーバ上に環境が構築されるいまどきの未来を感じるあれ


Django

http://www.ibm.com/developerworks/jp/cloud/library/cl-worldbank-charting-app/

git clone https://hub.jazz.net/git/mamtasharma/trendsapp001

してソースダウンロード

manifest.yml

nameを一意の名前に変える

buildの行を削除

とりあえずなんとなくDjango動かしたいので細かい点は虫

cf push --no-start

cf create-service mongodb 100 mongodb001

cf bind-service trendsapp001 mongodb001

cf start trendsapp001

url/trendsにアクセス

動きました.


Q&A加える

ダッシュボードに行って,アプリのページ行く

サービスの追加で

https://developer.ibm.com/answers/questions/181645/question-validation-failed-error-when-making-post.html

できない!Python Script


request.py

import requests

import json

qt = "How deep is grand canyon?"
url = "https://gateway.watsonplatform.net/question-and-answer-beta/api/v1/question/travel"
r = requests.post(url,
data=json.dumps({"question": {"questionText": qt}}),
headers={"Content-Type": "application/json", "X-SyncTimeout": 30},
auth=("0b46d272-3d88-47c7-afa5-9127919e83a6", "yhxjoHEq3dmP"))
print r.text


Django 1.7から新しい機能使いされたりしてるので,

過去のあまり参考にならない.

http://a-records.info/2014/09/29/18/