AWS Party Rockとは？

AWSの生成AI系サービスのParty Rockについて引き合いが来たのでお試しがてらどんなサービスで、何ができるのかまとめてみました。

# 概要
Party Rockについて

公式の説明では
>PartyRock は生成系 AI の様々なユースケースをアプリケーションとして実現し、共有を可能にする AWS の新しいサービスです。
テキストによる指示と画面操作のみで生成系 AI を組み込んだアプリケーションを作り、共有することができます。

とのことです。

[公式サイトURL](https://aws.amazon.com/jp/blogs/news/create-generative-ai-app-with-partyrock-amazon-bedrock/#:~:text=PartyRock%20%E3%81%AF%E7%94%9F%E6%88%90%E7%B3%BB%20AI,%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82)



実際に使ってみたところ、生成AIっぽい機能の
- 画像生成
- 文書要約
- 文書生成

上記は簡単できます。日本語でも動作してくれます。

# 料金
費用ですが基本的には無料で利用できます。というのもAWSのサービスですがAWS管理コンソールからの操作ではなく、サービス個別URLからGoogleアカウントなどログインして利用します。
アカウント事に利用できるリソース量が決まっていて、その量までは利用できます。ただ少しリソース量の消費カウント方法が変わっていて、リソース量を消費するのは<font color="Red">***自分のアカウント***</font>が利用したときだけです。
公開機能があり、URLなどを公開できますが公開して他ユーザが利用する分にはリソース消費としてカウントしない仕様です。
現在どのくらいリソース消費しているかは右上の😃をクリックして

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/c0c9c077-b2dd-271f-2fcf-864ff799a925.png)

「MyPartRock Credits」で確認可能です。
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/4942917c-46e4-137d-9291-b1a2f89b0dc1.png">



# AWSのマシンラーニング/AI系のサービス

AWSにはマシンラーニング/AI系のサービスは色々ありますが各サービスの建て付けだとこんな感じです。上のいくほどマネージド部分が多くなり、自由にチューニングできる部分が少なくなりますが逆に細々したチューニング・構築なしですぐに利用できるサービスとなります。PartyRockは「3.基盤モデルを活用するアプリケーション」になるそうで、裏でBedrockが動作しているそうです。

![生成AI関係のサービス.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/a2ff1c01-cf5d-bd99-3e62-6db8526a7626.png)


# 共通設定

PartyRockのログインURLは "https://partyrock.aws/" です。利用開始するにはアカウントを作成もしくはログインに使うGoogleアカウントやYahooアカウントを選択します。

アカウント設定が完了し、アプリの設定をするには左上の「Apps」をクリックし、
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/efb94110-8cc9-52cf-2436-2341950b9554.png">


「Generate app」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/225cf9cc-62e6-9c7d-8f9e-e27af2a313db.png)


App builderが起動するので、右下の「Start from an empty app」をクリックします。

<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/2f11ce04-3aa9-ef9b-80ef-24e0b96c359a.png">

こんな感じでウィジェットを作る画面になるので、「Create Widget」付近をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/462d0115-996d-dc05-6d86-d863b5f44eb2.png)


ウィジェットで設定する項目ですがこんな感じです。

- User Input・・・ユーザに入力してもらう内容。別のウィジェットに渡すパラメータなどの入力に使う
- Text Generation・・・AIに文書生成してもらいたいときに使う
- Image Generation・・・AIに画像生成してもらいたいときに使う


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/86cc2642-baf6-ab34-8c61-6f1ab248c100.png)

## 画像生成する場合の設定

サンプルとして動物の画像を生成するアプリを作ってみましょう。流れとしては「User Input」に入力されたパラメータを「Image Generation」に渡して画像を生成します。
まず「User Input」を作っていきます。

Titleに分かりやすい名前（今回はInput Create Image）を記入し、Placeholderに何をしてほしいのかメッセージを書いておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/bf246e37-518c-e675-eca9-4b1c6a0114c6.png)

続いて「Image Generation」を作っていきます。Titleに分かりやすい名前（今回はouput Create Image）を記入し、Modelは「Stable Diffusion XL」を、Style preset は「Cinematic」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/d8102feb-1cf1-f4d8-55d7-3c18bdb92a91.png)

ちなみにですがStyle presetは色々選べますのでお好みでOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/68460f09-1258-6f89-db35-7f76bda24ea2.png)

Image Descriptionには「An image of "「User Input」のTitle名" 」を記入します。ここはどのウィジェットから画像生成したいパラメータを受け取るのかを指定しています。上記の画像ではInput Create Imageから受け取るようになっています。

これでInput Create Imageにどういう状態の、どういうものか記入すればouput Create Imageに画像が出力されます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/9c7fb25f-2427-3c6a-bfbd-2330f4b26f81.png)

ちなみに「Retry」をクリックすると画像を再作成してくれます。出力内容が思っているものと違うときはRetryすれば別の画像を作成してくれたりします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/b18c8b82-40f4-8155-68cd-ea308109b424.png)


## 文書生成する場合の設定
今度は文書を作成するアプリを作っていきます。ただ要約するだけは面白くないので何かAIで考えて意見してくれる感じにしたいと思います。そこで今回は転職アドバイスを生成するように設定していきます。
画像生成のときと同じくまず「User Input」を作っていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/413c3b6c-a862-16e6-2369-c0be1201d55f.png)

Default Valueの部分には以下を記入します。

    年収が適切かアドバイスをしてくれるサービス:年収を職業、年齢、経験年数を入力するとその業界の平均年収を教えてくれる。
    ユーザが業界平均より高い収入をもらっているのか、転職した方がよいのかアドバイスをしてくれる。


続いてText Generationのウィジェットを作成していきます。
Titleは任意のもの（今回はAdviser1）を入れて、Modelは「Claude」を選択します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/4e6a2fe6-2736-50f6-90d3-73dcb7f949d9.png)

Modelの選択ですがどのAIに回答してもらうかを選択しているイメージです。Modelによってどの程度リソースを消費するか違うので使用状況に合わせて選択しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/cc13f4d3-b6aa-acc3-3e39-aef99e5cc4c2.png)

Promptの部分にどういう条件のアドバイスが欲しいのか記入します。今回は以下を記入してみます。

    あなたは40代男性で、建設業に務める管理者。勤務は10年。年収は1000万円。
    市場ニーズ、年収の観点から[User Input] について、200字程度であなたの意見を教えてください。

こんな感じでPrompt部分に記入した内容を考慮して、アドバイスをしてくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/e577481c-687a-4535-ba00-6341766f1b9a.png)



# おまけ
英語を日本にしてくれたりするのはまぁ最近の生成AIだと当たり前のようにできますがParty Rockだと標準日本語を関西弁に変換もできたります。ということで英語を和訳して、さらに関西弁に変換するアプリを作ってみます。

「User Input」をこんな感じで作ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/e05b096f-876b-0585-0858-5ecd00147c0d.png)

そのあとText Generationのウィジェットをこんな感じで作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/f9edc01b-3b6f-7aa4-3966-bcab06874908.png)

これで英語を日本に翻訳するところまでは完成です。
あとはもう１つText Generationのウィジェットを作成し、標準語を関西弁に変換します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/aa994cd5-5e9e-3b41-4e44-9e07c36ba327.png)


全体はこんな感じになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/ea785a2a-0ec2-37f1-8ade-30075841495b.png)

ちなみに実行するとこんな感じになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/e5c81e40-8f55-841f-75b1-dba0d72c5c54.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/11b4d88c-f37a-8bc7-d2ed-8edd7d9dfdb0.png)


関西型言語をどのように学習させたのか非常に気になります笑。ただやはり精度・ニュアンスは若干ちがう場合もあり、「そうはならんやろ😅」っていう変換もあります。