// Application classes retain the same explicit native inference contract.
import aner.llm

class ResearchAssistant {
    let model: LLMClient
    let instructions: String

    fn explain(question: String) {
        let messages = List(
            llm.message("system", instructions),
            llm.message("user", question))
        return model.chat(messages, max_tokens: 256, temperature: 0.2)
    }
}

let assistant = ResearchAssistant(
    model: llm.client("ollama", "llama3.2:3b"),
    instructions: "Explain assumptions, limitations, and the reasoning clearly.")
let answer = assistant.explain("Why must preprocessing fit training data only?")
print(answer.text())
print(answer.finish_reason())
