ブログ

watsonx.ai の LLMモデル をpythonから使用してみた

初めに

IBMからLLMが利用できるwatsonx.aiが発表されました。
Prompt Labという、Webインターフェースが用意されていますが、
今回は、pythonから実行してみた内容となっています。

※Prompt Labの使い方は、こちらの記事が参考になります。
https://qiita.com/yanagih/items/3d1b081f46799072df80

※curlからの呼び出しはこちら
https://alpcom.co.jp/blog/20230724-01/

1.Prompt Labでの実行

まず、Prompt Labを使用して、文章の要約を試してみました。

2. pythonでの実行

上記、Prompt Labの内容をpythonで実行してみました。
APIのエンドポイントにHTTPS(POST)アクセスすることにより、実行することができます。
詳細は、下記ソースをご参照ください。
なお、実施するにあたり、ibm_cloud_sdk_coreとrequestsをpipで事前導入してください。

summary.py

from ibm_cloud_sdk_core import IAMTokenManager
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator, BearerTokenAuthenticator
import requests

# TOKENの取得
apikey = "wt1Vklx-ivo1rr2L0MIYEl1sUsv8P_3QS46yXBXcMJNh"
access_token = IAMTokenManager(
    apikey,
    url = "https://iam.cloud.ibm.com/identity/token"
).get_token()

# Promptの実行
model_id = "ibm/mpt-7b-instruct2"
parameters = {
    "decoding_method": "greedy",
    "max_new_tokens": 500,
    "repetition_penalty": 1
}
project_id = "17c8f77e-bc5e-471a-ab6c-843c9d992f6f"
wml_url = "https://us-south.ml.cloud.ibm.com/ml/v1-beta/generation/text?version=2023-05-28"

prompt_input = """要約をしてください

入力:
遠足に出かけた11歳から17歳の少年たちと25歳のサッカー・コーチは6月23日、大 雨で増水した洞窟から出られなくなった。タイ内外から集まったダイバー約90人などが捜索に当た り、英国人ダイバー2人によって7月2日夜に発見された。地元のチェンライ県知事やタイ海軍特殊部隊が中心となった救助本部は当初、水が引くか、あるいは少年たちが 潜水技術を習得するまで時間をかけて脱出させるつもりだった が、雨季による水位上昇と洞窟内の酸素低下の進行が懸念され、8日か ら3日連続の救出作戦が敢行された。
ダイバーたちに前後を支えられ、水路内に張り巡らされたガイドロープをたどりながら、潜水経験のない少年たちは脱出 した。8日に最初の4人、9日に4人、10日に残る5人が脱出し、ただちに近くのチェンライ市内の病院に搬送 された。2週間以上洞窟に閉じ込められていたことを思えば、全員驚くほど心身ともに元気だという。\\n少年たちとコーチは レントゲンや血液検査などを受けた。少なくとも7日間は、経過観察のために入院を続けるという。
洞窟内の水を飲み、鳥やコウモリの排泄物に接触した可能性のある13人は、病原体に感染しているおそれがあるため隔離されてい る。家族とはガラス越しに再会したという。\\n食べ物のほとんどない洞窟内で2週間以上を過ごした少年たちは体重を大幅に落とし、空腹を訴えていた。救出後は好物の豚肉のご飯やパン、チョコレートなどを希望したが、しばらく は流動食が続くという。
さらに、外界の光に目が慣れるまでの数日は、サングラスをかける必要がある。

要約:
"""

headers = {
    "Authorization": "Bearer " + access_token,
    "Content-Type": "application/json",
    "Accept": "application/json"
}

data = {
    "model_id": model_id,
    "input": prompt_input,
    "parameters": parameters,
    "project_id": project_id
}

response = requests.post(wml_url, json=data, headers=headers)
if response.status_code == 200:
    print(response.json()["results"][0]["generated_text"])
else:
    print(response.text)
$ python summary.py
1. 少年たちとコーチは6月23日に洞窟から出られなくなった。
2. ダイバー約90人などが捜索に当たり、英国人ダイバー2人によって7月2日夜に発見された。
3. 地元のチェンライ県知事やタイ海軍特殊部隊が中心となった救助本部は、水が引くか、あるいは少年たちが潜水技術を習得するまで時間をかけて脱出させるつもりだったが、雨季による水位上昇と洞窟内の酸素低下の進行が懸念され、8日か ら3日連続の救出作戦が敢行された。
4. ダイバーたちに前後を支えられ、水路内に張り巡らされたガイドロープをたどりながら、潜水経験のない少年たちは脱出した。
5. 8日に最初の4人、9日に4人、10日に残る5人が脱出し、ただちに近くのチェンライ市内の病院に搬送された。
6. 少年たちとコーチはレントゲンや血液検査などを受けた。少なくとも7日間は、経過観察のために入院を続けるという。
7. 食べ物のほとんどない洞窟内で2週間以上を過ごした少年たちは体重を大幅に落とし、空腹を訴えていた。

※prompt_inputの内容を変更して、いろいろ試してみてください。

pagetop