""" Тестовый скрипт для локальной проверки формата ответа агента """ import json def test_agent_output_format(agent_response): """ Проверяет формат ответа агента на соответствие требованиям Hugging Face GAIA Args: agent_response: Ответ агента для проверки Returns: dict: Результаты проверки """ results = { "is_valid": False, "format_type": None, "extracted_answer": None, "issues": [] } # Проверка на пустой ответ if not agent_response: results["issues"].append("Ответ пустой") return results # Проверка на JSON формат try: json_obj = json.loads(agent_response) results["format_type"] = "JSON" # Проверка наличия ключа final_answer if "final_answer" in json_obj: final_answer = json_obj["final_answer"] results["extracted_answer"] = final_answer # Проверка на пустой final_answer if not final_answer: results["issues"].append("Ключ final_answer содержит пустое значение") else: results["is_valid"] = True else: results["issues"].append("JSON не содержит ключ 'final_answer'") except json.JSONDecodeError: # Если не JSON, проверяем как plain string results["format_type"] = "Plain String" results["extracted_answer"] = agent_response # Проверка на префиксы, которые могут помешать exact match prefixes = ["Answer:", "Response:", "A:", "The answer is:", "Final answer:"] for prefix in prefixes: if agent_response.startswith(prefix): results["issues"].append(f"Ответ содержит префикс '{prefix}', который может помешать exact match") # Если нет проблем с префиксами, считаем plain string валидным if not results["issues"]: results["is_valid"] = True return results def main(): """ Демонстрирует проверку различных форматов ответа """ # Примеры ответов для тестирования test_responses = [ # JSON с final_answer (правильный формат) '{"final_answer": "Paris"}', # Plain string (может работать, но не рекомендуется) "Paris", # JSON без final_answer (неправильный формат) '{"answer": "Paris", "confidence": 0.95}', # Plain string с префиксом (неправильный формат) "Answer: Paris", # Пустой ответ "", # JSON с пустым final_answer '{"final_answer": ""}' ] print("=== ПРОВЕРКА ФОРМАТОВ ОТВЕТА ДЛЯ HUGGING FACE GAIA ===\n") for i, response in enumerate(test_responses): print(f"Тест #{i+1}: {response}") results = test_agent_output_format(response) print(f" Формат: {results['format_type']}") print(f" Извлеченный ответ: {results['extracted_answer']}") print(f" Валидный: {'✓' if results['is_valid'] else '✗'}") if results["issues"]: print(" Проблемы:") for issue in results["issues"]: print(f" - {issue}") else: print(" Проблемы: нет") print() print("=== РЕКОМЕНДАЦИИ ===") print("1. Используйте формат JSON с ключом 'final_answer'") print("2. Убедитесь, что значение 'final_answer' не пустое") print("3. Избегайте префиксов в ответе") print("4. Проверьте, что ответ точно соответствует ожидаемому (exact match)") if __name__ == "__main__": main()