use std::collections::HashMap;
use langfuse_core::error::LangfuseError;
use langfuse_core::types::ChatMessage;
use crate::prompts::text::compile_template;
#[derive(Debug, Clone)]
pub struct ChatPromptClient {
pub name: String,
pub version: i32,
pub messages: Vec<ChatMessage>,
pub config: serde_json::Value,
pub labels: Vec<String>,
pub tags: Vec<String>,
pub is_fallback: bool,
}
impl ChatPromptClient {
pub fn compile(
&self,
variables: &HashMap<String, String>,
) -> Result<Vec<ChatMessage>, LangfuseError> {
self.messages
.iter()
.map(|msg| {
let compiled_content = compile_template(&msg.content, variables)?;
Ok(ChatMessage {
role: msg.role.clone(),
content: compiled_content,
})
})
.collect()
}
}