mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-10 20:26:10 +00:00
inferParamBFromIdOrName used a consuming trailing boundary `b(?:[^a-z0-9]|$)`,
so when two `<num>b` parameter tokens are separated by a single delimiter
("8b 70b", "8b-70b"), the first match ate the shared delimiter and the second
token's required leading boundary had nothing to match, silently skipping it —
returning the first (often smaller) size instead of the largest. Make the
trailing boundary a non-consuming lookahead.
Co-authored-by: ly-wang19 <ly-wang19@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
27 lines
1.2 KiB
TypeScript
27 lines
1.2 KiB
TypeScript
// Model parameter B tests cover reasoning budget normalization and aliases.
|
|
import { describe, expect, it } from "vitest";
|
|
import { inferParamBFromIdOrName } from "./model-param-b.js";
|
|
|
|
describe("shared/model-param-b", () => {
|
|
it("extracts the largest valid b-sized parameter token", () => {
|
|
expect(inferParamBFromIdOrName("llama-8b mixtral-22b")).toBe(22);
|
|
expect(inferParamBFromIdOrName("Qwen 0.5B Instruct")).toBe(0.5);
|
|
expect(inferParamBFromIdOrName("prefix M7B and q4_32b")).toBe(32);
|
|
expect(inferParamBFromIdOrName("(70b) + m1.5b + qwen-14b")).toBe(70);
|
|
});
|
|
|
|
it("matches both tokens when two are separated by a single delimiter", () => {
|
|
expect(inferParamBFromIdOrName("8b 70b")).toBe(70);
|
|
expect(inferParamBFromIdOrName("8b-70b")).toBe(70);
|
|
expect(inferParamBFromIdOrName("7b-13b")).toBe(13);
|
|
});
|
|
|
|
it("ignores malformed, zero, and non-delimited matches", () => {
|
|
expect(inferParamBFromIdOrName("abc70beta 0b x70b2")).toBeNull();
|
|
expect(inferParamBFromIdOrName("model 0b")).toBeNull();
|
|
expect(inferParamBFromIdOrName("model b5")).toBeNull();
|
|
expect(inferParamBFromIdOrName("foo70bbar")).toBeNull();
|
|
expect(inferParamBFromIdOrName("ab7b model")).toBeNull();
|
|
});
|
|
});
|