LoginSignup
47
45

More than 1 year has passed since last update.

【個人開発】永遠に何でも話せるお嬢様会話AIを作ってみた(TypeScript,Python)

Last updated at Posted at 2022-09-29

個人開発で 会話AIサービス Eveki を作りました。架空のキャラクター1を再現したAIと自然な会話が楽しめることが特徴のサービスです。今回はその第一号として、お嬢様AIの公開を行いました。まずは実物をお試しください。

ezgif.com-gif-maker.gif

サービスの概要

AIとの会話

基本的にはメッセージを入力するだけです。まるで人間のようにお嬢様言葉で会話を行います。今日の予定から人生の意味まで、どんな話題でも返答2し文脈に沿って話を進めることが可能です。会話の内容は下のボタンからTwitterに共有できます。

AIの設定

名前は「真流華レイテ」3で、名字の読み方は『まるが』です。趣味などその他のプロフィールは
本人に聞けば答えてくれるはずです。なお今回はイラストもAIが生成したものを使ってみました。

システム構成

qiita.jpg

フロントエンド

フレームワーク

フレームワークとして Next.jsReactを使用しました。言語はTypeScriptを中心に使用しています。Web開発はこれが最初で不慣れなところもあったのですが、とにかく新しい技術を取り入れてみたかったのでこのような形にしました。

Next.jsは公式のチュートリアルで勉強しました。TypeScriptにも触れているので、所々わからない点を調べていけばこれだけでもかなりできることは増えると思います。

使用ライブラリ

データ処理にAxiosを使用しています。経験の浅い自分でもTypescriptと連携させて使えるほどには情報も充実しているのでおすすめです。

またデザイン面ではMUIを採用しました。他にも選択肢はあると思うのですが、元々モバイルアプリ開発に慣れていたのもあり、それに近い感覚や見た目を持つこちらを選びました。Material Iconとの連携も簡単なのでデザインにかける時間を大幅に短縮できると思います。

バックエンド

言語・フレームワーク

Python3で動作させています。今回もっとも力を入れたのは処理の高速化です。

会話というアプリの名目上、入力に対する返信に時間をかけることはできません。そのためモデルの量子化など4できるだけ工夫を施しています。

#量子化の例
import torch
model = torch.quantization.quantize_dynamic(model, 
											{torch.nn.Linear}, 
											dtype=torch.qint8)

会話の長さや内容にもよりますが、現状ほぼ10秒以内には反応が返ってくるかと思います。

使用ライブラリ

今回はGradioを使用しました。これを使えば簡単に機械学習用のデモやアプリを構築することができます。設定次第では画像など多様なデータを扱うことも可能です。Gradioを用いることでバックエンド側の実装は短時間で完了しました。

これで構築したアプリはそのままiFrameで埋め込みことも可能なので、ブログやポートフォリオに取り入れるのもおすすめです。

See the Pen Gradio-Sample by opopopopop (@izumo092) on CodePen.

今後の展望・課題

デモの追加

まずは最小限でも公開を優先したためデモは現時点では『真流華レイテ』ひとりです。しかし既に準備しているAIもいくつかいるので、そちらも仲間に加えていきたいと思っています。

カスタマイズ機能

最終的にはユーザーが自ら設定や口調をカスタマイズし、自分だけのAIを持てるようにしたいと考えています。そのためにデータベースや認証の導入を進めています。

デプロイ先

現在はVercelをデプロイ先に選んでいますが、上のように計画を広げていく上ではもう少し検討する必要があるかもしれません。解析など他との連携も予定しているのでFirebase Hostingなども考えています。

さいごに

AIは日常生活に普及こそしたものの、人間の作業を肩代わりする存在という側面が強くなってしまい、昔のSF映画の人口知能のような愉快な夢想はかえって難しくなったような気がします。

『真流華レイテ』は株価予測もできませんしイラスト生成もままならないですが、あなたの話を聞くことはできます。このAIがちょっとした楽しみを与えられたら幸いです。

いねやリツイートなど頂けるととても励みになります。もし疑問点や要望などあれば以下のフォームか、SNSのDMなどをお使いください。よろしくお願いいたします。

  1. うまく設定すれば歴史上の人物などもある程度再現できますが、それらの例は今後のデモで追加する予定です。

  2. 物議を醸すような話題や性的な内容はなるべく避けるようになっています。またそのような内容をユーザー側から入力されても話題を逸らすはずです。

  3. 名前の由来は『ファウスト』のマルガレーテです。あちらと同じく、名家のご令嬢というより素朴で敬虔な少女のイメージです。

  4. 本来なら速度と精度の関係などをまとめたいところですが、会話に完全な正解などはないため評価がしにくくなっています。あくまで体感としてですが、処理を早くする工夫を行なってもほとんど精度は落ちないように思います。

47
45
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
47
45