import json import logging import os logger = logging.getLogger(__name__) """Schedule meeting integration function.""" def fetch_next_question() -> str: """Fetch the next question. Returns: str: The next question. """ questions = [ "What is the capital of France?", "What is 2 + 2?", "Who wrote Romeo and Juliet?", "What is the chemical symbol for gold?", "Which planet is known as the Red Planet?", ] question = questions[0] return f"You need to ask the candidate following question: `{question}`. Allow the candidate some time to respond " fetch_next_question_tool = { "name": "fetch_next_question", "description": "Fetch the next question", } 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") # Create or load the answers file answers_file = "/Users/georgeslorre/ML6/internal/gemini-voice-agents/answers.json" answers = [] if os.path.exists(answers_file): with open(answers_file, "r") as f: answers = json.load(f) # Append new answer answers[question_id] = {"question_id": question_id, "answer": answer} # Write back to file with open(answers_file, "w") as f: json.dump(answers, f, indent=2) 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 """ conversation_file = "/Users/georgeslorre/ML6/internal/gemini-voice-agents/conversation.json" conversation = [] if os.path.exists(conversation_file): with open(conversation_file, "r") as f: conversation = json.load(f) conversation.append({"role": role, "content": input}) with open(conversation_file, "w") as f: json.dump(conversation, f, indent=2) 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" } } } }