#!/usr/bin/env python3 """ 测试output变量提取逻辑 """ import sys sys.path.insert(0, 'backend') from app.services.workflow_engine import WorkflowEngine # 模拟llm-format节点的输入数据 input_data = { 'right': { 'right': { 'right': '是的,我记得!根据我们之前的对话,你告诉我你的名字叫"老七"。我会在本次对话中记住这个名字,以便更好地为你提供帮助。如果你希望我用其他称呼,也可以随时告诉我。', 'query': '你还记得我的名字吗?' }, 'memory': { 'conversation_history': [], 'user_profile': {}, 'context': {} }, 'query': '你还记得我的名字吗?' }, 'memory': { 'conversation_history': [], 'user_profile': {}, 'context': {} }, 'query': '你还记得我的名字吗?' } # 创建WorkflowEngine实例 engine = WorkflowEngine("test", {"nodes": [], "edges": []}) # 测试_get_nested_value方法 print("测试_get_nested_value方法:") value1 = engine._get_nested_value(input_data, 'output') print(f" _get_nested_value(input_data, 'output'): {value1}") # 测试output变量提取逻辑 print("\n测试output变量提取逻辑:") right_value = input_data.get('right') print(f" right_value类型: {type(right_value)}") print(f" right_value: {str(right_value)[:100]}") if right_value is not None: if isinstance(right_value, str): value = right_value print(f" ✅ 从right字段(字符串)提取: {value[:100]}") elif isinstance(right_value, dict): current = right_value depth = 0 while isinstance(current, dict) and depth < 10: if 'right' in current: current = current['right'] depth += 1 if isinstance(current, str): value = current print(f" ✅ 从right字段(嵌套{depth}层)提取: {value[:100]}") break else: break else: print(f" ❌ 无法提取字符串值") print("\n测试完成")