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

## 初めに

IBMからLLMが利用可能なプラットフォームであるwatsonx.aiが発表されました。
Prompt Labという、Webインターフェースが用意されていますが、
今回は、curlから実行してみた内容となっています。

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

※Pythonからの呼び出しはこちら
https://qiita.com/ac_qiita/items/b9a481de3c562ed08eba

## 1.Prompt Labでの実行
まず、Prompt Labを使用して、文章の要約を試してみました。
![2023-07-18_10h10_50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1740352/664e35bf-ba27-8556-92ad-fc275d44523a.png)

## 2. Crulでの実行
上記、Prompt Labの内容をcurlで実行してみました。

まずは初めにAPI KeyからTokenを発行します。

```
$ curl -X POST 'https://iam.cloud.ibm.com/identity/token' -H 'Content-Type: application/x-www-form-urlencoded' -d 'grant_type=urn:ibm:params:oauth:grant-type:apikey&apikey=[API KEY]'

※[API KEY]は、ご自身のIBM Cloud AccountのAPI Keyに置き換えてください。


(出力結果）
{
  "access_token": "ey...............................",
  "refresh_token": "not_supported",
  "token_type": "Bearer",
  "expires_in": 3600,
  "expiration": 1689647084,
  "scope": "ibm openid"
}
```


次に、発行されたTokenを使って、要約のタスクを実行します。
なお、下記curlのコマンドは、Prompt Labの「コードの表示」をクリックすることで、確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1740352/09ed04d5-aca5-f399-21b0-439e1ecbdc30.png)

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

※[Token]は、API Keyから発行したTokenに置き換えてください。
※[Project ID]は、このタスクを実行するプロジェクトのIDを指定してください。


（出力結果）
{
  "model_id": "ibm/mpt-7b-instruct2",
  "created_at": "2023-07-18T01:21:57.939Z",
  "results": [
    {
      "generated_text": "\n1. 少年たちとコーチは、6月23日に洞窟から出られなくなった。\n2. ダイバー約90人などが捜索に当たり、英国人ダイバー2人によって7月2日夜に発見された。\n3. 地元のチェンライ県知事やタイ海軍 特殊部隊が中心となった救助本部は、水が引くか、あるいは少年たちが潜水技術を習得するまで時間をかけて脱出させるつもりだったが、雨季による水位上昇と洞窟内の酸素低下の進行が懸念され、8日から3日連続の救出作戦が敢行 された。\n4. ダイバーたちに前後を支えられ、水路内に張り巡らされ たガイドロープをたどりながら、潜水経験のない少年たちは脱出した。\n5. 8日に最初の4人、9日に4人、10日に残る5人が脱出し、ただちに近くのチェンライ市 内の病院に搬送された。\n6. 少年たちとコーチはレントゲンや血液検査などを受けた。少なくとも7日間は、経過観察のために入院を続けるという。\n7. 食べ物のほとんどない洞窟内で2週間以上を過ごした少年たちは体重を大幅に 落とし、空腹を訴えていた。\n8. さらに、外界の光に目が慣れる",
      "generated_token_count": 500,
      "input_token_count": 733,
      "stop_reason": "MAX_TOKENS"
    }
  ],
  "system": {
    "warnings": [
      {
        "message": "Invalid value for parameter parameters.time_limit: the value of the parameter time_limit must be specified for this model and must be larger than 0 and not larger than 5m0s; it was set to 5m0s",
        "id": "InvalidRequestEntity"
      }
    ]
  }
}
```


入力のところの文字列を変えれば、様々な文章の要約が可能なので、いろいろ試してみてください。