はじめに
最近どこでもChatGPTをはじめとしたAIサービスの名前を聞くようになりました。
エンジニアとしてご飯を食べている私たちとしてはこの流れ、乗らないわけにはいかないですね。
というわけで、今回はChatGPTを元に作られているAgentGPTを使用し、AWSのインフラ環境作成ができるのか試してみました。
目次
- AgentGPTとは
- 課題設定
- 実際にやってみた
- 感想・まとめ
AgentGPTとは
ChatGPTについてご存知の方は多いかと思いますが、最近はChatGPTを元にしたサービスが続々と出てきています。
AgentGPTもそのサービスの一つで、ChatGPTをより使いやすくしたものとなります。
具体的なメリットを説明すると、ChatGPTは質問の仕方がとても重要で、回答の質に直結します。
AgentGPTでは「目標を設定するとゴールまでのタスクを自動で考え、そのタスクを自動で処理していく」といったことができます。
目標についてはざっくりしたものでもある程度吸収してくれるため、質問の仕方を考えなくて良い点がユーザーフレンドリーですね。
現時点(2023/5/31)ですとプランは無料プランと有料プランがあります。
有料プランの場合、GPT-4を使用できるようなので、コード生成の精度が上がりそうです。
今回は無料プランを使っていきます。
課題設定
AgentGPTを使ってAWSのインフラ構築を試みます。
AWSのインフラはCDKを使うことでコードからインフラ構築ができます。そのため、結果として文字を出力するAgentGPTと相性は良いです。
今回はテストなので下記の簡単なインフラ構築を目指そうと思います。
- WordPressサイトのインフラを構築
- CDKを使用し、言語はTypeScriptを使用する
実際にやってみた
AgentGPT(https://agentgpt.reworkd.ai/ja)にアクセスし、サインインします。
名前は適当に入力し、目標は課題設定の内容を踏まえ、下記として設定しました。
「AWSでWordPressサイトを立ち上げてください。CDKを使ってAWS内にインフラを立ち上げるよう、TypeScriptのコードを書いてください。」
最後に「エージェントを実行する」ボタンを押すだけで私たちの仕事は終了です。
あとは目標達成に向け、AgentGPTが頑張ってくれます。
少し待つと自動で目標に対するタスクが生成され、「Current tasks」にリストアップされます。
タスクの内容も良さそうですね。
このタスク生成がAgentGPTとChatGPTを大きく分ける部分だと思います。
あとはひたすら待つだけです。
タスク一つ一つをAgentGPTが解決していきます。
最終的な結果はpdfや画像で取得することが可能です。
今回の結果の全文は省略しますが、インフラを構築するTypeScriptは下記が出力されました。
import * as cdk from 'aws-cdk-lib';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as elbv2 from 'aws-cdk-lib/aws-elasticloadbalancingv2';
import * as ssm from 'aws-cdk-lib/aws-ssm';
const app = new cdk.App();
// Define a new VPC with CIDR 10.0.0.0/16
const vpc = new ec2.Vpc(app, 'MyVPC', {
cidr: '10.0.0.0/16',
});
// Create public and private subnets
const publicSubnet = new ec2.PublicSubnet(app, 'PublicSubnet', {
vpcId: vpc.vpcId,
cidrBlock: '10.0.0.0/24',
});
const privateSubnet = new ec2.PrivateSubnet(app, 'PrivateSubnet', {
vpcId: vpc.vpcId,
cidrBlock: '10.0.1.0/24',
});
// Create a NAT Gateway in the public subnet to provide internet access to private resources
const natGateway = new ec2.NatGateway(app, 'MyNATGateway', {
subnetId: publicSubnet.subnetId,
allocationId: natEip.eipAllocationId,
});
// Create a new Application Load Balancer with a target group
const loadBalancer = new elbv2.ApplicationLoadBalancer(app, 'MyLoadBalancer', {
vpc: vpc,
internetFacing: true,
});
const targetGroup = new elbv2.ApplicationTargetGroup(app, 'MyTargetGroup', {
vpc: vpc,
port: 80,
targetType: elbv2.TargetType.INSTANCE,
});
// Create a new EC2 instance in the private subnet
const instance = new ec2.Instance(app, 'MyEC2Instance', {
vpc: vpc,
instanceType: ec2.InstanceType.of(ec2.InstanceClass.T2, ec2.InstanceSize.MICRO),
machineImage: new ec2.AmazonLinuxImage(),
keyName: 'my-key-pair',
vpcSubnets: {
subnetType: ec2.SubnetType.PRIVATE,
},
});
// Add the instance to the target group so that traffic can be routed to it
出力されたTypeScriptのコードでは目標としていたWordPressのインフラ環境は立ち上がりません。
しかし、タスク生成を踏まえた答えの出し方を考えると、惜しいところまで来ているように思えます。
感想・まとめ
今回試した限りではAIに頼りきりでインフラ構築はできませんでした。
しかし、可能性は感じる結果となりました。
AgentGPTの有料プランの場合、 GPT-4が使えるのでもしかしたら現時点で手放しのインフラ構築ができるかもしれません。
また、他のAIサービスであるAutoGPTはより目標に対して細かい設定ができるので、品質の良いコードが得られるかもしれません。時間があったら検証したいです。
AIの進化は目覚ましく、使う側と使われる側が顕著に出てくると言われています。
今回の検証でその兆しを見たような気がします。
この流れに乗り遅れないよう、常にキャッチアップをしていき、新しい技術を楽しんでいきたいですね。