プログラムからAI校正APIを使おう
Shodoで提供しているAI校正APIをお使いのプログラミング言語でお客様のアプリケーションやシステムに組み込むことができます。
APIを使用するためには、Shodoのアカウントが必要です。
アカウントを作成しようを参照してください。
詳細なAPIリファレンスはAPIガイドを参照してください。
Shodo Pythonを使用する
ShodoのAI校正APIを使ってみようで説明をした shodo
パッケージはPythonでのAI校正APIを簡単に実装できる機能を提供しています。
また、非同期処理での実装 を行う場合は以下のコマンドを実行してください。
pip install shodo[async]
実装例
from shodo import lint
lint_result = lint("文章をタイポや間違いを見つけてくれます。")
for msg in lint_result.messages:
print(f"{msg.from_.line}:{msg.from_.ch} {msg.message}")
import asyncio
from shodo.aio import lint
lint_result = asyncio.run(lint("文章をタイポや間違いを見つけてくれます."))
for msg in lint_result.messages:
print(f"{msg.from_.line}:{msg.from_.ch} {msg.message}")
それぞれの関数の戻り値( lint_result
)は、データクラスで取得されるため安全にAI校正の結果を使用できます。
校正APIを使用して校正をリクエストする
Shodoでは、校正APIを使用して日本語の文章を校正をリクエストし結果を取得するように設計されています。
校正結果を取得する方法は校正結果APIから結果を取得するを参照してください。
- cURL
- Python
- JavaScript
curl -X POST https://api.shodo.ink/@{organization}/{project}/lint/ \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"body": "文章をタイポや間違いを見つけてくれます。"}'
import json
import urllib.request
url = "https://api.shodo.ink/@{organization}/{project}/lint/"
payload = {
"body": "文章をタイポや間違いを見つけてくれます。",
}
headers = {
"Authorization": "Bearer {token}",
"Content-Type": "application/json",
}
req = urllib.request.Request(
url=url,
data=json.dumps(payload).encode(encoding="utf-8"),
headers=headers,
)
with urllib.request.urlopen(req) as res:
body = json.loads(res.read())
print(body)
const url = 'https://api.shodo.ink/@{organization}/{project}/lint/';
const payload = {
body: '文章をタイポや間違いを見つけてくれます。',
};
const res = fetch(url, {
method: 'POST',
headers: {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json',
},
body: JSON.stringify(payload),
});
const data = res.json();
console.log(data);
上記を実行するといずれも以下のようなレスポンスがJSONで取得できます。
正常なレスポンスの取得ができたら lint_id
を使用して校正結果を取得します。
以下、正常なレスポンスの例です。
{
"monthly_amount": 1000000,
"current_usage": 222,
"lint_id": "4c5aeef4-44c0-4020-887a-9d06a82d55fb",
"len_body": 20,
"len_used": 0
}
校正結果APIから結果を取得する
ここでは、校正APIを使用して校正をリクエストするで取得した lint_id
を使用して校正結果を取得します。
- cURL
- Python
- JavaScript
curl https://api.shodo.ink/@{organization}/{project}/lint/{lint_id}/ \
-H "Authorization: Bearer {token}"
import urllib.request
url = "https://api.shodo.ink/@{organization}/{project}/lint/{lint_id}/"
headers = {
"Authorization": "Bearer {token}",
}
req = urllib.request.Request(
url=url,
headers=headers,
)
with urllib.request.urlopen(req) as res:
body = json.loads(res.read())
print(body)
const url = 'https://api.shodo.ink/@{organization}/{project}/lint/{lint_id}/';
const res = fetch(url, {
method: 'GET',
headers: {
'Authorization': 'Bearer {token}',
},
});
const data = res.json();
console.log(data);
文章の校正は非同期によって処理が実行されます。上 記の実行によって得られたレスポンスの status
を確認してください。
{
"messages": [],
"status": "processing",
"updated": 1730957727
}
レスポンス内容の status
が processing
(校正中)である場合は、校正が完了していないことを示しています。少し時間をおいて再度リクエストを行ってください。
status
が done
(完了)になると校正結果が messages
に格納されます。
また、 status
が done
であり messages
が空の配列である場合、校正案はない状態となります。
以下、校正結果がある場合の例です。
{
"messages": [
{
"code": "ai_recommend",
"message": "もしかして:タイプミス",
"severity": "warning",
"from": {
"line": 0,
"ch": 2
},
"to": {
"line": 0,
"ch": 3
},
"index": 2,
"index_to": 3,
"before": "を",
"after": "の",
"operation": "replace",
"score": 0.8658215999603271,
"meta": {
}
}
],
"status": "done",
"updated": 1730958753
}