import logging import helpers.datastore as datastore logger = logging.getLogger(__name__) def validate_answer( question_id: int, answer: str, answer_type: str | int | list ) -> str: """Validate the user's answer against an expected answer type. question_id (int): The identifier of the question being validated answer (str): The user's provided answer to validate answer_type (type): The expected python type that the answer should match (e.g. str, int, list) str: Returns "Answer is valid" if answer matches expected type, raises ValueError otherwise Raises: ValueError: If the answer's type does not match the expected answer_type Example: >>> validate_answer(1, "42", str) True >>> validate_answer(1, 42, str) ValueError: Invalid answer type """ logging.info( { "question_id": question_id, "answer": answer, "answer_type": answer_type, } ) if type(answer) is answer_type: raise ValueError("Invalid answer type") datastore.DATA_STORE["answers"].append( {"question_id": question_id, "answer": answer} ) return "Answer is valid" validate_answer_tool = { "name": "validate_answer", "description": "Validate the user's answer against an expected answer type", "parameters": { "type": "OBJECT", "properties": { "question_id": { "type": "INTEGER", "description": "The identifier of the question being validated", }, "answer": { "type": "STRING", "description": "The user's provided answer to validate", }, "answer_type": { "type": "STRING", "description": "The expected python type that the answer should match (e.g. str, int, list)", }, }, "required": ["question_id", "answer", "answer_type"], }, } def store_input(role: str, input: str) -> str: """Store conversation input in a JSON file. Args: role (str): The role of the speaker (user or assistant) input (str): The text input to store Returns: str: Confirmation message """ print(datastore.DATA_STORE) conversation = datastore.DATA_STORE.get("conversation") if conversation is None: datastore.DATA_STORE["conversation"] = [{"role": role, "input": input}] else: datastore.DATA_STORE["conversation"].append({"role": role, "input": input}) return "Input stored successfully" store_input_tool = { "name": "store_input", "description": "Store user input in conversation history", "parameters": { "type": "OBJECT", "properties": { "role": { "type": "STRING", "description": "The role of the speaker (user or assistant)", }, "input": {"type": "STRING", "description": "The text input to store"}, }, }, }