0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【実践解説】Chainlit×Geminiで作るカップル向け浮気チェッカーAI開発講座

Posted at

はじめに 〜AIでカップルの悩みをサポート〜

カップルのコミュニケーションには信頼が不可欠ですが、時には「相手が自分を裏切っていないか?」という不安が心をよぎることもあります。そこでAIの力を活用し、2人のやりとりや日常会話、SNSなどのやり取りから、浮気の可能性や危険信号を検知してアドバイスを出せる「Cheat Finder AI」をChainlit×Gemini APIで開発します。本記事は初心者にもやさしい構成で、13の章に分けた手順と動作可能なコードを豊富に解説します。


1. Gemini APIキーの取得と秘密管理

AI StudioでGemini APIのキーを取得し、安全な方法(.envファイル等)でPythonから利用できるようにします。

# .envファイル例
GEMINI_API_KEY=取得したAPIキーをここに

2. 必要ライブラリのインストール

Chainlit・Gemini用クライアント・環境変数用パッケージをインストールします。

pip install chainlit google-generativeai python-dotenv

3. プロジェクトの基本セットアップ

.envのロードとGemini APIの準備、Chainlitのイベントフックを記述して開発の準備をします。

import chainlit as cl
from google.generativeai import configure, GenerativeModel
import os
from dotenv import load_dotenv

load_dotenv()
configure(api_key=os.getenv("GEMINI_API_KEY"))
model = GenerativeModel("gemini-1.5-flash")

4. 最もシンプルなCheat Finderチャット

送信されたメッセージが「浮気につながるリスクを含むか?」をGeminiに判定させ、理由と共に返答します。

@cl.on_message
async def main(message: cl.Message):
    prompt = f"次の恋人間のメッセージに浮気の兆候や注意点があれば指摘し、理由も添えて日本語で説明してください:{message.content}"
    response = model.generate_content(prompt)
    await cl.Message(content=response.text).send()

5. 会話履歴の蓄積と分析

ユーザーごとに過去の会話を記録し、不審な発言の傾向やパターンをGeminiに分析させます。

history = {}

@cl.on_message
async def main(message: cl.Message):
    uid = message.author
    history.setdefault(uid, []).append(message.content)
    conv = "\n".join(history[uid][-5:])
    prompt = f"直近の会話:\n{conv}\nこれらに浮気・裏切りの可能性がないか、パターンも踏まえて日本語で分析してください。"
    response = model.generate_content(prompt)
    await cl.Message(content=response.text).send()

6. SNS・LINE風ログのテキスト分析

LINEやSNSの会話履歴をそのまま貼り付けて、Geminiに浮気サインを自動検出させます。

@cl.on_message
async def main(message: cl.Message):
    prompt = f"このSNS/LINEの会話から、不自然な点や裏切りのリスクがある箇所を指摘してください:{message.content}"
    response = model.generate_content(prompt)
    await cl.Message(content=response.text).send()

7. スコア化による危険レベル表示

浮気リスクを「0〜100点」で数値評価し、ユーザーに分かりやすく通知します。

@cl.on_message
async def main(message: cl.Message):
    prompt = (f"次のやり取りに対して、浮気リスクを0〜100点で判定し、点数と理由を日本語で説明してください:"
              f"{message.content}")
    response = model.generate_content(prompt)
    await cl.Message(content=response.text).send()

8. 相談・アドバイス機能

単にリスク検知だけでなく、悩みに応じた具体的なアドバイスや会話の進め方も提案します。

@cl.on_message
async def main(message: cl.Message):
    prompt = f"ユーザーのメッセージや悩みに的確な日本語アドバイスをください:{message.content}"
    response = model.generate_content(prompt)
    await cl.Message(content=response.text).send()

9. 匿名モードとプライバシー強化

匿名で相談したい場合のため、ユーザーID非保存や履歴自動削除にも対応させます。

ANONYMOUS_MODE = True

@cl.on_message
async def main(message: cl.Message):
    if ANONYMOUS_MODE:
        prompt = f"この内容を匿名ユーザーとして扱い、記録を残さないでアドバイスを1回日本語でしてください:{message.content}"
    else:
        # 通常モード処理
        prompt = f"通常相談: {message.content}"
    response = model.generate_content(prompt)
    await cl.Message(content=response.text).send()

10. 感情分析で危険信号を可視化

会話や投稿文から怒り・不安・焦りといった感情をGeminiで自動分析し、警告を表示。

@cl.on_message
async def main(message: cl.Message):
    prompt = f"{message.content}\n上記の文章について、怒り・悲しみ・不安などのネガティブ感情の強さをそれぞれ0〜100でスコア化し、日本語で説明してください。"
    response = model.generate_content(prompt)
    await cl.Message(content=response.text).send()

11. 証拠画像判定(例:怪しいスクショ対応)

相手からのスクリーンショットや写真のアップロード時、Gemini画像機能で目立つリスク発見。

import base64

@cl.on_message
async def main(message: cl.Message):
    if message.files:
        img_b64 = base64.b64encode(message.files[0].content).decode()
        prompt = "この画像から浮気や不自然な点がないか日本語で分析して。"
        response = model.generate_content({
            "role": "user",
            "parts": [
                {"inline_data": {"mime_type": "image/png", "data": img_b64}},
                {"text": prompt}
            ]
        })
        await cl.Message(content=response.text).send()
    else:
        await cl.Message(content="画像をアップロードしてください。").send()

12. QAボタン・選択形式で気軽に入力

「浮気の兆候」や「信頼関係」などテーマごとにボタンを用意、ユーザーがクリックするだけで相談内容を自動送信。

@cl.on_message
async def main(message: cl.Message):
    await cl.Message(
        content="相談したいテーマを選んでください:",
        buttons=[
            cl.Button(label="浮気の兆候", value="兆候"),
            cl.Button(label="信頼関係", value="信頼"),
            cl.Button(label="AIで恋愛相談", value="相談")
        ]
    ).send()

@cl.on_button("兆候")
async def on_cheat_sign(message: cl.Message):
    prompt = "恋人の浮気サインについてAIで教えてください。"
    response = model.generate_content(prompt)
    await cl.Message(content=response.text).send()

13. カスタム警告&アラート機能

リスクレベルが高い場合、自動でアラートやサポートリンクも表示し、安全配慮を強化。

@cl.on_message
async def main(message: cl.Message):
    prompt = (f"{message.content}\n浮気リスクが高い場合は'ALERT!'と首行で警告し、"
              f"その後に理由と注意点を日本語で説明してください。")
    response = model.generate_content(prompt)
    await cl.Message(content=response.text).send()

まとめ 〜AIとともに、より健全な信頼と未来を〜

ChainlitとGemini APIを組み合わせれば、心理的な不安や疑念に寄り添った、対話的な浮気チェッカーAIを誰でも開発できます。会話履歴・感情分析・匿名相談・画像認識・警告表示など様々な工夫を盛り込みつつ、カップル双方のメンタルヘルスや信頼の再構築にも役立つ柔軟なAIサービスを目指しましょう。ぜひ本記事を参考に、技術で安心と幸せを広げてください。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?