AIサービスを作るときに意識しているポイント5つ
最近はAIを使った個人開発にハマっています。
日記を書くとAIがドット絵にしてくれる「ドット絵日記」、Zennの人気記事を毎日AIがラジオにしてくれる「zenncast」など、いくつかAIを活用したサービスを作りました。
このZennでは自分がAIサービスを作るときに考えていること、意識していることについて書いてみます。
AIサービスを作るときに意識しているポイント5つ
最近個人開発で「castmake」というAIラジオ生成サービスを作りました。
この記事ではcastmakeの実例を交えながらポイントを紹介していきます。
先に簡単にサービスを説明しておきます。
castmakeはブログやメディアから簡単にラジオが作れるサービスです。上述したzenncastはZennのトレンド記事をAIが紹介するものですが、それの好きなサイト・情報ソースで自分なりに作れる版だと考えると分かりやすいかもしれません。自社の記事メディアをPodcastでも配信したり、個人が自分の好きなサイトを読み込ませて「聴くRSSリーダー」として使ったりもできます。
それでは、早速見ていきましょう。
1. やり直しのきくUIにする
AIの能力はとても高いですが、一発で目当てのものを出力させるのはまだまだ難しいです。こちらの意図や前提情報をどう与えれば質の高いアウトプットが得られるか、試行錯誤が必要です。
この性質を考慮し、サービスに組み込む場合はイテレーションを回しやすい形で提供するのが良いです。やり直しのきくUI、つまりAIの出力を人間がチェックするような使い方です。
castmakeでは記事のURLを指定すると、
- AIが記事の内容を要約する
- 記事を紹介するラジオ原稿を作る
- ラジオ原稿を音声に変換してBGMをつける
という3つのステップが実行されてAIラジオが作られます。
この3ステップは一気に実行することも可能ですが、あえてステップごとの出力を人が確認できるようになっています。
要約、原稿作成、音声合成をステップごとに実行する
出力された内容がイマイチなら作り直すか、人が手動で部分的に修正する。音声やBGMをつけて聴いてみて、雰囲気が期待通りでなかったらステップを遡って修正する。やり直しがしやすい設計を意識しています。
ボタン一発での生成では出力に納得いかない場合はまた0から始めなければいけません。ステップごとの実行は時間の面でも精度の担保の面でも有効です。
2. 高い自由度を活かす
AIの利点のひとつに自由度の高さがあります。従来はある目的を達成するには機能を作る必要がありましたが、AIのプロンプトを活用すれば一つのインターフェースで多くの課題に対応することができます。
castmakeでは「カスタムプロンプト」という機能があり、目的に応じたプロンプトを自分で設定できます。「小学四年生でも分かる言葉遣いで」「記事をランキング形式で紹介して」など、ユースケースに合わせて柔軟に設定可能です。
プロンプトの内容をユーザーが自由に変更できる
プロンプトづくりも試行錯誤が必要です。いきなり期待通りの出力を得るのは難しく、プロンプトの修正→結果を確認→プロンプト修正...のように期待に沿うように細かく修正していきます。
この反復をしやすくするために、castmakeではプロンプト入力画面にプレビュー機能を置いています。プロンプトの変更によりAIの生成結果がどう変わるのか、その場で確認できます。
プロンプトの変更がどう作用するか、すぐに確認できる
また、プロンプトの変更により出力が悪くなってしまうこともよくあります。変更内容を常に記録し、いつでも過去のバージョンに戻れるバージョン管理の機能も重要でしょう。
プロンプトの内容は自動でバージョン管理され、いつでもその状態に復元できる
3. インテグレーションを用意する
GPTsは発表直後、次世代のAppStoreになるのではないかと盛り上がりました。しかし現時点であまり利用は浸透していないように思われます。一方でGitHubのCopilotは多くのエンジニアが活用し、日常的に恩恵を受けています。この違いはなんでしょうか?
いろいろ要因はあるかもしれませんが、私は"側にいる"存在かどうかの違いが大きいと思っています。GPTsはブラウザかChatGPTアプリを立ち上げて話しかけなければいけません。GitHub Copilotはエンジニアが普段使いするエディタに常駐していて、コードやコメントを書くと続きを自動で補完してくれます。
一発屋でないAIサービスを目指すには、ユーザーが普段過ごしている空間で活躍することが必要です。その形はSlackアプリやChrome拡張など様々ですが、日常に溶け込む体験が重要といえるでしょう。
castmakeではAPIとWebhook通知を提供しており、AIラジオを任意のシステムと連携させられるようになっています。APIに記事URLをPOSTするとラジオが作られ、作成されたラジオのデータがWebhookで通知される。自分のシステムと組み合わせて、「ブログの記事を書くとそれがラジオ化され、そのラジオ番組が自動的にWebサイトに埋め込まれて配信される」のような連携が簡単にできるようになります。
curl -X POST "https://api.castmake-ai.com/v1/episodes" \
-H "x-castmake-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"channelId": "YOUR_CHANNEL_ID",
"urls": ["https://example.com/article1", "https://example.com/article2"]
}'
↑こんな感じでAPIでAIラジオが作れる(詳細)
第1のポイントでステップごとの実行が重要と書きましたが、APIの場合はリクエスト一発でラジオ生成まで進みます。ブラウザで人がポチポチ操作する場合はやり直しが重要なのですが、APIを使ったシステム間連携では人が介さないことに価値がある場合も多いです。この辺りはユースケースに合わせて作り分けています。
4. AIの進化に期待する
AIはものすごいスピードでアップデートされており、いま出来ないことも数ヶ月後には実現しているかもしれません。エコシステムの成長スピードも早いです。AIが進化しても変わらず必要になる部分を見極めて作り込んでいくマインドが重要です(特に個人開発では)。
castmakeでは音声合成にはOpenAIのSpeech to textを利用しています。音声合成の役者は他にもたくさんいるので、OpenAI以外の様々なサービスを調査して連携していく選択肢もありました。しかし少し引いて見ると、日本語の高い精度でもクローン音声(人の声をインプットしてその声で発話させるもの)でも、そう遠くない未来にはOpenAIから提供されているでしょう。であればモデルの能力改善はビッグテックに任せて、自分はAIとユーザーをつなぐ部分に注力するのが良いと考えています。
例えばcastmakeでは生成したAIラジオをApple Podcast・Spotify・YouTubeなどのPodcastプロバイダーから配信できます。こういった繋ぎの部分はAIの性能が向上しても必要になる部分なので、まずはこういった箇所から作り込むという方針で進めています。
Podcastプロバイダーと連携すると自動で新着エピソードが配信される
5. AIの話をするときは時間軸を添えて
「AIに仕事を奪われる」は職域によっては真ですが、ある日突然すべての仕事が奪われるわけではありません。AIが代替しやすい分野から徐々に人の手を離れていくはずです。3年後と20年後の未来では当然状況はまったく違います。「それもいずれAIが出来るようになるよ」で思考停止するのではなく、どういう時間軸で言っているのかをセットで話すようにすると地に足のついた議論ができます。
関連して、どの領域で戦うかの選定も大事です。大規模モデル開発など費用がかかる方向で大手の資本力と戦うのは難しいでしょう。ではLLMを利用してAIサービスを何か作ろう!としても、AIは世界中が注目している分野です。0から作ったアイデアで世界のライバル達と戦うのもなかなか苦しいものがあります(そこに挑んでいくのももちろんアリです)。
すでにユーザーに価値を届けられているサービスを持っているなら、そこにAIを組み込んでいくのはかなり良い気がしています。「AIで何ができるか」ではなく「ユーザーの課題を解決するためにAIをどう使えるか」、つまりAIを課題解決の手段として捉えます。
生成AIは汎用性が高くとても賢いので、AIを活用することで他のアプローチよりもすぐに作れる・良い解決策を届けられる可能性があります。「AI機能搭載!」と謳える目立った機能になるかは分かりませんが、本当に便利な機能改善をたくさんスピーディに届けることはできるでしょう。
おわりに
AIサービスの開発で気を付けているポイントについて書いてみました。
みなさまのAI開発に少しでもお役に立てれば幸いです。
--
興味のある方がいましたらUIや使い心地など実際に触ってみてください!
Discussion