Spaces:
Runtime error
Runtime error
| 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"}, | |
| }, | |
| }, | |
| } | |