use super::*;
impl ResponseGenerator {
pub async fn generate_ai_response(
ai_config: &AiResponseConfig,
context: &RequestContext,
generator: Option<&dyn AiGenerator>,
) -> Result<Value> {
let prompt_template = ai_config
.prompt
.as_ref()
.ok_or_else(|| crate::Error::internal("AI prompt is required"))?;
let expanded_prompt = prompt_template
.replace("{{method}}", &context.method)
.replace("{{path}}", &context.path);
tracing::info!("AI response generation requested with prompt: {}", expanded_prompt);
if let Some(gen) = generator {
tracing::debug!("Using provided AI generator for response");
return gen.generate(&expanded_prompt, ai_config).await;
}
tracing::warn!(
"No AI generator provided; configure MOCKFORGE_AI_PROVIDER to enable AI responses"
);
Err(crate::Error::internal(
"AI response generation is not available: no AI generator configured. \
Set MOCKFORGE_AI_PROVIDER and MOCKFORGE_AI_API_KEY environment variables to enable AI-assisted responses.",
))
}
}