#!/usr/bin/env python3
"""
演示 text_embedding.compare_phrases() 接口
返回格式与 semantic_similarity.compare_phrases() 完全一致
"""
import asyncio
from lib.text_embedding import compare_phrases


async def main():
    print("=" * 60)
    print("text_embedding.compare_phrases() 接口演示")
    print("返回格式与 semantic_similarity.compare_phrases() 一致")
    print("=" * 60)
    print()

    # ========== 示例 1: 基本使用 ==========
    print("示例 1: 基本使用")
    print("-" * 60)

    result = await compare_phrases("深度学习", "神经网络")

    print(f"短语A: 深度学习")
    print(f"短语B: 神经网络")
    print(f"\n返回结果:")
    print(f"  相似度: {result['相似度']}")
    print(f"  说明: {result['说明']}")
    print()

    # ========== 示例 2: 对比不同的短语对 ==========
    print("示例 2: 对比不同的短语对")
    print("-" * 60)

    phrase_pairs = [
        ("机器学习", "人工智能"),
        ("深度学习", "今天吃饭"),
        ("Python编程", "程序设计"),
        ("北京", "上海"),
    ]

    for phrase_a, phrase_b in phrase_pairs:
        result = await compare_phrases(phrase_a, phrase_b)
        print(f"\n【{phrase_a}】 vs 【{phrase_b}】")
        print(f"  相似度: {result['相似度']:.3f}")
        print(f"  说明: {result['说明']}")

    print()

    # ========== 示例 3: 使用不同的计算方法 ==========
    print("示例 3: 使用不同的计算方法")
    print("-" * 60)

    phrase_a = "自然语言处理"
    phrase_b = "文本分析"

    methods = {
        "ai_direct": "AI 直接判断（推荐）",
        "cosine": "余弦相似度（基于向量）",
        "euclidean": "欧氏距离相似度",
    }

    print(f"\n短语A: {phrase_a}")
    print(f"短语B: {phrase_b}\n")

    for method, description in methods.items():
        result = await compare_phrases(
            phrase_a, phrase_b,
            method=method,
            dim=128  # 使用较小维度加快测试
        )
        print(f"{description:30s}")
        print(f"  相似度: {result['相似度']:.3f}")
        print(f"  说明: {result['说明']}")
        print()

    # ========== 示例 4: 与 semantic_similarity 的对比 ==========
    print("示例 4: 与 semantic_similarity.compare_phrases() 的对比")
    print("-" * 60)

    print("\n两个接口返回的数据格式完全一致：")
    print("""
    {
        "说明": "相似度判断的理由",
        "相似度": 0.85
    }
    """)

    print("\n主要区别：")
    print("  semantic_similarity:")
    print("    - 只支持 AI 直接判断")
    print("    - 专注于语义相似度分析")
    print()
    print("  text_embedding.compare_phrases:")
    print("    - 支持 AI 直接判断 + 多种向量方法")
    print("    - 可以选择不同的计算方法")
    print("    - 返回格式完全兼容")
    print()

    # ========== 示例 5: 实际应用 - 批量比较 ==========
    print("示例 5: 实际应用 - 批量比较")
    print("-" * 60)

    target = "机器学习"
    candidates = [
        "深度学习算法",
        "神经网络模型",
        "数据分析",
        "今天天气",
        "人工智能"
    ]

    print(f"\n目标短语: {target}")
    print(f"候选短语: {len(candidates)} 个\n")

    results = []
    for candidate in candidates:
        result = await compare_phrases(target, candidate)
        results.append((candidate, result['相似度'], result['说明']))

    # 按相似度排序
    results.sort(key=lambda x: x[1], reverse=True)

    print("相似度排名:")
    for i, (phrase, score, explanation) in enumerate(results, 1):
        print(f"\n  {i}. {phrase} (相似度: {score:.3f})")
        print(f"     说明: {explanation}")

    print()
    print("=" * 60)
    print("示例完成！")
    print("=" * 60)


if __name__ == "__main__":
    asyncio.run(main())
