
Generative AI Use Cases (GenU)からOpenAIを超簡単に呼び出す
三行まとめ
- AWSの用意したGenerative AI Use Casesの導入は楽だ(大前提の話)
- AWS以外の他社製のLMMを使ってみたいという需要は一定量ある
- 簡単にOpenAIのLLMを呼ぶことができるが、回答速度が課題だ
はじめに
最近、Cloud Codeを使い倒している大村です。ヘビーユーザーでいつもリミットに引っかかっています。
もうCloud Codeなしの生活に戻れそうもない気がします。ただそれでも、自分(人間)しかできない分野があるとは思うのでそこを突き詰めていきたいと思います。
簡単にAIチャット試したいです
弊社は、お客様への Generative AI Use Cases (GenU)の導入とカスタマイズのサポートをさせていただいております。
その中でよく問い合わせを受けることが「AWS以外のLLMも試してみたいんですよね」って言葉です。
もちろん、現在のAmazon BedrockのLLMが悪いわけでも、Sonnet4の結果に納得いってないわけでもないんです。
むしろ、GenUをカスタマイズすることにより、業務ドメインに特化した使い方ができ、底がまだまだ知れていないプロンプトの世界へ我々を誘ってくれるんです。
基本的なLLM追加方法
利用したいLLMを追加しようと思うと、GenUのサポートするものであれば、cdk.json(もしくはparameter.tsですが、特に注釈がないときはcdk.jsonで統一します)を修正し、デプロイをするだけでOKでした。
しかし、今回の要件はこのサポートをしていないLLMも利用したいというもの。
今までであれば、次の3つぐらいの方法を提案していました
- GenUから直接LLM(API)を呼ぶ
一番簡単に考えられ、一番大変なのが、このGenUにLLMのAPIを呼ぶ箇所をカスタマイズし実装することでした。
レスポンスは一番早いことが容易に想像できるものの、GenUを大幅に改造する可能性があり、今後のアップデートでの追従ができなくなる(アップデートのたびに影響があるかどうかを調べなければならない)可能性がありました。
- GenUからLambda経由での実行
次に考えられるのが、AWS Lambdaを経由する方法です。
これも前項に似ているのですが、AWS Lambda内でAPIを呼ぶという流れになります。
この場合、速度的には1と大差なく、またGenUの中からLambdaをコールしてる場所もあり、変更を加えて修正をするという観点ではそれなりの大変さはあるものの、アップデートでの追従は前項ほど追い辛くなさそうでした(今回はカスタマイズを行っていないため推測の域での話となります)。
- AgentのアクションにLLMを追加
去年末にGenUのアップデートで対応されたAgentチャットを使う方法です。
この方法も前項とあまり違いがないように見えますが、GenUからAgentを呼ぶ事は、cdk.jsonを使えば割とすぐ実装できるため、GenU自体へのカスタマイズをすることなく実装が可能です。
ただし、前項同様にLambdaからLLMへの呼び出し関数を作成しなければならず、エラーとか諸々を考慮するとちょっと大変そうだなってのはあります。
しかも、Agentを経由するため、アクションを呼び出すAPIのyamlも作成しなければならず、エラー時の手順とかそれなりに健闘は必要そうです。
今回はMCPを利用してLLM(OpenAI)を呼びます
今回のメインの話題です。
先月のアップデートで、GenUに新たにMCPを呼び出すページが作成されました。
今回はこのMCP機能を利用しようと思います。
といっても、実際の設定は以下のように追加するだけです。
- GenUを最新にアップデートする
MCP周りはまだまだ出てきたばかりなので不具合が残っている可能性があるため、できるだけ最新に更新するようにしてください。
- cdk.jsonのMCP該当部分に追記する
以下のような形でGenUのMCP設定を変更してください。
{
"context": {
....
"mcpEnabled": true,
....
}
}
- ./mcp-api/mcp.json の修正を行う
MCPサーバー設定は、cdk.jsonを行う方法から少し修正されました。
cdk.jsonの設置されたルートから、./mcp-api/mcp.jsonを選択して開いてください。
jsonの中身を以下のように修正してください。
{
"mcpServers": {
"o3": {
"command": "npx",
"args": ["o3-search-mcp"],
"env": {
"OPENAI_API_KEY": "sk-your-api-key",
"SEARCH_CONTEXT_SIZE": "medium",
"REASONING_EFFORT": "medium"
}
}
}
}
SEARCH_CONTEXT_SIZEやREASONING_EFFORTは自由に変更してください。
また、リトライ回数なども設定できるようになっています。詳細は Githubのo3-search-mcp を参照してください。
実際は、OpenAIからAPI−Keyを発行して指定してください。
- cdkを使ってGenUをデプロイ
兎にも角にもOpenAIしか使わないのであれば、この設定のみで大丈夫です。
デプロイして、使用する環境でログインしてみましょう。
実際の動作内容
この手でよくある「今日の東京の天気は?」みたいな感じで検索してみます。
「MCPサーバーと接続しています」と出てきます。言われたとおり少しまちましょう。
さらにしばらくすると、内容がトレースされて出てきます。
本来GenUで検索できない本日の天気を気軽に問い合わせることができました。
ちなみに、このMCPの裏側はLambda経由で実行されているようなので、Agentから呼ぶのとあまり変わりは無い気もします。
唯一の欠点
今回この方法で実装できる利点は挙げればきりがありません。
カスタマイズを行わなくてもいいし、これにより強力な検索エンジンを手に入れたと言っても過言ではないです。
ただひとつ、気になる点としては、どうしてもAWS Bedrockを経由してのLLMアクセスとなってしまう点です。
レスポンスが結構もっさりとしています。
OpenAIに聞くところを、GenUの指定したLLMが問い合わせ内容を作成し、出てきた回答を更に修正するためです。
現段階でClaude Codeを使っている方なら、この感覚がわかるのではないでしょうか。
さいごに
今回のMCPサーバーを追加することで、GenUに外部へ気軽にアクセスできるパターンが作成できたと言えるかと思います。
簡単に導入できるGenUだからこそ、気軽に色々なサーバーが追加できるのは便利になってとてもいいですね。
(カスタマイズして実装する方法もあるので、お問い合わせいただければと思います。)
それでは。
※ あくまで現段階でのアクセス方法であり、将来的に継続してアクセスできるかどうかはわかりません。
実際の利用は自己責任でお願いいたします。(私は結構利用してます)