背景
クラウドの利用料金って膨らみがちですよね。
実業務では多くのサブスクリプションやアカウントを管理する必要があり、1つ1つのリソースの料金を見るのが難しい時があると思います。
そんな課題を解決するために、少し前に話題になったOpen Interpreterが使えないか検証してみました。
検証環境
- Open Interpreter: v0.1.9
- 使用モデル: gpt-4 (ChatGPT)
試してみた
今回の検証は次のステップで進めました。
- 対象のアカウントで課金されているEC2の一覧を取得する
- 停止・削除してよい条件を出力させる
- 1で取得したEC2から特定のインスタンスを指定して、停止 or 削除できるか判定してもらう
停止・削除できるEC2をOpen Interpreterに見つけてもらうことで、料金を削減する算段です。
1. 対象のアカウントで課金されているEC2の一覧を取得する
まずは、アカウントで課金されている(running状態)のEC2インスタンスを取得してもらいます。分かりやすいようにインスタンス名、インスタンスID、ステータス、インスタンスタイプを出力内容に含むよう指示を出します。
AWS CLIを使用して、AWS上のEC2の実行状態がrunningの一覧を出力してください。出力時の項目は、インスタンス名、インスタンスID、ステータス、インスタンスタイプとしてください。
結果は下記のようになり、実行するプランと注意点、AWS CLIのコードを生成してくれました。
そのまま実行するよう指示を送ると・・・
指示した通り、条件に合致するEC2を一覧で出力してくれました!
2. 停止・削除してよい条件案を作成する
次に、停止・削除する基準をOpen Interpreterで生成できるか検証します。
使用頻度が少なく停止や削除が可能なEC2のインスタンスを調査するための基準となる条件案を一覧で出力してください。
結果はこちら
内容の精査は必要そうですが、方向性としては間違ってなさそうです。この結果を次のステップで使ってもらいます。
3. インスタンスIDを指定してEC2を停止・削除できるか判定する
最後に、Open Interpreterで生成した基準をもとに停止・削除の判定ができるか検証します。
インスタンスID`i-xxx`のEC2は、CPU使用率という観点で停止・削除対象になるか判定してください。
指定したidの過去7日間のCPU使用率を取得するコマンドを生成してくれました。
実際にコマンドを実行してもらうと、CPU使用率が2%~3%なのであまり使われていないかも・・・という回答をしてくれました。
検証中ハマったこと
繰り返し処理を含む指示を出すと上手くいかない
検証のステップ3ですが、本来であれば取得したEC2全てを対象に検証したかったのですが上手くいきませんでした。
挙動としてはpythonでfor文を生成→構文エラーが発生→再生成するも構文エラー→以下無限ループといった事態に陥ることが多かったです。
対策としては、1件だけやりたいことを実現するためのプロンプトを与え、その後2件目以降も同様に実行するよう指示したら上手くいくこともあったのですが、精度はイマイチでした。。。
最後に
Open Interpreterを使ってクラウド利用料を下げられないか検証しました。
結果としては、特定のリソースを指定する方法なら可能というところに落ち着きました。
より詳しく検証を進めて、「アカウント全体のリソースに対して、利用料金を下げるための計画を立てて」みたいなことができれば、夢が広がりますね!