Spaces:
Sleeping
Sleeping
import os | |
import google.generativeai as genai | |
class GeminiAgent: | |
""" | |
An agent that uses the Gemini-1.5-Pro model to answer questions. | |
""" | |
def __init__(self): | |
""" | |
Initializes the agent, configures the Gemini API key, and sets up the model. | |
Raises a ValueError if the GEMINI_API_KEY is not found in the environment secrets. | |
""" | |
print("Initializing GeminiAgent...") | |
# 1. Get API Key from Hugging Face Secrets | |
api_key = os.getenv("GEMINI_API_KEY") | |
if not api_key: | |
raise ValueError("GEMINI_API_KEY secret not found! Please set it in your Space's settings.") | |
# 2. Configure the Generative AI client | |
genai.configure(api_key=api_key) | |
# 3. Initialize the Gemini 1.5 Pro model | |
self.model = genai.GenerativeModel('gemini-1.5-pro-latest') | |
print("GeminiAgent initialized successfully.") | |
def __call__(self, question: str) -> str: | |
""" | |
Processes a question by sending it to the Gemini model and returns the stripped text answer. | |
The prompt is engineered to request a direct, exact-match answer as required by the competition. | |
""" | |
print(f"Agent received question (first 80 chars): {question[:80]}...") | |
# Prompt engineered for the "EXACT MATCH" requirement. | |
# It instructs the model to provide only the answer and nothing else. | |
prompt = f"""You are an expert problem-solving agent. Your goal is to answer the following question as accurately as possible. | |
The evaluation system requires an EXACT MATCH. Therefore, you must provide only the final answer and nothing else. | |
Do not include any introductory text, explanations, or the phrase "FINAL ANSWER". | |
For example, if the question asks for a specific year, your response should be just "2023". If it's a name, just "John Doe". If it is a number, just "42". | |
Question: {question} | |
Final Answer:""" | |
try: | |
# 4. Call the model | |
response = self.model.generate_content(prompt) | |
# 5. Extract and clean the answer | |
final_answer = response.text.strip() | |
print(f"Agent returning answer: {final_answer}") | |
return final_answer | |
except Exception as e: | |
print(f"An error occurred while calling the Gemini API: {e}") | |
return f"Error processing question: {e}" |