⚙️ Converse APIとは
世界中の家電(AIモデル)をそのまま挿せる『万能マルチ変換プラグ』
AWSのAmazon Bedrockには、Anthropic社のClaudeとか、Meta社のLlamaとか、いろんな会社の優秀なAIモデルが集まっとる。
昔は、Claudeに話しかけるときと、Llamaに話しかけるときで、Pythonのコードの書き方(データの渡し方)が全然違ったんよ。
- Claude用:「こういう形式で文字を渡してな」
- Llama用:「うちはその形式無理や、こっちの書き方にして」
これやと、途中で「やっぱりClaudeからLlamaに変えたいな」ってなったときに、コードを大手術せなあかんくて、エンジニアはみんな涙目になってたんや。
そこでAWSが作ったのが Converse API。
「どんな会社のAIモデルが相手でも、人間側はぜーーんぶ同じ1つの書き方(Converse APIのルール)で話しかけてええで!裏での翻訳はワイが引き受けたるわ!」っていう、超便利な共通の窓口を作ってくれたんや。
🧬 Strands Agents との違い
※ Strands Agentsについてもまとめてあるから暇やったら読んでな。
Converse API の場合の泥臭い現実(if文が必要)
Converse APIを使っても、AIは賢いから「どの関数を使うべきか」は判断してくれるんよ。
ただAIは「指示を出すだけ」で実際のプログラム(関数)を動かす筋肉を持ってへんねん。
コードで書くと、こんな感じのめんどくさい処理を自分で書くことになる。
# 😭 Converse APIで自作するときの泥臭いイメージ
response = converse_api.chat("梅田までドローンで届けて")
# AIから「このツール使いたい!」ってお返事が返ってくる
if response.requested_tool == "order_delivery_drone":
# 👈 ここ!自分でif文を書いて、実際の関数を動かさなあかん!
result = order_delivery_drone(address="梅田", count=12)
# 動かした結果を、またAIに「送り返すコード」も自分で書く
converse_api.send_tool_result(result)
elif response.requested_tool == "calculate_takoyaki_price":
# 別のツールやったら…ってif文を延々と並べるハメになる
result = calculate_takoyaki_price(count=12)
converse_api.send_tool_result(result)
な? AIは「ドローン手配のツール使いたい!」って言うてくれる(判断する)けど、それを聞いて「じゃあPythonの order_delivery_drone っていう関数を今すぐ実行せえ!」って引き金を引くのは、あなたの書くif文の仕事なんや。
もし道具が100個あったら、この if elif elif ... が100個並ぶことになる。地獄やろ?
Strands Agents の場合(if文が消滅する)
対して、Strands Agentsは、上の「if文で分岐して関数を実行して、結果をAIに送り返す」っていう泥臭い部分を、全部内部のブラックボックスに閉じ込めて自動化してくれてるんや。
# 😎 Strands Agentsならこれだけ
response = takoyaki_agent("梅田までドローンで届けて")
# 👈 上のめんどくさいif文の往復が、この裏側で全部全自動で終わっとる!
🔥 Converse API vs Strands Agents
☝️ ぶっちゃけ、こんな時は「Strands Agents」が圧勝!
以下のようなユースケースなら、迷わず Strands Agents の出番や。
-
社内向けの便利ツールを作る時
- 「社内の書類データを読み込ませて、勝手に調べて勝手にメールの下書きを作ってくれるアシスタント」みたいな、身内の業務効率化ツール。
- 多少の誤作動(あ、順番間違えたわ、メンゴメンゴみたいなの)が許される環境なら、爆速で作れるこれが最強や。
-
複雑な調べものをさせたい時
- 「〇〇の株価を調べて、競合他社のデータを集めて、グラフ用の数値を計算して」みたいに、何回もAIとプログラムを往復(コンボ)させなあかん時。これを自作するのは地獄やから、Strands に丸投げするのが賢い。
☝️ こんな時は絶対に「Converse API」を使うべき!
逆に、どれだけ Strands Agents が便利でも、「Converse APIを使って、自分で泥臭くif文を書かなあかん」というガチの開発ユースケースがこれや。
① 人間のチェック(確認画面)を挟みたい時【最重要】
これが一番の理由やな。
Strands Agents は優秀すぎて、頼まれた仕事を最後までノンストップで全自動でやり遂げようとするんや。
例えば、「ドローンでたこ焼きを配達する」というシステム。
AIが勝手に判断して、最後の「ドローン発射!」の関数まで一気に裏で実行されたら怖くないか? 住所が1文字間違ってて、他人の家にたこ焼きがドカンと激突するかも知らん。
Converse API なら
AIが「ドローンツールを使いたい!」と言った時点でプログラムが一度止まる。
そこで人間に「本当にドローン飛ばしてええですか? [はい/いいえ]」という確認画面を出して、人間がポチッと押してから関数を実行する…という人間の介入(Human-in-the-loop)が簡単に作れるんや。
② 1往復で終わるシンプルなチャットボットの時
「会社のホームページによくある問い合わせ窓口」とか「普通の雑談AI」を作りたい時。
これは「ユーザーが喋る ➔ AIが1回返す」の1往復だけでええやろ? 道具をガチャガチャ使う必要もない。
それなのに、わざわざ重たい Strands Agents(全自動調理器)を引っ張り出してくると、裏側のループ処理のせいで無駄にAIの動き(お返事)が遅くなったり、AWSの料金が高くなったりするんよ。
シンプルなチャットなら、薄くて軽い Converse API(万能包丁)でサクッと返すのが最速で最安や。
③ エラーが起きた時に、細かく言い訳(ログ記録)したい時
Strands Agents は裏で勝手に関数を動かしてくれるけど、逆に言うと「裏で何が起きてるか見えにくい(ブラックボックス)」んや。
もし本番環境で「なんかエラー出た!」ってなった時、どこの関数で、どんな数字の時に、AIがどうトち狂ったんかを突き止める(デバッグする)のがちょっと大変なんよ。
金融システムとか、絶対にバグが許されへんガチのシステム開発では、Converse API を使って「何時何分、AIがこの関数を呼ぼうとした」「人間が作ったif文がこれを受け取った」って、すべての足跡を1行ずつログにカチッと残す設計にするのがプロの鉄則なんや。
Converse API の超・爆速まとめ
-
Converse APIとは?
AWSの色んなAIモデル(Claude、Llamaなど)が相手でも、人間側はぜーんぶ同じ書き方で話しかけられるようにし
てくれる「万能マルチ変換プラグ」。
-
ツールの役割分担
お客さんの言葉のニュアンスから「どの関数を使うか(選定)」はAI(社長)がやってくれる。
-
人間の書くコード
選ばれた関数が「実際にどうシステムを動かすか(動作)」は、人間側がif文で泥臭く繋ぎこんでコードを書く(部下)。