はじめに 〜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サービスを目指しましょう。ぜひ本記事を参考に、技術で安心と幸せを広げてください。