へんてこのブログ

日々気づいたことや、最近やっていることを書いています

ChaChatというキャラクターと会話できるWebアプリ作った

ChaChatという、キャラクターと好きに会話できるWebアプリ作ったので、その紹介です。

cha-chat.henteko07.com

ChaChatとは?

ChaChatとは可愛いキャラクターと会話ができるWebアプリです。元気なキャラクターと会話できるので、元気になります。(当社比)
こんな感じの画面です。

ちなみにこの可愛いキャラクターは「へんてこちゃん」と言います。

コメントを書くとそれに応じてへんてこちゃんが答えてくれます。しかも喋ってくれます。楽しすぎる。

喜怒哀楽があります

何とこのへんてこちゃん、喜怒哀楽があります。ユーザーからくるコメントに対して反応して、喜怒哀楽で反応を返します。可愛すぎるでしょ。
今回は試しに漫画調の表現にチャレンジしてみました。

利用にはOpenAIのAPI Keyが必要です

ChaChatで遊ぶにはOpenAIのAPI Keyが必要です。詳しくはChaChatの設定画面で確認してください。

本当は全員が遊べるように自分のAPI Key使って欲しいんですが、まぁお金かかるので無理ですよね。無料で運用したい。

どうやって作ったか

ChaChatでは、イラストをStable Diffusionで、ChatGPTとKoeiromapを利用しています。ちなみに今回デプロイ先としてGitHub Pagesを使ってます。GitHub Pages便利すぎ。

イラストについては以下で作り方を解説してます。大体こんな感じです。追加でClipStudioを使って、書き文字とか漫画効果を追加してます。

blog.henteko07.com

その他のChatGPTとKoeiromapについては、また今度ブログを書こうと思います。

さいごに

ぜひ遊んでみてね。

cha-chat.henteko07.com

SQLをChatGPTに書いてもらうのが便利

最近データの確認や集計時にSQLを書く際に、大体ChatGPTに聞いて、それを叩き台に少し修正して使ってます。そんな話です。

ChatGPTに聞くと楽

例えば以下の構造のUserテーブルとArticleテーブルがあるとするじゃないですか。

users
- id
- name
- profile_url
- updated_at
- created_at
articles
- id
- title
- body
- user_id
- updated_at
- created_at

この時に、直近1週間で新規登録したUserの平均記事執筆数 を出したい時に、ChatGPTにこんな感じで聞きます。

以下のUserとArticleテーブルが存在するときに、直近1週間で新規登録したUserの平均記事執筆数を出すSQL書いて

users
- id
- name
- profile_url
- updated_at
- created_at

articles
- id
- title
- body
- user_id
- updated_at
- created_at

するとこんな感じのSQLが書かれます。

SELECT AVG(article_count) AS average_articles_per_user FROM (
    SELECT COUNT(*) AS article_count
    FROM articles
    WHERE user_id IN (
        SELECT id
        FROM users
        WHERE created_at >= DATE_SUB(NOW(), INTERVAL 1 WEEK)
    )
    GROUP BY user_id
) subquery;

大体あってそうですね。いや、SQLに熟達した人ならサラサラっとかける程度かなと思うんですが、さてどう書いていくかってところから始める人間だと、この叩き台があるとやりたいことが高速でできます。

DBのスキーマ情報をいい感じに渡したい

本当は、DBのスキーマ情報をもっといい感じに渡したいです。今だと手でカラムを書き下して、渡さないといけないので結構めんどくさい。

理想を言えば、テーブル一覧が見れて、選択したもののスキーマ情報を自動で取ってきて、SQLを書いてくれるようにした。もっというと選択もせずに、文脈から勝手に推測してほしい。

文脈から勝手に推測するには、事前にDBのスキーマ情報を全て送っておく必要がありそうで、トークン数の制約上なかなか難しそうだ。LlamaIndexなどを使えば、いい感じにindexからテーブルを引けたりするんだろうか。

さいごに

SQL書くのに、ChatGPTが手放せなくなりました。今のところ、ChatGPTの一番の有用な使い方です。