fix(ollama): preserve streaming usage compat

This commit is contained in:
Peter Steinberger
2026-04-27 20:30:00 +01:00
parent cff991c88d
commit 930b443c9e
3 changed files with 8 additions and 3 deletions

View File

@@ -261,15 +261,17 @@ describe("ollama provider models", () => {
expect(visionModel.input).toEqual(["text", "image"]);
expect(visionModel.reasoning).toBe(true);
expect(visionModel.compat?.supportsTools).toBe(true);
expect(visionModel.compat?.supportsUsageInStreaming).toBe(true);
const textModel = buildOllamaModelDefinition("glm-5.1:cloud", 202752, ["completion", "tools"]);
expect(textModel.input).toEqual(["text"]);
expect(textModel.reasoning).toBe(false);
expect(textModel.compat?.supportsTools).toBe(true);
expect(textModel.compat?.supportsUsageInStreaming).toBe(true);
const noCapabilities = buildOllamaModelDefinition("unknown-model", 65536);
expect(noCapabilities.input).toEqual(["text"]);
expect(noCapabilities.compat).toBeUndefined();
expect(noCapabilities.compat?.supportsUsageInStreaming).toBe(true);
});
it("disables tool support when Ollama capabilities omit tools", () => {
@@ -277,6 +279,7 @@ describe("ollama provider models", () => {
expect(model.reasoning).toBe(false);
expect(model.compat?.supportsTools).toBe(false);
expect(model.compat?.supportsUsageInStreaming).toBe(true);
});
it("parses the last positive Modelfile num_ctx value", () => {

View File

@@ -249,9 +249,10 @@ export function buildOllamaModelDefinition(
: capabilities.includes("thinking");
const compat =
capabilities === undefined
? undefined
? { supportsUsageInStreaming: true }
: {
supportsTools: capabilities.includes("tools"),
supportsUsageInStreaming: true,
};
return {
id: modelId,
@@ -261,7 +262,7 @@ export function buildOllamaModelDefinition(
cost: OLLAMA_DEFAULT_COST,
contextWindow: contextWindow ?? OLLAMA_DEFAULT_CONTEXT_WINDOW,
maxTokens: OLLAMA_DEFAULT_MAX_TOKENS,
...(compat ? { compat } : {}),
compat,
};
}