Claude3とは
GPT-4を超えた?と巷で評判のAnthropic社の生成AIサービスです。使ってみると応答の内容もありますが応答速度の速さが何より快適です。
ClaudeはREST APIで利用可能ですので、最小のシンプルな形でPowerPlatformのカスタムコネクタで利用できるようにしてみました。
必要なもの
- Claude API のアカウント
- Power Automate / Power Apps のPremium ライセンス
- カスタムコネクタはMicrosoft365付属のPower Automate, Power Appsでは利用できません。Power Automate, Power Apps のPremium ライセンスなどが必要になります。
Claude APIを把握する
サインアップする
APIを利用するには、公式サイトで登録しAPIキーを取得する必要があります。APIの利用は従量課金制ですが、登録自体は無料です。また5ドル分お試し利用できる権利がついていますので登録すればとりあえず始めることができます。
登録完了してサインインすると、このようなダッシュボードにアクセスできるようになります。
「Explore Documentation」からドキュメントにアクセスできます。まずここをざっと目を通しておきましょう。安心してください。日本語に対応しています。
「Start Prompting with Claude」でプロンプトを入力して試すことができるWorkbenchにアクセスできます。
「Get API Keys」こちらでからAPIキーを取得できます。
APIキーを取得する
ダッシュボードの「Get API Keys」をクリックします。
初回はこのような画面になりますので「Create Key」をクリックしましょう
API キーの名前をつけて「Create Key」
APIキーが作成されます。「Copy Key」をクリックしてコピーしたら安全な場所に保管しておきましょう。APIキーはこの画面でしか取得できません。一度閉じてしまうと取得できなくなりますのでご注意ください。
カスタムコネクタを作成する
個人的に使い慣れたPower Automateから作成していきます。
Power Automateにアクセスしたら「詳細」→「すべて検出」
「データ」カテゴリの中に「カスタムコネクタ」があります。
名前の横にある📌をクリックして色を反転させておくと左のメニューに表示されアクセスしやすくなります。
「カスタムコネクタ」ページにアクセスしたらページ右上の「カスタムコネクタの新規作成」→「一から作成」をクリックします。
カスタムコネクタの名前を入力して続行します。
※名前には設定できないキーワードがあります。
名前を設定して続行するとこのようなカスタムコネクタウィザードが表示されますので、順番に設定を行っていきます。
1.全般
アイコン・アイコンの背景色・説明などはお好みでいい感じのものを設定します。
2.セキュリティ
今回のClaude APIはAPIキーを使用しますのでAPIキーとして設定します。
3.定義
ここで実際に使用するAPIを定義します。今回は「メッセージを作成する」アクションを1つだけ作成します。「新しいアクション」をクリックして進めます。
このよう表示に変わりますので、上から順番に設定していきます。
3-1.定義-メッセージを作成するアクション-全般
Power Automate等でコネクタを使用する際に表示される動作を定義します。
- 概要
- メッセージを作成する
- 説明
- Claudeでメッセージを生成します。
- 操作ID
- Message
- ※内部的な識別に使われるIDです。先頭は大文字で
- 表示
- important
- この設定はアクションのパラメータ設定の際の表示形式になります
- important:既定で表示されます
- advanced:既定では表示されず「詳細オプション」扱いになります
- internal:ユーザーには表示されません
これらはPowerAuromate クラシックデザイナーの画面ではここに対応します
3-2.定義-メッセージを作成するアクション-要求
「サンプルをインポート」をクリックして設定を進めます。
このようなインポートダイアログが表示されます。
ここを設定するためには、Claude API のAPIリファレンスページを参照して進めていきます。
このリファレンスページの説明を参考に、REQUESTのサンプルを基に下記のように設定します。
- 動詞
- POST
- URL
- ヘッダー
- Content-Type application/json
- anthropic-version 2023-06-01
- 本文
-
{ "model": "claude-3-opus-20240229", "system": "Respond only in Japanese.", "max_tokens": 1024, "messages": [ {"role": "user", "content": "Hello, world"} ], "temperature":0.2, "top_p":0.1, "top_k":0.1 }
- ※個人的好みでsystem,temperature,top_p,top_kを追加していますが、省略しても問題ありません
-
このように設定して「インポート」をクリックします。
要求の表示がこのように変わります。
少し設定を加えていきます。
[Content-Type]
ヘッダーの「Context-Type」→「編集」をクリックします。
次の3か所を設定します。
- 既定値
- application/json
- 必須
- はい
- 表示
- internal
Content-Typeは固定の値で変更する必要がありません。このように設定して、常に既定の値で設定され非表示とします。
設定したら上部の「←戻る」をクリックし元のページに戻ります。
[anthropic-version]
同様にanthropic-versionも設定します。
- 概要
- APIバージョン
- 既定値
- 2023-06-01
- 必須
- はい
- 表示
- important
このパラメータはAPIのバージョンを設定します。2024年3月時点の最新のバージョン2023-06-01を既定値に設定しています。
続いて本文を設定します。本文の「Body」→「編集」をクリックします。
次の3か所を設定します。
- 必須
- はい
- 表示
- important
- 本文
- 1つづつ編集画面で設定していきます
- 設定したら上部の「←戻る」をクリックしてbodyに戻るのを繰り返します
[max_tokens]
生成するメッセージのトークンの最大数を指定します。最大数はモデルごとに変わる可能性がありますが、既定値として1024を仮に設定しています。使い込んでみて調整する想定です。
- タイトル
- 生成するトークンの最大数
- 既定値
- 1024
- 必須
- はい
[content]
所謂プロンプトをここに入力します。
- タイトル
- プロンプト
- 必須
- はい
- 表示
- important
[role]
- 既定値
- user
- 必須
- はい
- 表示
- important
- ドロップダウンの種類
- 静的
- 値
- "user","assistant"
[model]
Claudeのモデルを選択します。Claude3は現在2つのモデルが選べるようです。
- claude-3-opus-20240229
- claude-3-sonnet-20240229
- タイトル
- モデル
- 既定値
- claude-3-sonnet-20240229
- 必須
- はい
- 表示
- important
- ドロップダウンの種類
- 静的
- 値
- "claude-3-sonnet-20240229","claude-3-opus-20240229"
[system]
Claudeの応答を制御するシステムメッセージを設定します。今回は既定値で必ず日本語で返す既定値を設定します。
- タイトル
- システムメッセージ
- 既定値
- Respond only in Japanese.
- 表示
- advanced
[temperature],[top_p],[top_k]
これら3つは表示のみ設定します。
- 表示
- advanced
ここまでで要求の設定はひとまず完了です。
ここが緑色のチェックに変わっていればひとまず問題ありません。
3-3.定義-メッセージを作成するアクション-要求の動作確認
この状態でいったんコネクタを作成し、動作を確認してみます。
画面右上の「コネクタの作成」をクリックします。
作成に成功したら「6.テスト」をクリックします。
テストするためにはコネクタの接続が必要です。「新しい接続」をクリックします。
Webブラウザの新しいタブで接続を追加するページが表示されます。あらかじめ保管しておいたCloude APIキーを張り付けて「接続の作成」をクリックします。
元のタブに戻り、接続の右の矢印アイコンで更新すると作成した接続が表示されます。
プロンプトを入力して「テスト操作」をクリックしてみます。
- content
- 日本で一番高い山は?
正常に応答が返ってきた場合は「状態(200)」となります。
入力したプロンプトに対して富士山を期待した応答ができていることが確認できます。
ここまで動作してしまえばほぼ完成です。アクションの出力の本文がJSONとして返される形で動作しますので、このまま使うこともできます。
3-4.定義-メッセージを作成するアクションの応答
最後に応答の設定を行い、APIの応答を動的な値として表示されるように設定します。
まず、テスト実行した応答のボディの値をメモ帳などにコピーしておきます。
{ "id": "msg_01DKQt2hi47bbM7BfHuCovdK", "type": "message", "role": "assistant", "content": [ { "type": "text", "text": "日本で一番高い山は富士山です。富士山の標高は3,776メートルです。富士山は静岡県と山梨県の県境にある成層火山で、その美しい形状から「富士」という名前が付けられました。山頂には深さ約200mの火口があり、火山活動は現在も続いています。古くから日本人に親しまれ、芸術の題材にもなっている国民的な名峰です。" } ], "model": "claude-3-sonnet-20240229", "stop_reason": "end_turn", "stop_sequence": null, "usage": { "input_tokens": 24, "output_tokens": 138 } }
「3.定義」をクリックします。
応答-defaultをクリックします。
「サンプルからのインポート」をクリックします。
インポートダイアログが表示されます。
ここに先ほどのテスト実行の応答のボディを張り付けて「インポート」をクリックします。
すると本文の箇所が変化します。
JSONの構造がそのまま設定されていますので、このまま不要なものまで動的な値として表示されてしまいます。
1つづつ設定していきます。
[text]
応答テキストです。
- タイトル
- 応答テキスト
- 表示
- important
[stop_reason]
停止理由はエラー処理のために使いそうなので表示されるように設定しておきます。
"end_turn": モデルは自然な停止点に到達しました
"max_tokens": 要求を超えましたmax_tokensまたはモデルの最大値
"stop_sequence": 提供されたカスタムの 1 つstop_sequences生成されました
- タイトル
- 停止理由
- 表示
- important
[type],[id],[model],[stop_sequence],[type],[input_tokens],[top_tokens]
その他は動的な値として必要ないのでinternalにして非表示とします。
最後に「コネクタを更新」します。これで作成完了です。
4.動作確認してみる
最後にPower Automateでインスタントクラウドフローを作成し動作を確認します。
作成したカスタムコネクタのアクションを追加します。
フローデザイナーでコネクタはこのように表示されます。
アクションはこのように表示されます。
フローにアクションを追加してみます。
「Add new item」をクリックすることで複数のメッセージが設定できます。
※Roleの既定値に"user"を設定したのですが反映されませんでした。ひとまず"user"と入力しておきます。
プロンプトを設定しておきます。
次に作成アクションを追加して動的な値を表示すると設定通りに候補が表示されます。
ここではbody/contentを選択しておきます。
フローをテスト実行してみると正常に実行されClaudeの応答が取得できます。
クラシックデザイナーでもこのように表示されます。
参考にした情報
公式のドキュメントページのチェックは必須です。
今後の課題
- リクエストのroleの既定値が反映されない?
- ストリーミングメッセージへの対応をしたい
- ビジョンへも対応させたい
さいごに
リファレンスページを見ながらメッセージ作成のみ作ってみました。OpenAI APIやAOAIに近いJSONの構造ですので、それらを使ったことがある方であれば比較的容易に使えそうです。