AI-phone

https://github.com/progate-hackathon-ari/ai-phone

Go

Docker

Angular

ECS

RDS

生成された画像のプロンプトを推測する伝言ゲーム。

ムラサメʕ◔ϖ◔ʔ

kyoshida

monokamo

推しアイデア

シンプルで誰でもがすぐにプレイできるようなルールと不安定な画像生成から推測する楽しさがあります!

作った背景

せっかくAIを使うなら作業効率化なんてくさいことせずに楽しくみんなで遊べるような物つくろう!と思って作り始めました。

推し技術

Lambda+API Gatewayを使おうと思ったがサーバレス独特の難しさとトラップがふんだんだったのでGoで丹精込めてWebSocketを実装しました。 その他、他チームが絶対採用しないだろうAngularを採用したら神選定で開発体験上がりました。

プロジェクト詳細

画像伝言ゲーム「ガーティックフォン」の画像作成部分をAIに生成させ、画像のお題を推測するゲームです。

ゲーム内容

一人がルームを作成し、招待URLを参加者に送信することでゲームを開始します。 参加者はお題をプロンプトとして投げ、AIに画像を生成させます。 生成された画像について他の参加者にその画像のお題についてを答えさせ、最後に最初のお題からどのくらい一致しているかのスコアが表示されます。 プロンプトはマルチバイト(日本語)にも対応しています。

工夫ポイント

  • 画像を生成するときに、 ユーザの入力から一度Cloude3-haikuに流しSDXL1.0で生成する際に最適なプロンプトとネガティブプロンプトを生成することで、精度を上げています。
  • embed-multilingualを利用してお題と最後の回答を比較することによって入力値からどれくらい離れているかを数値化しました
  • ローカル検証や、いろんなベンダでホストできるようにコンテナ+静的ファイルでのデプロイになっている
  • 可能な限りAWSサービスを使って構成した

技術スタック

フロントエンド:Angular バックエンド:Go アーキテクチャ図: image

ゲーム進行内容

待機画面

image

最初のお題画面

image

回ってきたお題に回答する画面

image

結果画面

image

今後の改善点

  • 自動的にWebsocketを再接続させるようにする
  • webscoket通信部分とcore部分を分離して水平スケールできるようにする
    • 案として kuiperbeltを利用する
  • 全体的なパフォーマンスの改善(おそらく 不要な処理や非同期で回した方がいい処理が多いため)
  • 禁止単語をフィルタする。コンプラなどを考慮したフィルターリストを作り突合させて一致したら入力エラーにする

ムラサメʕ◔ϖ◔ʔ

@murasame29