4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

クソアプリAdvent Calendar 2024

Day 16

【クソアプリ】LLMの気分になれるQAフォーラム作った

Last updated at Posted at 2024-12-27

皆さんはLLMの仕組みをご存じでしょうか?
OpenAIのAPIを利用したことがある人はご存じだと思いますが、1トークンずつ文字列が決定されることを繰り返しています。

実はあれ、中で小人が多数決で決定しているんですよ...

今回はその小人側になれるクソアプリを突貫で作成しました。

クソアプリアドベントカレンダーでモチベが上がってしまったので仕方ないですね。

つかいかた

質問を作る

左上の鉛筆マークが新規作成です。
質問文、temperatureを設定してRunをクリックします。

image.png

質問に回答する

回答画面では10秒に1文字入力して投票でき、投票データが確認できます。
EOS(終了トークン)はボタンで入力できます。

image.png

感想

作っていたらこっくりさんとか、2chの〇〇が完成したらのノリを思い出しました。

※ 予告なくメンテナンス・終了する可能性があります。

インフラの選定

Aurora Serverless v2

今回のアプリケーションの要件として、投票の集計がありました。
個人開発御用達のNoSQLではこの機能が用意されておらず、DynamoDBでやろうとするとデータをすべてAPサーバー内のRAMに読み込む必要があり、投票が多い場合にメモリ不足を引き起こす可能性がありました。
また、一つのドキュメントサイズ制限も厳しいため、トランザクションで投票結果を都度集計するなど工夫してもスケールしないと考えました。

これらの理由からRDBを採用する必要がありましたがクソアプリにお金はかけられないのでAurora Serverless v2を採用し、休眠期間中の請求をカットしました。
個人的にはSupabaseとの二択にできると考えています。

GCP Cloud Run

サーバーレスのコンテナ実行環境で、AWS App Runnerと異なりゼロスケールが可能です。

AWSでまとめることができればよかったのですが、lambdaではinit durationの上限に達し実行できませんでした。
Remixでフルスタックアプリにしていることの弱点ですが、手軽に作れてSSR対応できるのは大きいです。

バグ修正とか

prismaがタイムアウトする

aurora serverless v2のコールドスタートが長すぎてタイムアウトしました。
pool_timeout=60を接続設定に追加することで解決した...はずですがインフラ周りは検証がむずかしいですね。

データベース接続パスワードがローテーションされる

AWSで完結していないので、シークレットマネージャーのローテーションに追随できませんでした。
ローテーションは無しにすることで事なきを得ました。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?