ClientCast
Towards a Client-Centered Assessment of LLM Therapists by Client Simulation
Venue: ArXiv
Paper: ArXiv
Overview
ClientCast creates client simulations for assessing LLM-based therapists. It introduces well-designed and detailed psychological profiles including Big Five personality traits, symptom assessments (PHQ-9, GAD-7, OQ-45), and conversation history from real therapy sessions to create realistic client behavior.
Key Features
- Deep Psychological Profiling: Models Big Five personality traits alongside critical therapy-relevant traits like resistance and emotional fluctuation.
- Symptom Assessment: Grounded in validated scales (PHQ-9, GAD-7, OQ-45).
- Real Conversation Grounding: Uses human therapy conversation excerpts
- Client-Centered Focus: Enables the simulated client to evaluate the therapist
How It Works
- Profile Construction: Builds case synopsis from basic profile
- Symptom Integration: Incorporates identified symptoms with severity levels
- Personality Mapping: Uses Big Five traits to guide response style
- Conversation Grounding: References real therapy conversation excerpts
- Response Generation: Produces responses consistent with profile and conversation context
Psychological Scales
ClientCast integrates multiple validated assessment instruments:
| Scale | Description | Focus |
|---|---|---|
| PHQ-9 | Patient Health Questionnaire | Depression symptoms |
| GAD-7 | Generalized Anxiety Disorder scale | Anxiety symptoms |
| OQ-45 | Outcome Questionnaire | Overall functioning |
Usage
CLI
uv run python -m examples.simulate client=clientCast
Python
from patienthub.clients import get_client
client = get_client(agent_name="clientCast", lang='en')
response = client.generate_response("What brings you in today?")
print(response.content)
Configuration
| Option | Description | Default |
|---|---|---|
prompt_path | Path to prompt file | data/prompts/client/clientCast.yaml |
data_path | Path to character file | data/characters/ClientCast.json |
conv_path | Path to conversation data | data/resources/ClientCast/human_data.json |
symptoms_path | Path to symptom assessment definitions | data/resources/ClientCast/symptoms.json |
data_idx | Character index | 0 |
conv_id | Conversation excerpt ID | 0 |
Character Data Format
{
"basic_profile": {
"name": "Not Specified",
"gender": "Female",
"age": -1,
"occupation": "Not Specified",
"topic": "alcohol consumption – discussing frequency and effects...",
"situation": "The client drinks alcohol regularly to unwind...",
"emotion": "The client feels guilty about their drinking habits...",
"reasons": "Concerned about alcohol consumption and its effect on depression",
"problem": "alcohol consumption – struggles with drinking more than intended",
"feeling_expression": "Medium – shares feelings but does not deeply explore them",
"emotional_fluctuation": "Medium – talks about relief and worsening feelings",
"resistance": "Low – open to discussing drinking habits"
},
"big_five": {
"Openness": {
"score_percent": 55,
"explanation": "Enjoys watching movies and reading..."
},
"Conscientiousness": {
"score_percent": 60,
"explanation": "Aware of drinking habits, willing to set goals..."
},
"Extraversion": {
"score_percent": 45,
"explanation": "Enjoys social activities but doesn't mention frequent interactions"
},
"Agreeableness": {
"score_percent": 65,
"explanation": "Willing to reduce alcohol consumption, cooperative"
},
"Neuroticism": {
"score_percent": 75,
"explanation": "Experiences depression and uses alcohol to cope"
}
},
"symptoms": {
"PHQ-9": {
"1": {
"identified": false,
"severity_level": null,
"explanation": "Still finds interest in activities..."
}
},
"GAD-7": {
"1": {
"identified": false,
"explanation": "No mentioned anxiety symptoms..."
}
},
"OQ-45": {
"1": {
"identified": false,
"explanation": "Unable to assess social interactions..."
}
}
}
}
Resources
data/resources/ClientCast/human_data.json: Human therapy conversation excerpts for grounding client simulations
data/resources/ClientCast/symptoms.json: Symptom item texts for PHQ-9, GAD-7, and OQ-45 used to identify symptoms in the ClientCast profile