medrax2 / test_socratic_mode.py
samwell's picture
feat: Add Socratic AI Tutor mode with toggle
11b0dac
"""
Test script for Socratic mode functionality
"""
import os
os.environ["OMP_NUM_THREADS"] = "1"
import warnings
warnings.filterwarnings("ignore")
from dotenv import load_dotenv
load_dotenv()
from langgraph.checkpoint.memory import MemorySaver
from medrax.models import ModelFactory
from medrax.agent import Agent
from medrax.utils import load_prompts_from_file
# Initialize checkpointer
checkpointer = MemorySaver()
# Load LLM
llm = ModelFactory.create_model(
model_name="gemini-2.0-flash",
temperature=0.7,
max_tokens=5000
)
# Load prompts
prompts = load_prompts_from_file("medrax/docs/system_prompts.txt")
# Test Assistant Mode
print("\n" + "="*60)
print("Testing ASSISTANT MODE")
print("="*60)
assistant_prompt = prompts.get("MEDICAL_ASSISTANT", "You are a helpful medical imaging assistant.")
assistant_agent = Agent(
llm,
tools=[], # Using empty tools for quick testing
system_prompt=assistant_prompt,
checkpointer=checkpointer,
mode="assistant"
)
config = {"configurable": {"thread_id": "test_assistant"}}
response = assistant_agent.workflow.invoke(
{"messages": [("user", "What is pneumonia?")]},
config=config
)
print("\nAssistant Response:")
print(response["messages"][-1].content)
# Test Socratic Mode
print("\n" + "="*60)
print("Testing SOCRATIC TUTOR MODE")
print("="*60)
socratic_prompt = prompts.get("SOCRATIC_TUTOR", "You are a Socratic medical educator.")
socratic_agent = Agent(
llm,
tools=[], # Using empty tools for quick testing
system_prompt=socratic_prompt,
checkpointer=checkpointer,
mode="socratic"
)
config = {"configurable": {"thread_id": "test_socratic"}}
response = socratic_agent.workflow.invoke(
{"messages": [("user", "What is pneumonia?")]},
config=config
)
print("\nSocratic Tutor Response:")
print(response["messages"][-1].content)
print("\n" + "="*60)
print("Test Complete!")
print("="*60)
print("\nThe key difference:")
print("- Assistant Mode: Provides direct answers and explanations")
print("- Socratic Mode: Guides learning through questions without giving direct answers")