MCPcopy Create free account
hub / github.com/ChrisFeldmeier/OpenCodeRust / get_small_model

Method get_small_model

crates/opencode-provider/src/bootstrap.rs:1573–1667  ·  view source on GitHub ↗

Get the small model for a provider, using priority lists.

(
        &self,
        provider_id: &str,
        config_small_model: Option<&str>,
    )

Source from the content-addressed store, hash-verified

1571
1572 /// Get the small model for a provider, using priority lists.
1573 pub fn get_small_model(
1574 &self,
1575 provider_id: &str,
1576 config_small_model: Option<&str>,
1577 ) -> Option<ProviderModel> {
1578 // If config specifies a small model, use it
1579 if let Some(model_str) = config_small_model {
1580 let parsed = parse_model(model_str);
1581 return self
1582 .get_model(&parsed.provider_id, &parsed.model_id)
1583 .ok()
1584 .cloned();
1585 }
1586
1587 if let Some(provider) = self.providers.get(provider_id) {
1588 let mut priority: Vec<&str> = vec![
1589 "claude-haiku-4-5",
1590 "claude-haiku-4.5",
1591 "3-5-haiku",
1592 "3.5-haiku",
1593 "gemini-3-flash",
1594 "gemini-2.5-flash",
1595 "gpt-5-nano",
1596 ];
1597
1598 if provider_id.starts_with("opencode") {
1599 priority = vec!["gpt-5-nano"];
1600 }
1601 if provider_id.starts_with("github-copilot") {
1602 priority = vec!["gpt-5-mini", "claude-haiku-4.5"];
1603 priority.extend_from_slice(&[
1604 "claude-haiku-4-5",
1605 "3-5-haiku",
1606 "3.5-haiku",
1607 "gemini-3-flash",
1608 "gemini-2.5-flash",
1609 "gpt-5-nano",
1610 ]);
1611 }
1612
1613 for item in &priority {
1614 if provider_id == "amazon-bedrock" {
1615 let cross_region_prefixes = ["global.", "us.", "eu."];
1616 let candidates: Vec<&String> = provider
1617 .models
1618 .keys()
1619 .filter(|m| m.contains(item))
1620 .collect();
1621
1622 // Priority: 1) global. 2) user's region prefix 3) unprefixed
1623 if let Some(global_match) = candidates.iter().find(|m| m.starts_with("global."))
1624 {
1625 return provider.models.get(*global_match).cloned();
1626 }
1627
1628 let region = provider
1629 .options
1630 .get("region")

Callers

nothing calls this directly

Calls 8

parse_modelFunction · 0.85
containsMethod · 0.80
findMethod · 0.80
get_modelMethod · 0.45
getMethod · 0.45
filterMethod · 0.45
as_strMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected