test_coze_difficulty.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. import requests
  2. import json
  3. import time
  4. # 服务器配置
  5. BASE_URL = "http://localhost:8080"
  6. def test_ai_question_generation_with_difficulty():
  7. """
  8. 测试AI生成题目接口的difficulty字段功能
  9. """
  10. print("=== AI题目生成difficulty字段测试 ===")
  11. # 测试不同难度级别
  12. difficulties = ["简单", "中等", "困难"]
  13. for difficulty in difficulties:
  14. print(f"\n--- 测试难度级别: {difficulty} ---")
  15. # 构建请求参数
  16. params = {
  17. "goalId": 1, # 使用测试goalId
  18. "subject": "数学",
  19. "goalType": "选择",
  20. "difficulty": difficulty,
  21. "totalQuantity": 2,
  22. "goalContent": "测试题目生成"
  23. }
  24. try:
  25. # 调用AI生成题目接口
  26. print(f"发送请求参数: {json.dumps(params, ensure_ascii=False)}")
  27. response = requests.post(
  28. f"{BASE_URL}/api/ai/auto-generate",
  29. params=params,
  30. timeout=60
  31. )
  32. print(f"响应状态码: {response.status_code}")
  33. if response.status_code == 200:
  34. result = response.json()
  35. print(f"响应数据: {json.dumps(result, ensure_ascii=False, indent=2)}")
  36. # 检查返回的goalId
  37. if 'goalId' in result:
  38. goal_id = result['goalId']
  39. print(f"生成的goalId: {goal_id}")
  40. # 等待一下让数据保存完成
  41. time.sleep(2)
  42. # 获取生成的题目并检查difficulty字段
  43. check_questions_difficulty(goal_id, difficulty)
  44. else:
  45. print("❌ 响应中没有goalId")
  46. else:
  47. print(f"❌ 请求失败: {response.text}")
  48. except Exception as e:
  49. print(f"❌ 请求异常: {str(e)}")
  50. print("-" * 50)
  51. def check_questions_difficulty(goal_id, expected_difficulty):
  52. """
  53. 检查生成题目的difficulty字段
  54. """
  55. try:
  56. # 获取题目列表
  57. response = requests.get(
  58. f"{BASE_URL}/api/ai/questions/{goal_id}",
  59. timeout=30
  60. )
  61. if response.status_code == 200:
  62. questions = response.json()
  63. print(f"获取到 {len(questions)} 道题目")
  64. for i, question in enumerate(questions, 1):
  65. difficulty = question.get('difficulty')
  66. print(f"题目 {i}:")
  67. print(f" - ID: {question.get('id')}")
  68. print(f" - 题目: {question.get('question', '')[:50]}...")
  69. print(f" - 难度: {difficulty}")
  70. print(f" - 预期难度: {expected_difficulty}")
  71. if difficulty == expected_difficulty:
  72. print(f" ✅ 难度字段正确")
  73. elif difficulty is None:
  74. print(f" ❌ 难度字段为null")
  75. else:
  76. print(f" ⚠️ 难度字段不匹配")
  77. print()
  78. else:
  79. print(f"❌ 获取题目失败: {response.status_code} - {response.text}")
  80. except Exception as e:
  81. print(f"❌ 检查题目异常: {str(e)}")
  82. def check_database_difficulty():
  83. """
  84. 直接检查数据库中的difficulty字段状态
  85. """
  86. print("\n=== 检查数据库difficulty字段状态 ===")
  87. try:
  88. # 获取最近的题目数据 - 使用goalId=1来获取题目
  89. response = requests.get(
  90. f"{BASE_URL}/api/ai/questions/1",
  91. timeout=30
  92. )
  93. if response.status_code == 200:
  94. data = response.json()
  95. questions = data.get('data', [])
  96. print(f"获取到最近 {len(questions)} 道题目")
  97. null_count = 0
  98. valid_count = 0
  99. for i, question in enumerate(questions):
  100. # 确保question是字典类型
  101. if isinstance(question, dict):
  102. difficulty = question.get('difficulty')
  103. content = question.get('content', '未知题目')
  104. print(f"题目 {i+1}: {content[:30]}... - difficulty: {difficulty}")
  105. if difficulty:
  106. print(f"✅ 题目 {i+1} difficulty字段正常: {difficulty}")
  107. valid_count += 1
  108. else:
  109. print(f"❌ 题目 {i+1} difficulty字段为空或null")
  110. null_count += 1
  111. else:
  112. print(f"❌ 题目 {i+1} 数据格式异常: {type(question)}")
  113. null_count += 1
  114. print(f"统计结果:")
  115. print(f" - 有效difficulty字段: {valid_count}")
  116. print(f" - null difficulty字段: {null_count}")
  117. if null_count > 0:
  118. print(f"⚠️ 发现 {null_count} 个null difficulty字段")
  119. else:
  120. print(f"✅ 所有difficulty字段都有效")
  121. else:
  122. print(f"❌ 获取最近题目失败: {response.status_code}")
  123. except Exception as e:
  124. print(f"❌ 检查数据库异常: {str(e)}")
  125. if __name__ == "__main__":
  126. print("开始测试AI生成题目接口的difficulty字段功能...")
  127. # 测试AI题目生成
  128. test_ai_question_generation_with_difficulty()
  129. # 检查数据库状态
  130. check_database_difficulty()
  131. print("\n测试完成!")