liveModelConfig are ADK-only.
Author a conversation scenario
evals/city-facts-simulation.evalset.json
Configure text simulation
evals/test_config.json
A custom instruction template must contain
{{ stop_signal }}, {{ conversation_plan }}, and {{ conversation_history }}. Include {{ persona }} if the scenario uses a user persona. Harnest validates this through ADK before running the eval.
An explicit userSimulatorConfig.model overrides OPENAI_MODEL. Otherwise, simulators use the shared model configuration, even when userSimulatorConfig is omitted. Compatible agent transports are reused; native providers need their own credentials.
per_turn_user_simulator_quality_v1 is optional, but it is the metric designed to verify that generated user messages followed the scenario. Its stopSignal should match the simulator stop signal; </finished> is the shared default.
Configure audio simulation
ADK 2.8 also exposes thellm_audio simulator. It first generates a text turn, then synthesizes audio through audioModel.
evals/test_config.json
cloud_tts uses Application Default Credentials. GOOGLE_CLOUD_PROJECT is used as its quota project when present. If you select a native model such as a Gemini TTS model, provide that model provider’s credentials and set its response modalities to audio.
Harnest passes audio simulation through to native ADK evaluation. LangGraph evaluation rejects the resulting non-text user content even when
includeTextWithAudio is true, so it cannot silently score a text-only projection of an audio test.Select ADK live inference
liveModelConfig changes the inference path used for the agent under test. Use it for an ADK agent configured with a bidirectional live model.
evals/test_config.json
timeoutSeconds is the wait limit for live model turn completion and defaults to 300.
Configure models and services
Simulation can involve three independently authenticated components. They all inherit the environment of the Harnest command:
Simulation makes live, potentially paid calls. Follow Configure a model and keep credentials out of eval JSON. Compatible API keys do not authenticate Cloud TTS or native Google evaluation services.