use crate::error::Result;
use super::completion::create_completion;
use super::Llama;
pub use crate::chat::ChatMessage;
use crate::chat::{render_builtin, BuiltinTemplate, ToolDefinition};
pub fn create_chat_completion(
llama: &mut Llama,
messages: &[ChatMessage],
max_tokens: usize,
) -> Result<ChatMessage> {
create_chat_completion_with(llama, messages, BuiltinTemplate::Plain, &[], max_tokens)
}
pub fn create_chat_completion_with(
llama: &mut Llama,
messages: &[ChatMessage],
template: BuiltinTemplate,
tools: &[ToolDefinition],
max_tokens: usize,
) -> Result<ChatMessage> {
let prompt = render_builtin(template, messages, tools, true);
let resp = create_completion(llama, &prompt, max_tokens)?;
Ok(ChatMessage::new(crate::chat::Role::Assistant, resp.text))
}