Siexa: AIで広がる新しいコミュニケーション体験を目指した話

全ての人に見られる必要はない。自分の声を大切に、そして時にはAIの知恵を借りて
そんな新しい形のSNSサービスを作ったので、まとめてみます！

https://siexa-ai.com/welcome

私もSNSは色々やってるわけですが、情報共有というよりは、話題に対してもっと深い会話ができたら、もっと人間らしいなと。それをAIがアシストすると、面白いんじゃないかと
そんな思いで社会実験的に作ってみたので、ゆるく運用していきまっす

# サービス概要

まずは下記リンク内の動画を御覧ください

https://twitter.com/aorblue/status/1729544829565055142

## タイムライン上での３つの特徴

このようにタイムライン上にポストすると、AIと会話ができますが
ここに3つの特徴があります

1. タイムライン上には、話題であるトピックのみ1日につき6件投稿できます
１日24時間なので、食事・睡眠など生活に必要な時間を除くと、12時間
つまり12時間に6件のトピック投稿なので、1件のトピックにつき2時間話せることになります
ゆっくりとトピックと向き合い、会話を楽しんでください

2. タイムライン上には、トピックに関連した自動生成された画像しか表示されません
情報過多な現代において、文字情報を読むのは骨の折れる作業です
サッとスクロールして、直感で気になる画像を開いてみる
ここではゆっくりとした時間が流れているのです

3. 各トピック内で、AIからの6件の返答を受け取る
投稿は全ての人に見られる必要はないけど、誰かに見てもらいたい
AIがあなたのトピックを深めるお手伝いをします
あなたのペースでゆっくりと、思考の海へと沈みましょう

## 出会いにおける2つの工夫

いかがでしょうか。既存のSNSを離れ、Siexaは落ち着いた空間を目指しています
他にも人間らしい出会いにおける２つの工夫があります

1. キーワードで検索する機能はありません
投稿は、タイムライン画像からの直感的な出会いか、あなた自身に興味を持った人のみに届きます
プロフィールページでQRコードを見せあって、リアルな出会いも良いですね

2. ハッシュタグで検索する機能もありません
外で何かが盛り上がっていても、あなたは自身と向き合う時間を持つことができます
ハッシュタグは、もったいないので`#検索ワード`とGoogle検索できるようにしちゃいましょう

# サービス構成

さて、ここでサービスを支えるシステム構成について紹介させてください

```mermaid
graph TD
    subgraph Azure
    AS[Azure App Service<br>フロントエンド: Next.js, TypeScript, Tailwind CSS]
    end

    subgraph GCP
    CF[Cloud Functions]
    DB[Cloud Firestore]
    ST[Cloud Storage for Firebase]
    AU[Firebase Authentication]
    end

    subgraph ネットワーク
    CDN[Azure FrontDoor]
    end

    CDN -->|リクエスト/レスポンス| AS
    AS -->|認証情報確認| AU
    AS -->|データ操作| DB
    AS -->|データ操作| ST
    CF -->|データ操作| DB
    CF -->|データ操作| ST

    subgraph 外部API
    API1[OpenAI DALL-E 2]
    API2[OpenAI ChatCompletion]
    API3[OpenAI Moderation]
    end

    CF -->|APIリクエスト| API1
    CF -->|APIリクエスト| API2
    CF -->|APIリクエスト| API3
```

### ネットワーク
CDN: Azure FrontDoor

### フロントエンド
アプリケーション： Next.js, TypeScript, Tailwind CSS
実行環境： Azure App Service

### バックエンド
DB: Cloud Firestore
ストレージ: Cloud Storage for Firebase
認証: Firebase Authentication
アプリケーション: TypeScript
実行環境: Cloud Functions for Firebase（Firestoreへの新規追加をフックに実行）

### 外部API
Text-to-Image: OpenAI DALL·E 2
Text-to-Text: OpenAI ChatCompletion
Moderation: OpenAI Moderation（利用無料なのにビックリしました）

技術選定として何故GCPに全て寄せないんだろうと思われたかもしれませんが
今回は私がAzureを触ってみたかったこと、将来的にOpenAIをAzureのAPIに変更したかったこと
の2点の理由から、Azureを一部採用しています

## 各Cloud FunctionsにおけるAI活用

実装時に最もAIをエキサイティングに利用したCloud Function内のスクリプトについて解説します

### 1. 見出し画像の生成
トピック投稿をそのまま投稿しても、トピック意図を反映した画像にはならないため
GPT-4によるDALL·E 2用プロンプト生成ステップを入れています
GPT-3.5でも試しましたが、意図を汲んでいるとはいえずGPT-4を採用しました

```mermaid
graph TD
    A[トピック投稿] --> B[モデレーションAPIによるチェック]
    B -->|OK| C[GPT-4によるDALL-E 2用プロンプト生成]
    B -->|NG| D[Firestoreにブロックされたトピック用の画像URL保存]
    C --> E[DALL-E 2による画像生成]
    E --> F[画像をStorageに保存]
    F --> G[Firestoreに画像URL保存]

    style A fill:#f9f,stroke:#333,stroke-width:2px
    style B fill:#fcf,stroke:#333,stroke-width:2px
    style C fill:#ccf,stroke:#333,stroke-width:2px
    style D fill:#fcc,stroke:#333,stroke-width:2px
    style E fill:#cfc,stroke:#333,stroke-width:2px
    style F fill:#cff,stroke:#333,stroke-width:2px
    style G fill:#cfc,stroke:#333,stroke-width:2px
```

### 2. TopicへのAI返答
ユーザーがAIと楽しく会話できるよう、かなりの回数をChatGPTと一緒に
プロンプトエンジニアリングして完成したプロンプトを採用しています
年収5,000万は言いすぎですが、プロンプトエンジニアリングの重要性を実感しました

```mermaid
graph TD
    A[トピック投稿] --> B[モデレーションAPIによるチェック]
    B -->|OK| C[ユーザープロフィール取得]
    C --> D[GPT-4によるAI返答生成]
    B -->|NG| E[処理中止]
    D --> F[FirestoreにAI返答保存]

    style A fill:#f9f,stroke:#333,stroke-width:2px
    style B fill:#fcf,stroke:#333,stroke-width:2px
    style C fill:#ccf,stroke:#333,stroke-width:2px
    style D fill:#cfc,stroke:#333,stroke-width:2px
    style E fill:#fcc,stroke:#333,stroke-width:2px
    style F fill:#cfc,stroke:#333,stroke-width:2px
```

### 3. Topic以外へのAI返答
基本的に `2. TopicへのAI返答` と同様ですが、そこに会話データ取得のロジックが加わっています
精度問題により、この処理含めGPT-3.5を採用していませんが、直近のGPT-4 Turboを採用し
現状は運用可能な価格帯と判断しています

```mermaid
graph TD
    A[トピック/スレッド内投稿] --> B[モデレーションAPIによるチェック]
    B -->|OK| C[ユーザープロフィール及び過去の会話データ取得]
    C --> D[GPT-4によるAI返答生成]
    B -->|NG| E[処理中止]
    D --> F[FirestoreにAI返答保存]

    style A fill:#f9f,stroke:#333,stroke-width:2px
    style B fill:#fcf,stroke:#333,stroke-width:2px
    style C fill:#ccf,stroke:#333,stroke-width:2px
    style D fill:#cfc,stroke:#333,stroke-width:2px
    style E fill:#fcc,stroke:#333,stroke-width:2px
    style F fill:#cfc,stroke:#333,stroke-width:2px
```

# 今後の開発予定

今のところ、２つの機能追加を予定しており、ワクワク作業してます

1. AIによる振り返り機能
しばらくSiexaで投稿していると、AIからどんなトピックを話して、どんな気付きがあったのか
振り返りメッセージが届くようになります
1日はあっという間ですが、時に振り返ってみると、新しい発見があるものです

2. AIのトピックごとのスキル機能
トピックを投稿する前に、AIにスキルを付与することができます
英会話スキルを付与して英会話の先生になってもらったりと
あなたの可能性を拡げます

# 有償プランの検討

利用者が増えそうだったら、運営費を賄うために検討しようと思ってます
利用できるスキルの幅を拡げたりと、皆がWin-Winな関係を作るつもりです
その際には、サービスとしてきちんとした体裁も準備します

# まとめ

AIで人々の暮らしをより便利に！シンプルにしたい！
よりAIが溶け込んだ未来になると楽しいなと妄想し、日々実現に向けて色んなことにチャレンジしていく所存です

めでたく復帰したサム・アルトマン氏に乾杯👍🍷

お試しはこちらからどうぞ↓

https://siexa-ai.com/welcome