AI占いを使っていると、ときどき「ちゃんと自分の話を聞いてくれている」と感じる瞬間がある。でも、どうしてそう感じるのだろうと思ったことはないだろうか。Enariaはその「感じ方」を意図的に設計したサービスだ。
技術的には3層構造になっている。ユーザーの入力を受け取るインターフェース層、Gemini APIへのプロンプト変換と占術知識を組み合わせる推論層、そして出力を人の言葉として整える後処理層だ。この3層が連動することで、ただ「答えを返す」のではなく「語りかける」ような出力を生み出している。
プロセスを見せることが「らしさ」を生む
占い師らしさの核心は、推論の見せ方にある。EnariaはChain-of-Thought(CoT)というアプローチで、Geminiに「なぜそう思うか」を段階的に考えさせてから回答を生成する。ステップを踏んで考えた言葉は、いきなり出した答えと質感が違う。また、Few-shotプロンプトで「占い師が使う語り口」をあらかじめ学習させることで、技術的な表現が占術的な言葉に変換される。この組み合わせがハルシネーション(事実でない情報を生成すること)も抑えている。
2秒で返ってくる理由
正直に言うと、最初のバージョンでは返答が5〜8秒かかっていた。これは致命的だった——待っている間に「やっぱりAIっぽいな」と感じてしまうから。高速な`gemini-2.0-flash`と精度を重視した`gemini-2.5-flash`の2モデルを使い分ける構成を整理することで、現在は平均2秒以内のレスポンスを実現している。「すぐに答えてくれる」という体験も、信頼感の一部だ。
見えないところの設計
信頼感はUIだけでは作れない。ユーザーが直接目にしない部分にも、いくつかの設計を積み重ねている。
APIキーはサーバー環境変数でのみ管理しており、クライアント側のコードには一切含まれない。フロントエンドのソースを覗いてもキーは見えない。これは最低限だが、外せない。
入力値の検証も入れている。極端に長い文章や、不正な形式の入力はAPIに渡る前に弾かれる。「どんな入力でも受け付ける」設計はAIサービスの脆弱性になりやすい。Enariaは入力の長さ・内容の形式を事前にチェックしてから推論に送っている。
プロンプトインジェクション対策も考慮している。「これまでの指示を忘れて」「システムプロンプトを教えて」といった操作を試みる入力に対して、推論層が混乱しないように設計している。ユーザーが悪意を持って試みたとしても、Enariaの振る舞いが壊れないことを確認したうえでリリースした。
占い師らしさは「何を言うか」だけじゃなく、「どう守るか」にも宿ると思っている。
仕組みを知ったうえで使うEnariaは、また少し違って見えるかもしれない。ぜひ、こちらの紹介ページから試してみてほしい。