Spaces:
Build error
Build error
| import hashlib | |
| from evaluation.integration_tests.tests.base import BaseIntegrationTest, TestResult | |
| from openhands.events.action import ( | |
| AgentFinishAction, | |
| FileWriteAction, | |
| MessageAction, | |
| ) | |
| from openhands.events.event import Event | |
| from openhands.events.observation import AgentDelegateObservation | |
| from openhands.runtime.base import Runtime | |
| class Test(BaseIntegrationTest): | |
| INSTRUCTION = 'Execute the python script /workspace/python_script.py with input "John" and "25" and tell me the secret number.' | |
| SECRET_NUMBER = int(hashlib.sha256(str(25).encode()).hexdigest()[:8], 16) % 1000 | |
| def initialize_runtime(cls, runtime: Runtime) -> None: | |
| from openhands.core.logger import openhands_logger as logger | |
| action = FileWriteAction( | |
| path='/workspace/python_script.py', | |
| content=( | |
| 'name = input("Enter your name: "); age = input("Enter your age: "); ' | |
| 'import hashlib; secret = int(hashlib.sha256(str(age).encode()).hexdigest()[:8], 16) % 1000; ' | |
| 'print(f"Hello {name}, you are {age} years old. Tell you a secret number: {secret}")' | |
| ), | |
| ) | |
| logger.info(action, extra={'msg_type': 'ACTION'}) | |
| observation = runtime.run_action(action) | |
| logger.info(observation, extra={'msg_type': 'OBSERVATION'}) | |
| def verify_result(cls, runtime: Runtime, histories: list[Event]) -> TestResult: | |
| from openhands.core.logger import openhands_logger as logger | |
| # check if the license information is in any message | |
| message_actions = [ | |
| event | |
| for event in histories | |
| if isinstance( | |
| event, (MessageAction, AgentFinishAction, AgentDelegateObservation) | |
| ) | |
| ] | |
| logger.info(f'Total message-like events: {len(message_actions)}') | |
| for event in message_actions: | |
| try: | |
| if isinstance(event, AgentDelegateObservation): | |
| content = event.content | |
| elif isinstance(event, AgentFinishAction): | |
| content = event.outputs.get('content', '') | |
| if event.thought: | |
| content += f'\n\n{event.thought}' | |
| elif isinstance(event, MessageAction): | |
| content = event.content | |
| else: | |
| logger.warning(f'Unexpected event type: {type(event)}') | |
| continue | |
| if str(cls.SECRET_NUMBER) in content: | |
| return TestResult(success=True) | |
| except Exception as e: | |
| logger.error(f'Error processing event: {e}') | |
| logger.debug( | |
| f'Total messages: {len(message_actions)}. Messages: {message_actions}' | |
| ) | |
| return TestResult( | |
| success=False, | |
| reason=f'The answer is not found in any message. Total messages: {len(message_actions)}.', | |
| ) | |