#!/usr/bin/env python3
"""
对比 semantic_similarity 和 text_embedding 两个模块的接口
"""
import asyncio


async def main():
    print("=" * 70)
    print("对比 semantic_similarity 和 text_embedding 两个模块")
    print("=" * 70)
    print()

    # ========== 1. 导入方式对比 ==========
    print("1. 导入方式")
    print("-" * 70)

    print("# semantic_similarity 模块")
    print("from lib.semantic_similarity import compare_phrases")
    print()

    print("# text_embedding 模块（兼容接口）")
    print("from lib.text_embedding import compare_phrases")
    print()

    # ========== 2. 基本使用对比 ==========
    print("2. 基本使用（完全兼容）")
    print("-" * 70)

    print("""
# 两个模块的基本用法完全相同
result = await compare_phrases("深度学习", "神经网络")

# 返回格式完全一致
{
    "说明": "简明扼要说明理由",
    "相似度": 0.85
}
    """)

    # ========== 3. 实际对比 ==========
    print("3. 实际效果对比")
    print("-" * 70)

    phrase_a = "机器学习"
    phrase_b = "人工智能"

    print(f"\n测试短语: 【{phrase_a}】 vs 【{phrase_b}】\n")

    # 使用 text_embedding 模块（因为它兼容 semantic_similarity）
    from lib.text_embedding import compare_phrases as compare_phrases_embed

    result = await compare_phrases_embed(phrase_a, phrase_b)

    print("text_embedding.compare_phrases() 结果:")
    print(f"  相似度: {result['相似度']}")
    print(f"  说明: {result['说明']}")
    print()

    # ========== 4. 功能对比 ==========
    print("4. 功能对比")
    print("-" * 70)

    comparison = """
┌─────────────────────────────────────────────────────────────────┐
│                         功能对比表                               │
├─────────────────────────┬─────────────────┬─────────────────────┤
│ 功能                    │ semantic_sim.   │ text_embedding      │
├─────────────────────────┼─────────────────┼─────────────────────┤
│ 返回格式                │ {说明, 相似度}   │ {说明, 相似度} ✅    │
│ AI 直接判断             │ ✅               │ ✅                   │
│ 余弦相似度 (向量)       │ ❌               │ ✅                   │
│ 欧氏距离 (向量)         │ ❌               │ ✅                   │
│ 曼哈顿距离 (向量)       │ ❌               │ ✅                   │
│ 文本向量化 (encode)     │ ❌               │ ✅                   │
│ 批量处理                │ ❌               │ ✅                   │
│ 缓存机制                │ ✅               │ ✅                   │
│ 多模型支持              │ ✅               │ ✅                   │
└─────────────────────────┴─────────────────┴─────────────────────┘
    """
    print(comparison)

    # ========== 5. 使用场景推荐 ==========
    print("5. 使用场景推荐")
    print("-" * 70)

    recommendations = """
【推荐使用 semantic_similarity】
  - 只需要简单的相似度判断
  - 专注于语义分析
  - 不需要向量化功能

【推荐使用 text_embedding】
  - 需要文本向量化（encode）
  - 需要多种相似度计算方法
  - 需要批量处理文本
  - 需要兼容 semantic_similarity 的代码
  - 想要更多的灵活性

【无缝迁移】
  如果你之前使用 semantic_similarity.compare_phrases()，
  可以直接替换为 text_embedding.compare_phrases()，
  代码无需任何修改！

  # 旧代码
  from lib.semantic_similarity import compare_phrases
  result = await compare_phrases("A", "B")

  # 新代码（只需改导入）
  from lib.text_embedding import compare_phrases
  result = await compare_phrases("A", "B")
    """
    print(recommendations)

    # ========== 6. 扩展功能演示 ==========
    print("6. text_embedding 的扩展功能演示")
    print("-" * 70)

    print("\n6.1 使用不同的计算方法:")
    methods = ["ai_direct", "cosine", "euclidean"]
    for method in methods:
        result = await compare_phrases_embed(
            phrase_a, phrase_b,
            method=method,
            dim=128
        )
        print(f"  {method:15s}: 相似度 = {result['相似度']:.3f}")

    print("\n6.2 文本向量化:")
    from lib.text_embedding import encode
    vector = await encode("测试文本", dim=128)
    print(f"  向量维度: {vector.shape}")
    print(f"  向量前5个值: {vector[:5]}")

    print("\n6.3 批量处理:")
    from lib.text_embedding import SentenceModel
    model = SentenceModel(dim=128)
    texts = ["文本1", "文本2", "文本3"]
    vectors = await model.encode(texts)
    print(f"  批量转换 {len(texts)} 个文本")

    print()
    print("=" * 70)
    print("对比完成！")
    print("=" * 70)


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