from agents import (
    Agent,
    Runner,
    input_guardrail,
    RunContextWrapper,
    GuardrailFunctionOutput,
)
from pydantic import BaseModel
from open_router_config import config
# dotenv.load_dotenv()
# gemini_api_key = os.getenv("GEMINI_API_KEY")
# if not gemini_api_key:
#     raise ValueError("GEMINI_API_KEY is not set. Please define it in your .env file.")
# external_client = AsyncOpenAI(
#     api_key=gemini_api_key,
#     base_url="https://generativelanguage.googleapis.com/v1beta/openai/",
# )
# # Preferred Gemini model setup
# model = OpenAIChatCompletionsModel(
#     model="gemini-2.0-flash", openai_client=external_client
# )
# # Runner config (you can export this)
# config = RunConfig(model=model, model_provider=external_client)
class CheckGuardrailOutput(BaseModel):
    is_study_related: bool
    student_input: str
    reasoning: str
@input_guardrail
async def check_prompt(ctx: RunContextWrapper, agent: Agent, input: str):
    check_input_agent = Agent(
        name="check_input_agent",
        instructions="You check the input of the student, If they are asking study related question or asking something that they should not ask.",
        output_type=CheckGuardrailOutput,
    )
    result = (
        await Runner.run(
            check_input_agent, f"Student Input: {input}", run_config=config
        )
    ).final_output_as(CheckGuardrailOutput)
    return GuardrailFunctionOutput(
        output_info=f"Reasoning: {result.reasoning}, Student Input: {result.student_input}",
        tripwire_triggered=not result.is_study_related,
    )
teacher = Agent(
    name="teacher",
    instructions="You are a helpful teacher",
    input_guardrails=[check_prompt],
)
result = Runner.run_sync(
    teacher, "I want to change my class timings ðŸ˜ðŸ˜", run_config=config
)
print(result.final_output)