feat: add sampling param CLI flags to populate_knowledge binary

Adds --temperature, --top-p, --top-k, --min-p flags so batch runs can
tune the same sampling params now supported by the API endpoints.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Cameron
2026-04-16 14:23:45 -04:00
parent 3059adfd37
commit b7e1bdf1fd

View File

@@ -39,6 +39,22 @@ struct Args {
#[arg(long)]
num_ctx: Option<i32>,
/// Sampling temperature (e.g. 0.8). Omit for model default
#[arg(long)]
temperature: Option<f32>,
/// Top-p (nucleus) sampling (e.g. 0.9). Omit for model default
#[arg(long)]
top_p: Option<f32>,
/// Top-k sampling (e.g. 40). Omit for model default
#[arg(long)]
top_k: Option<i32>,
/// Min-p sampling (e.g. 0.05). Omit for model default
#[arg(long)]
min_p: Option<f32>,
/// Re-process files that already have an insight stored
#[arg(long, default_value_t = false)]
reprocess: bool,
@@ -78,6 +94,13 @@ async fn main() -> anyhow::Result<()> {
if let Some(ctx) = args.num_ctx {
ollama.set_num_ctx(Some(ctx));
}
if args.temperature.is_some()
|| args.top_p.is_some()
|| args.top_k.is_some()
|| args.min_p.is_some()
{
ollama.set_sampling_params(args.temperature, args.top_p, args.top_k, args.min_p);
}
let sms_api_url =
std::env::var("SMS_API_URL").unwrap_or_else(|_| "http://localhost:8000".to_string());
@@ -125,6 +148,18 @@ async fn main() -> anyhow::Result<()> {
if let Some(ctx) = args.num_ctx {
println!("Num ctx: {}", ctx);
}
if let Some(t) = args.temperature {
println!("Temperature: {}", t);
}
if let Some(p) = args.top_p {
println!("Top P: {}", p);
}
if let Some(k) = args.top_k {
println!("Top K: {}", k);
}
if let Some(m) = args.min_p {
println!("Min P: {}", m);
}
println!(
"Mode: {}",
if args.reprocess {
@@ -202,10 +237,10 @@ async fn main() -> anyhow::Result<()> {
args.model.clone(),
None,
args.num_ctx,
None,
None,
None,
None,
args.temperature,
args.top_p,
args.top_k,
args.min_p,
args.max_iterations,
)
.await