mirror of
https://github.com/ollama/ollama.git
synced 2026-07-23 09:10:53 -05:00
docs: update glm references to glm-5.2
Update glm-5.1 references to glm-5.2. Also update the context size for the new model
This commit is contained in:
@@ -327,7 +327,7 @@ func TestParseArgs(t *testing.T) {
|
||||
func TestIsCloudModel(t *testing.T) {
|
||||
// isCloudModel now only uses Show API, so nil client always returns false
|
||||
t.Run("nil client returns false", func(t *testing.T) {
|
||||
models := []string{"glm-5.1:cloud", "kimi-k2.6:cloud", "local-model"}
|
||||
models := []string{"glm-5.2:cloud", "kimi-k2.6:cloud", "local-model"}
|
||||
for _, model := range models {
|
||||
if isCloudModel(context.Background(), nil, model) {
|
||||
t.Errorf("isCloudModel(%q) with nil client should return false", model)
|
||||
@@ -393,7 +393,7 @@ func TestBuildModelList_OnlyLocalModels_CloudRecsStillFirst(t *testing.T) {
|
||||
func TestBuildModelList_BothCloudAndLocal_RegularSort(t *testing.T) {
|
||||
existing := []modelInfo{
|
||||
{Name: "llama3.2:latest", Remote: false},
|
||||
{Name: "glm-5.1:cloud", Remote: true},
|
||||
{Name: "glm-5.2:cloud", Remote: true},
|
||||
}
|
||||
|
||||
items, _, _, _ := buildModelList(existing, nil, "")
|
||||
@@ -409,7 +409,7 @@ func TestBuildModelList_BothCloudAndLocal_RegularSort(t *testing.T) {
|
||||
func TestBuildModelList_PreCheckedNonRecommendedFirstInMore(t *testing.T) {
|
||||
existing := []modelInfo{
|
||||
{Name: "llama3.2:latest", Remote: false},
|
||||
{Name: "glm-5.1:cloud", Remote: true},
|
||||
{Name: "glm-5.2:cloud", Remote: true},
|
||||
}
|
||||
|
||||
items, _, _, _ := buildModelList(existing, []string{"llama3.2"}, "")
|
||||
@@ -457,14 +457,14 @@ func TestBuildModelList_CurrentDefaultFirstAmongCheckedNonRec(t *testing.T) {
|
||||
func TestBuildModelList_ExistingRecommendedMarked(t *testing.T) {
|
||||
existing := []modelInfo{
|
||||
{Name: "gemma4", Remote: false},
|
||||
{Name: "glm-5.1:cloud", Remote: true},
|
||||
{Name: "glm-5.2:cloud", Remote: true},
|
||||
}
|
||||
|
||||
items, _, _, _ := buildModelList(existing, nil, "")
|
||||
|
||||
for _, item := range items {
|
||||
switch item.Name {
|
||||
case "gemma4", "glm-5.1:cloud":
|
||||
case "gemma4", "glm-5.2:cloud":
|
||||
if strings.HasSuffix(item.Description, "(not downloaded)") {
|
||||
t.Errorf("installed recommended %q should not have '(not downloaded)' suffix, got %q", item.Name, item.Description)
|
||||
}
|
||||
@@ -505,13 +505,13 @@ func TestBuildModelList_PreservesRecommendationRequiredPlanForExistingCloudModel
|
||||
func TestBuildModelList_ExistingCloudModelsNotPushedToBottom(t *testing.T) {
|
||||
existing := []modelInfo{
|
||||
{Name: "gemma4", Remote: false},
|
||||
{Name: "glm-5.1:cloud", Remote: true},
|
||||
{Name: "glm-5.2:cloud", Remote: true},
|
||||
}
|
||||
|
||||
items, _, _, _ := buildModelList(existing, nil, "")
|
||||
got := names(items)
|
||||
|
||||
// gemma4 and glm-5.1:cloud are installed so they sort normally;
|
||||
// gemma4 and glm-5.2:cloud are installed so they sort normally;
|
||||
// qwen3.5:cloud and qwen3.5 are not installed so they go to the bottom
|
||||
// All recs: cloud first in mixed case, then local, in rec order within each
|
||||
want := recommendedNames()
|
||||
@@ -588,7 +588,7 @@ func TestBuildModelList_LatestTagStripped(t *testing.T) {
|
||||
func TestBuildModelList_ReturnsExistingAndCloudMaps(t *testing.T) {
|
||||
existing := []modelInfo{
|
||||
{Name: "llama3.2:latest", Remote: false},
|
||||
{Name: "glm-5.1:cloud", Remote: true},
|
||||
{Name: "glm-5.2:cloud", Remote: true},
|
||||
}
|
||||
|
||||
_, _, existingModels, cloudModels := buildModelList(existing, nil, "")
|
||||
@@ -596,15 +596,15 @@ func TestBuildModelList_ReturnsExistingAndCloudMaps(t *testing.T) {
|
||||
if !existingModels["llama3.2"] {
|
||||
t.Error("llama3.2 should be in existingModels")
|
||||
}
|
||||
if !existingModels["glm-5.1:cloud"] {
|
||||
t.Error("glm-5.1:cloud should be in existingModels")
|
||||
if !existingModels["glm-5.2:cloud"] {
|
||||
t.Error("glm-5.2:cloud should be in existingModels")
|
||||
}
|
||||
if existingModels["gemma4"] {
|
||||
t.Error("gemma4 should not be in existingModels (it's a recommendation)")
|
||||
}
|
||||
|
||||
if !cloudModels["glm-5.1:cloud"] {
|
||||
t.Error("glm-5.1:cloud should be in cloudModels")
|
||||
if !cloudModels["glm-5.2:cloud"] {
|
||||
t.Error("glm-5.2:cloud should be in cloudModels")
|
||||
}
|
||||
if !cloudModels["kimi-k2.6:cloud"] {
|
||||
t.Error("kimi-k2.6:cloud should be in cloudModels (recommended cloud)")
|
||||
@@ -627,7 +627,7 @@ func TestBuildModelList_RecommendedFieldSet(t *testing.T) {
|
||||
|
||||
for _, item := range items {
|
||||
switch item.Name {
|
||||
case "gemma4", "qwen3.5", "glm-5.1:cloud", "kimi-k2.6:cloud", "qwen3.5:cloud":
|
||||
case "gemma4", "qwen3.5", "glm-5.2:cloud", "kimi-k2.6:cloud", "qwen3.5:cloud":
|
||||
if !item.Recommended {
|
||||
t.Errorf("%q should have Recommended=true", item.Name)
|
||||
}
|
||||
@@ -642,14 +642,14 @@ func TestBuildModelList_RecommendedFieldSet(t *testing.T) {
|
||||
func TestBuildModelList_MixedCase_CloudRecsFirst(t *testing.T) {
|
||||
existing := []modelInfo{
|
||||
{Name: "llama3.2:latest", Remote: false},
|
||||
{Name: "glm-5.1:cloud", Remote: true},
|
||||
{Name: "glm-5.2:cloud", Remote: true},
|
||||
}
|
||||
|
||||
items, _, _, _ := buildModelList(existing, nil, "")
|
||||
got := names(items)
|
||||
|
||||
// Cloud recs should sort before local recs in mixed case
|
||||
cloudIdx := slices.Index(got, "glm-5.1:cloud")
|
||||
cloudIdx := slices.Index(got, "glm-5.2:cloud")
|
||||
localIdx := slices.Index(got, "gemma4")
|
||||
if cloudIdx > localIdx {
|
||||
t.Errorf("cloud recs should be before local recs in mixed case, got %v", got)
|
||||
@@ -666,7 +666,7 @@ func TestBuildModelList_OnlyLocal_CloudRecsStillFirst(t *testing.T) {
|
||||
|
||||
// Cloud recs sort before local recs regardless of installed inventory.
|
||||
localIdx := slices.Index(got, "gemma4")
|
||||
cloudIdx := slices.Index(got, "glm-5.1:cloud")
|
||||
cloudIdx := slices.Index(got, "glm-5.2:cloud")
|
||||
if cloudIdx > localIdx {
|
||||
t.Errorf("cloud recs should be before local recs even when only local models installed, got %v", got)
|
||||
}
|
||||
@@ -685,7 +685,7 @@ func TestBuildModelList_RecsAboveNonRecs(t *testing.T) {
|
||||
lastRecIdx := -1
|
||||
firstNonRecIdx := len(got)
|
||||
for i, name := range got {
|
||||
isRec := name == "gemma4" || name == "qwen3.5" || name == "minimax-m2.7:cloud" || name == "glm-5.1:cloud" || name == "kimi-k2.6:cloud" || name == "qwen3.5:cloud"
|
||||
isRec := name == "gemma4" || name == "qwen3.5" || name == "minimax-m2.7:cloud" || name == "glm-5.2:cloud" || name == "kimi-k2.6:cloud" || name == "qwen3.5:cloud"
|
||||
if isRec && i > lastRecIdx {
|
||||
lastRecIdx = i
|
||||
}
|
||||
@@ -701,10 +701,10 @@ func TestBuildModelList_RecsAboveNonRecs(t *testing.T) {
|
||||
func TestBuildModelList_CheckedRecommendedDoesNotReshuffleRecommendedOrder(t *testing.T) {
|
||||
existing := []modelInfo{
|
||||
{Name: "llama3.2:latest", Remote: false},
|
||||
{Name: "glm-5.1:cloud", Remote: true},
|
||||
{Name: "glm-5.2:cloud", Remote: true},
|
||||
}
|
||||
|
||||
items, _, _, _ := buildModelList(existing, []string{"qwen3.5:cloud", "glm-5.1:cloud"}, "")
|
||||
items, _, _, _ := buildModelList(existing, []string{"qwen3.5:cloud", "glm-5.2:cloud"}, "")
|
||||
got := names(items)
|
||||
|
||||
want := recommendedNames("llama3.2")
|
||||
@@ -718,7 +718,7 @@ func TestBuildModelList_StaleSavedKimiK25DoesNotReshuffleRecommendedOrder(t *tes
|
||||
{Name: "kimi-k2.5:cloud", Remote: true},
|
||||
}
|
||||
|
||||
items, _, _, _ := buildModelList(existing, []string{"kimi-k2.5:cloud", "qwen3.5:cloud", "glm-5.1:cloud", "minimax-m2.7:cloud"}, "kimi-k2.5:cloud")
|
||||
items, _, _, _ := buildModelList(existing, []string{"kimi-k2.5:cloud", "qwen3.5:cloud", "glm-5.2:cloud", "minimax-m2.7:cloud"}, "kimi-k2.5:cloud")
|
||||
got := names(items)
|
||||
|
||||
want := recommendedNames("kimi-k2.5:cloud")
|
||||
@@ -797,7 +797,7 @@ func TestLauncherClientFilterDisabledCloudModels_ChecksStatusOncePerInvocation(t
|
||||
apiClient: api.NewClient(u, srv.Client()),
|
||||
}
|
||||
|
||||
filtered := client.filterDisabledCloudModels(context.Background(), []string{"llama3.2", "glm-5.1:cloud", "qwen3.5:cloud"})
|
||||
filtered := client.filterDisabledCloudModels(context.Background(), []string{"llama3.2", "glm-5.2:cloud", "qwen3.5:cloud"})
|
||||
if diff := cmp.Diff([]string{"llama3.2"}, filtered); diff != "" {
|
||||
t.Fatalf("filtered models mismatch (-want +got):\n%s", diff)
|
||||
}
|
||||
@@ -1067,11 +1067,11 @@ func TestShowOrPullWithPolicy_CloudModelNotFound_FailsEarlyForAllPolicies(t *tes
|
||||
u, _ := url.Parse(srv.URL)
|
||||
client := api.NewClient(u, srv.Client())
|
||||
|
||||
err := showOrPullWithPolicy(context.Background(), client, "glm-5.1:cloud", policy, true)
|
||||
err := showOrPullWithPolicy(context.Background(), client, "glm-5.2:cloud", policy, true)
|
||||
if err == nil {
|
||||
t.Fatalf("expected cloud model not-found error for policy %d", policy)
|
||||
}
|
||||
if !strings.Contains(err.Error(), `model "glm-5.1:cloud" not found`) {
|
||||
if !strings.Contains(err.Error(), `model "glm-5.2:cloud" not found`) {
|
||||
t.Fatalf("expected not-found error for policy %d, got %v", policy, err)
|
||||
}
|
||||
if pullCalled {
|
||||
@@ -1113,7 +1113,7 @@ func TestShowOrPullWithPolicy_CloudModelDisabled_FailsWithCloudDisabledError(t *
|
||||
u, _ := url.Parse(srv.URL)
|
||||
client := api.NewClient(u, srv.Client())
|
||||
|
||||
err := showOrPullWithPolicy(context.Background(), client, "glm-5.1:cloud", policy, true)
|
||||
err := showOrPullWithPolicy(context.Background(), client, "glm-5.2:cloud", policy, true)
|
||||
if err == nil {
|
||||
t.Fatalf("expected cloud disabled error for policy %d", policy)
|
||||
}
|
||||
@@ -1265,11 +1265,11 @@ func TestShowOrPull_CloudModel_NotFoundDoesNotPull(t *testing.T) {
|
||||
u, _ := url.Parse(srv.URL)
|
||||
client := api.NewClient(u, srv.Client())
|
||||
|
||||
err := showOrPullWithPolicy(context.Background(), client, "glm-5.1:cloud", missingModelPromptPull, true)
|
||||
err := showOrPullWithPolicy(context.Background(), client, "glm-5.2:cloud", missingModelPromptPull, true)
|
||||
if err == nil {
|
||||
t.Error("ShowOrPull should return not-found error for cloud model")
|
||||
}
|
||||
if !strings.Contains(err.Error(), `model "glm-5.1:cloud" not found`) {
|
||||
if !strings.Contains(err.Error(), `model "glm-5.2:cloud" not found`) {
|
||||
t.Errorf("expected cloud model not-found error, got: %v", err)
|
||||
}
|
||||
if pullCalled {
|
||||
@@ -1528,7 +1528,7 @@ func TestRecommendedModelsDoNotIncludeRequiredPlanStubs(t *testing.T) {
|
||||
if item := byName["qwen3.5:cloud"]; item.RequiredPlan != "" {
|
||||
t.Fatalf("qwen fallback required plan = %#v", item)
|
||||
}
|
||||
if item := byName["glm-5.1:cloud"]; item.RequiredPlan != "" {
|
||||
if item := byName["glm-5.2:cloud"]; item.RequiredPlan != "" {
|
||||
t.Fatalf("glm fallback required plan = %#v", item)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -975,7 +975,7 @@ func TestLaunchIntegration_ManagedSingleIntegrationCanConfigureWithModelList(t *
|
||||
t.Fatalf("LaunchIntegration returned error: %v", err)
|
||||
}
|
||||
|
||||
if diff := compareStringSlices(runner.configuredModelLists, [][]string{{"gemma4", "kimi-k2.6:cloud", "qwen3.5:cloud", "glm-5.1:cloud", "minimax-m2.7:cloud", "qwen3.5", "qwen3:8b"}}); diff != "" {
|
||||
if diff := compareStringSlices(runner.configuredModelLists, [][]string{{"gemma4", "kimi-k2.6:cloud", "qwen3.5:cloud", "glm-5.2:cloud", "minimax-m2.7:cloud", "qwen3.5", "qwen3:8b"}}); diff != "" {
|
||||
t.Fatalf("configured model list mismatch (-want +got):\n%s", diff)
|
||||
}
|
||||
if diff := compareStrings(runner.configured, []string{"gemma4"}); diff != "" {
|
||||
|
||||
@@ -64,14 +64,14 @@ func TestModelInventoryResolveDoesNotRefreshCloudMiss(t *testing.T) {
|
||||
u, _ := url.Parse(srv.URL)
|
||||
inventory := newModelInventory(api.NewClient(u, srv.Client()))
|
||||
|
||||
got := inventory.Resolve(context.Background(), []string{"glm-5.1:cloud"})
|
||||
got := inventory.Resolve(context.Background(), []string{"glm-5.2:cloud"})
|
||||
if calls != 1 {
|
||||
t.Fatalf("List calls = %d, want 1", calls)
|
||||
}
|
||||
if len(got) != 1 {
|
||||
t.Fatalf("Resolve returned %d models, want 1", len(got))
|
||||
}
|
||||
if got[0].Name != "glm-5.1:cloud" || !got[0].Remote {
|
||||
if got[0].Name != "glm-5.2:cloud" || !got[0].Remote {
|
||||
t.Fatalf("resolved model = %#v, want cloud fallback", got[0])
|
||||
}
|
||||
if got[0].ContextLength <= 0 || got[0].MaxOutputTokens <= 0 {
|
||||
|
||||
@@ -25,7 +25,7 @@ import (
|
||||
var recommendedModels = []ModelItem{
|
||||
{Name: "kimi-k2.6:cloud", Description: "State-of-the-art coding, long-horizon execution, and multimodal agent swarm capability", Recommended: true, Details: api.ModelDetails{ContextLength: 262_144}, MaxOutputTokens: 262_144},
|
||||
{Name: "qwen3.5:cloud", Description: "Reasoning, coding, and agentic tool use with vision", Recommended: true, Details: api.ModelDetails{ContextLength: 262_144}, MaxOutputTokens: 32_768},
|
||||
{Name: "glm-5.1:cloud", Description: "Reasoning and code generation", Recommended: true, Details: api.ModelDetails{ContextLength: 202_752}, MaxOutputTokens: 131_072},
|
||||
{Name: "glm-5.2:cloud", Description: "Reasoning and code generation", Recommended: true, Details: api.ModelDetails{ContextLength: 1_000_000}, MaxOutputTokens: 131_072},
|
||||
{Name: "minimax-m2.7:cloud", Description: "Fast, efficient coding and real-world productivity", Recommended: true, Details: api.ModelDetails{ContextLength: 204_800}, MaxOutputTokens: 128_000},
|
||||
{Name: "gemma4", Description: "Reasoning and code generation locally", Recommended: true, VRAMBytes: 12 * format.GigaByte},
|
||||
{Name: "qwen3.5", Description: "Reasoning, coding, and visual understanding locally", Recommended: true, VRAMBytes: 14 * format.GigaByte},
|
||||
@@ -59,7 +59,7 @@ var extraCloudModelLimits = map[string]cloudModelLimit{
|
||||
"glm-4.6": {Context: 202_752, Output: 131_072},
|
||||
"glm-4.7": {Context: 202_752, Output: 131_072},
|
||||
"glm-5": {Context: 202_752, Output: 131_072},
|
||||
"glm-5.1": {Context: 202_752, Output: 131_072},
|
||||
"glm-5.2": {Context: 1_000_000, Output: 131_072},
|
||||
"gpt-oss:120b": {Context: 131_072, Output: 131_072},
|
||||
"gpt-oss:20b": {Context: 131_072, Output: 131_072},
|
||||
"kimi-k2:1t": {Context: 262_144, Output: 262_144},
|
||||
|
||||
@@ -321,8 +321,8 @@ func TestOMPConfigureWithModelsWritesModelsYML(t *testing.T) {
|
||||
o := &OMP{}
|
||||
models := []LaunchModel{
|
||||
{
|
||||
Name: "glm-5.1:cloud",
|
||||
ContextLength: 202_752,
|
||||
Name: "glm-5.2:cloud",
|
||||
ContextLength: 1_000_000,
|
||||
MaxOutputTokens: 131_072,
|
||||
},
|
||||
{
|
||||
@@ -330,7 +330,7 @@ func TestOMPConfigureWithModelsWritesModelsYML(t *testing.T) {
|
||||
Capabilities: []modelpkg.Capability{modelpkg.CapabilityVision},
|
||||
},
|
||||
}
|
||||
if err := o.ConfigureWithModels("glm-5.1:cloud", models); err != nil {
|
||||
if err := o.ConfigureWithModels("glm-5.2:cloud", models); err != nil {
|
||||
t.Fatalf("ConfigureWithModels returned error: %v", err)
|
||||
}
|
||||
|
||||
@@ -360,11 +360,11 @@ func TestOMPConfigureWithModelsWritesModelsYML(t *testing.T) {
|
||||
if len(entries) != 2 {
|
||||
t.Fatalf("models length = %d, want 2", len(entries))
|
||||
}
|
||||
if entries[0]["id"] != "glm-5.1:cloud" {
|
||||
if entries[0]["id"] != "glm-5.2:cloud" {
|
||||
t.Fatalf("first model id = %v, want primary first", entries[0]["id"])
|
||||
}
|
||||
if got := numericYAMLValue(entries[0]["contextWindow"]); got != 202_752 {
|
||||
t.Fatalf("contextWindow = %d, want 202752", got)
|
||||
if got := numericYAMLValue(entries[0]["contextWindow"]); got != 1_000_000 {
|
||||
t.Fatalf("contextWindow = %d, want 1000000", got)
|
||||
}
|
||||
if got := numericYAMLValue(entries[0]["maxTokens"]); got != 131_072 {
|
||||
t.Fatalf("maxTokens = %d, want 131072", got)
|
||||
@@ -372,8 +372,8 @@ func TestOMPConfigureWithModelsWritesModelsYML(t *testing.T) {
|
||||
if input := stringSliceYAMLValue(entries[1]["input"]); !slices.Equal(input, []string{"text", "image"}) {
|
||||
t.Fatalf("vision input = %v, want [text image]", input)
|
||||
}
|
||||
if got := o.CurrentModel(); got != "glm-5.1:cloud" {
|
||||
t.Fatalf("CurrentModel = %q, want glm-5.1:cloud", got)
|
||||
if got := o.CurrentModel(); got != "glm-5.2:cloud" {
|
||||
t.Fatalf("CurrentModel = %q, want glm-5.2:cloud", got)
|
||||
}
|
||||
|
||||
configPath := filepath.Join(home, ".omp", "agent", "config.yml")
|
||||
|
||||
@@ -303,7 +303,7 @@ func TestLookupCloudModelLimit(t *testing.T) {
|
||||
{"glm-4.7", false, 0, 0},
|
||||
{"glm-4.7:cloud", true, 202_752, 131_072},
|
||||
{"glm-5:cloud", true, 202_752, 131_072},
|
||||
{"glm-5.1:cloud", true, 202_752, 131_072},
|
||||
{"glm-5.2:cloud", true, 1_000_000, 131_072},
|
||||
{"gemma4:31b-cloud", true, 262_144, 131_072},
|
||||
{"gpt-oss:120b-cloud", true, 131_072, 131_072},
|
||||
{"gpt-oss:20b-cloud", true, 131_072, 131_072},
|
||||
|
||||
@@ -247,7 +247,7 @@ Ollama Cloud model retirement does not affect local models.
|
||||
| June 16, 2026 | `kimi-k2-thinking` | `kimi-k2.6` |
|
||||
| June 16, 2026 | `kimi-k2:1t` | `kimi-k2.6` |
|
||||
| June 16, 2026 | `minimax-m2` | `minimax-m3` |
|
||||
| June 16, 2026 | `glm-4.6` | `glm-5.1` |
|
||||
| June 16, 2026 | `glm-4.6` | `glm-5.2` |
|
||||
| June 16, 2026 | `qwen3-next:80b` | `qwen3.5` |
|
||||
| June 16, 2026 | `qwen3-vl:235b` | `qwen3.5` |
|
||||
| June 16, 2026 | `qwen3-vl:235b-instruct` | `qwen3.5` |
|
||||
|
||||
@@ -4,7 +4,7 @@ title: Copilot CLI
|
||||
|
||||
GitHub Copilot CLI is GitHub's AI coding agent for the terminal. It can understand your codebase, make edits, run commands, and help you build software faster.
|
||||
|
||||
Open models can be used with Copilot CLI through Ollama, enabling you to use models such as `qwen3.5`, `glm-5.1:cloud`, `kimi-k2.5:cloud`.
|
||||
Open models can be used with Copilot CLI through Ollama, enabling you to use models such as `qwen3.5`, `glm-5.2:cloud`, `kimi-k2.5:cloud`.
|
||||
|
||||
## Install
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ Ollama handles everything automatically:
|
||||
**Cloud models**:
|
||||
|
||||
- `kimi-k2.5:cloud` — Multimodal reasoning with subagents
|
||||
- `glm-5.1:cloud` — Reasoning and code generation
|
||||
- `glm-5.2:cloud` — Reasoning and code generation
|
||||
- `qwen3.5:cloud` — Reasoning, coding, and agentic tool use with vision
|
||||
- `minimax-m2.7:cloud` — Fast, efficient coding and real-world productivity
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ If the gateway is already running, it restarts automatically to pick up the new
|
||||
|
||||
- `kimi-k2.5:cloud` — Multimodal reasoning with subagents
|
||||
- `qwen3.5:cloud` — Reasoning, coding, and agentic tool use with vision
|
||||
- `glm-5.1:cloud` — Reasoning and code generation
|
||||
- `glm-5.2:cloud` — Reasoning and code generation
|
||||
- `minimax-m2.7:cloud` — Fast, efficient coding and real-world productivity
|
||||
|
||||
**Local models:**
|
||||
|
||||
@@ -372,9 +372,9 @@ var defaultModelRecommendations = []api.ModelRecommendation{
|
||||
MaxOutputTokens: 262_144,
|
||||
},
|
||||
{
|
||||
Model: "glm-5.1:cloud",
|
||||
Model: "glm-5.2:cloud",
|
||||
Description: "Reasoning and code generation",
|
||||
ContextLength: 202_752,
|
||||
ContextLength: 1_000_000,
|
||||
MaxOutputTokens: 131_072,
|
||||
},
|
||||
{
|
||||
|
||||
@@ -25,7 +25,7 @@ import (
|
||||
func TestModelRecommendationsDefaultOrder(t *testing.T) {
|
||||
want := []string{
|
||||
"kimi-k2.6:cloud",
|
||||
"glm-5.1:cloud",
|
||||
"glm-5.2:cloud",
|
||||
"qwen3.5:cloud",
|
||||
"minimax-m2.7:cloud",
|
||||
"gemma4",
|
||||
|
||||
Reference in New Issue
Block a user