| | |
| | import gradio as gr |
| | import google.generativeai as genai |
| | import json |
| |
|
| | |
| | API_KEY = "AIzaSyAtm1yxPoXsz30KJUnyQNN9QeGw3FMIoMU" |
| | genai.configure(api_key=API_KEY) |
| | model = genai.GenerativeModel(model_name="gemini-2.0-flash") |
| |
|
| | |
| | def analyze_text(text): |
| | prompt = f""" |
| | You are a relationship AI assistant. |
| | |
| | Analyze the chat text below and do all of the following: |
| | |
| | 1. Provide a brief sentiment/emotional summary. |
| | 2. Identify key events or milestones in the relationship. |
| | 3. Write a short, heartfelt relationship narrative. |
| | 4. Calculate a compatibility score from 0 to 100. |
| | 5. Provide a clear and friendly interpretation of that score. |
| | |
| | Return ONLY a JSON object with the following keys: |
| | "sentiment_summary", "key_events", "narrative", "compatibility_score", "interpretation" |
| | |
| | Chat text: |
| | \"\"\"{text}\"\"\" |
| | """ |
| | response = model.generate_content(prompt) |
| | return response.text.strip() |
| |
|
| | |
| | def process_chat(chat_text): |
| | if not chat_text.strip(): |
| | return "", "", "", "", "", "" |
| |
|
| | analysis = analyze_text(chat_text) |
| |
|
| | try: |
| | parsed = json.loads(analysis) |
| | except Exception: |
| | parsed = None |
| |
|
| | if parsed: |
| | sentiment = parsed.get("sentiment_summary", "") |
| | events = parsed.get("key_events", "") |
| | narrative = parsed.get("narrative", "") |
| | score = str(parsed.get("compatibility_score", "")) |
| | interpretation = parsed.get("interpretation", "") |
| | else: |
| | sentiment = events = narrative = score = interpretation = "" |
| |
|
| | return analysis, sentiment, events, narrative, score, interpretation |
| |
|
| | |
| | with gr.Blocks() as demo: |
| | gr.Markdown("# 💬 Relationship Chat Text Analyzer with Gemini 2.0 Flash") |
| |
|
| | chat_input = gr.Textbox(label="Paste your chat here", lines=20, placeholder="Paste chat content here...") |
| |
|
| | raw_output = gr.Textbox(label="Raw AI Analysis Response", lines=10, interactive=False) |
| | sentiment_output = gr.Textbox(label="Sentiment Summary", interactive=False) |
| | events_output = gr.Textbox(label="Key Events / Milestones", interactive=False) |
| | narrative_output = gr.Textbox(label="Relationship Narrative", interactive=False) |
| | score_output = gr.Textbox(label="Compatibility Score", interactive=False) |
| | interpretation_output = gr.Textbox(label="Interpretation", interactive=False) |
| |
|
| | analyze_btn = gr.Button("Analyze Relationship") |
| |
|
| | analyze_btn.click(process_chat, inputs=chat_input, outputs=[ |
| | raw_output, |
| | sentiment_output, |
| | events_output, |
| | narrative_output, |
| | score_output, |
| | interpretation_output, |
| | ]) |
| |
|
| | |
| | demo.launch() |
| |
|