![見出し画像](https://assets.st-note.com/production/uploads/images/106561666/rectangle_large_type_2_5fb42c6a4c393f1185090ce41e6d94a5.jpeg?width=1200)
ChatGPT APIでVJ(ポケモンショックジェネレーター)
2023年4月の2023 Public Visuals Tokyo x TDSWというVJイベントで知り合った方からHydra Video Synthの存在を教わり、良く分からないが面白そうだなと頭の片隅に置いていたのですが、数週間後にふとHydraのサイトを眺めつつ、「やっぱりこれ憶えるのダルいな……ChatGPTで書けるのでは」という思い付きがありました。
ChatGTPに尋ねたところ案の定「はい、知っています」との答えがあり、ChatGPT APIでHydraコードを生成、ブラウザで実行するサービスを作ってみることにしました。現在、ある程度の形になったので公開中です。
![](https://assets.st-note.com/img/1684989638172-iir2417JGp.jpg?width=1200)
ChatGPTのAPIアクセスには使用料がかかります。ユーザーがAPIキーを入力する仕組みにするかどうか迷ったのですが、こんな弱小サービスのためにそこまでユーザーにさせたくないという思いと、GPT-3であれば$0.002 / 1K tokensとかなり安価であったため、私の不労所得であるところのAdSenseの収入で完全にペイ出来ると判断、ユーザーはAPIキー不要で使えるサービスとしました。
ただしフロントのソースコードにOpenAIのAPIキーを埋め込むほどの器の大きさはないのでChatGPTのAPIをプロキシするバックエンドの構築は必須でした。何らかのサーバレスアーキテクチャもしくはCloudflare Pages Functionであればそれが可能でした。
今回のアーキテクチャの概念図は以下です。(この図は私のお気に入りのソフトEdrawMaxで作成しました。もしWondershare社の方がご覧になっていたらご連絡いただけますと幸いです。貴社の本国ブログで私のホームページが紹介されたことがあります。仲良くしてください。)
![](https://assets.st-note.com/img/1685097189701-IAGTT2VbsB.jpg?width=1200)
要するに Cloudflare Pages で公開するファイルのルートディレクトリに `_worker.js` が存在すればそれをCloudflareがWorkersのコードとしてエッジサーバーで実行する仕組みで、この場合静的ファイルへのリクエストもWorkersを介して制御されることになります。
ソースコードはGitHubで公開しました。
`_workers.js` には OpenAIのSDKを使用したかったのでwebpackでバンドル生成しています。これはWorkersのコードをwebpackで生成したい方にも参考になると思います。
フロントのコードはVue3で実装、CSSでUIを構築するにあたりTailwind UIのメンバーシップを4万くらい出して買った覚えがあるため、今回それを使用して大体コピペで作りました。
悪意への処置
私は博愛主義者としてこの世に生を受けました。しかしこれまでに沢山の悪意を経験し、私自身がビ〇・〇イツに比肩する悪魔であることも自覚するに至りました。そのため、APIアクセスにはCloudflareのWAFを導入しています。
Pages でプロジェクトを公開すると *.pages.dev のドメインが割り当てられますが、CloudflareのWAFは独自ドメインにプロキシしないと適用できません。*.pages.devからのアクセスはFunctionsで遮断する必要があります。そのためのロジックもソースコードに入っています。
WAFでレートリミットの設定が可能なので、DDoS攻撃でOpenAIから何万円もの請求が来るという悪夢はこれで回避できました。
そもそものコード生成精度について
正直どうでもいいです。いずれ人類はAIから感情を「ルーシュ」として収穫される作物になります。私はそう思います。
Hydra Code Generation by GPT-3 、ぜひ体験してみてください。
この記事が気に入ったらサポートをしてみませんか?