#!/usr/bin/env python3
"""
测试thinking内容控制功能
验证DISPLAY_RESULT_THINKING参数是否正确控制thinking内容的显示/隐藏
"""
import sys
import os
# 添加项目根目录到Python路径
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
def test_thinking_removal():
"""测试thinking内容移除功能"""
from customllm.base_llm_chat import BaseLLMChat
# 创建一个测试类来测试_remove_thinking_content方法
class TestLLM(BaseLLMChat):
def submit_prompt(self, prompt, **kwargs):
return "测试响应"
# 创建测试实例
test_llm = TestLLM(config={})
# 测试用例
test_cases = [
# 基本thinking标签
{
"input": "这是思考内容这是最终答案",
"expected": "这是最终答案"
},
# 多行thinking标签
{
"input": "\n这是多行\n思考内容\n\n\n这是最终答案",
"expected": "这是最终答案"
},
# 大小写不敏感
{
"input": "大写思考最终答案",
"expected": "最终答案"
},
# 多个thinking标签
{
"input": "第一段思考中间内容第二段思考最终答案",
"expected": "中间内容最终答案"
},
# 没有thinking标签
{
"input": "这是没有thinking标签的普通文本",
"expected": "这是没有thinking标签的普通文本"
},
# 空文本
{
"input": "",
"expected": ""
},
# None输入
{
"input": None,
"expected": None
}
]
print("=== 测试thinking内容移除功能 ===")
for i, test_case in enumerate(test_cases, 1):
input_text = test_case["input"]
expected = test_case["expected"]
result = test_llm._remove_thinking_content(input_text)
if result == expected:
print(f"✅ 测试用例 {i}: 通过")
else:
print(f"❌ 测试用例 {i}: 失败")
print(f" 输入: {repr(input_text)}")
print(f" 期望: {repr(expected)}")
print(f" 实际: {repr(result)}")
print()
def test_config_integration():
"""测试配置集成"""
print("=== 测试配置集成 ===")
try:
from app_config import DISPLAY_RESULT_THINKING
print(f"✅ 成功导入配置: DISPLAY_RESULT_THINKING = {DISPLAY_RESULT_THINKING}")
from customllm.base_llm_chat import BaseLLMChat
print("✅ 成功导入BaseLLMChat类")
# 检查类中是否正确导入了配置
import customllm.base_llm_chat as base_module
if hasattr(base_module, 'DISPLAY_RESULT_THINKING'):
print(f"✅ BaseLLMChat模块中的配置: DISPLAY_RESULT_THINKING = {base_module.DISPLAY_RESULT_THINKING}")
else:
print("❌ BaseLLMChat模块中未找到DISPLAY_RESULT_THINKING配置")
except ImportError as e:
print(f"❌ 导入失败: {e}")
print()
def test_vanna_instance():
"""测试Vanna实例的thinking处理"""
print("=== 测试Vanna实例thinking处理 ===")
try:
from common.vanna_instance import get_vanna_instance
vn = get_vanna_instance()
print(f"✅ 成功获取Vanna实例: {type(vn).__name__}")
# 检查实例是否有_remove_thinking_content方法
if hasattr(vn, '_remove_thinking_content'):
print("✅ Vanna实例具有_remove_thinking_content方法")
# 测试方法
test_text = "测试思考测试结果"
cleaned = vn._remove_thinking_content(test_text)
if cleaned == "测试结果":
print("✅ thinking内容移除功能正常工作")
else:
print(f"❌ thinking内容移除异常: {repr(cleaned)}")
else:
print("❌ Vanna实例缺少_remove_thinking_content方法")
except Exception as e:
print(f"❌ 测试Vanna实例失败: {e}")
print()
def main():
"""主测试函数"""
print("开始测试thinking内容控制功能...\n")
# 运行所有测试
test_thinking_removal()
test_config_integration()
test_vanna_instance()
print("测试完成!")
if __name__ == "__main__":
main()