Packages

An LLM interaction library that makes you feel like a star

Current section

Files

Jump to
starlet src examples ollama_thinking.gleam
Raw

src/examples/ollama_thinking.gleam

import envoy
import examples/utils
import gleam/io
import gleam/option.{Some}
import gleam/result
import starlet
import starlet/ollama
pub fn main() {
let base_url =
envoy.get("OLLAMA_BASE_URL") |> result.unwrap("http://localhost:11434")
run_example(base_url)
}
fn run_example(base_url: String) {
let client = ollama.new(base_url)
let result = {
let msg =
"What is the sum of all prime numbers between 1 and 20? Think through this step by step."
let chat =
starlet.chat(client, "qwen3:0.6b")
|> ollama.with_thinking(ollama.ThinkingEnabled)
|> starlet.user(msg)
io.println("User: " <> msg)
io.println("")
use #(_chat, turn) <- result.try(starlet.send(chat))
case ollama.thinking(turn) {
Some(thinking) -> {
io.println("=== Model's Thinking ===")
io.println(thinking)
io.println("")
}
option.None -> io.println("(No thinking content)")
}
io.println("=== Model's Response ===")
io.println(starlet.text(turn))
Ok(Nil)
}
case result {
Ok(_) -> Nil
Error(err) -> io.println("Error: " <> utils.error_to_string(err))
}
}