@carlonicora/nestjs-neo4jsonapi 1.112.2 → 1.113.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/operator/services/operator.service.d.ts.map +1 -1
- package/dist/agents/operator/services/operator.service.js.map +1 -1
- package/dist/config/base.config.d.ts.map +1 -1
- package/dist/config/base.config.js +1 -0
- package/dist/config/base.config.js.map +1 -1
- package/dist/config/interfaces/config.ai.interface.d.ts +6 -0
- package/dist/config/interfaces/config.ai.interface.d.ts.map +1 -1
- package/dist/core/jsonapi/serialisers/descriptor.based.serialiser.d.ts.map +1 -1
- package/dist/core/jsonapi/serialisers/descriptor.based.serialiser.js +6 -0
- package/dist/core/jsonapi/serialisers/descriptor.based.serialiser.js.map +1 -1
- package/dist/core/llm/common/llm-raw-response.d.ts +4 -0
- package/dist/core/llm/common/llm-raw-response.d.ts.map +1 -1
- package/dist/core/llm/common/llm-raw-response.js.map +1 -1
- package/dist/core/llm/enums/reasoning.effort.d.ts +14 -0
- package/dist/core/llm/enums/reasoning.effort.d.ts.map +1 -0
- package/dist/core/llm/enums/reasoning.effort.js +3 -0
- package/dist/core/llm/enums/reasoning.effort.js.map +1 -0
- package/dist/core/llm/index.d.ts +1 -0
- package/dist/core/llm/index.d.ts.map +1 -1
- package/dist/core/llm/index.js +1 -0
- package/dist/core/llm/index.js.map +1 -1
- package/dist/core/llm/services/llm.service.d.ts +13 -0
- package/dist/core/llm/services/llm.service.d.ts.map +1 -1
- package/dist/core/llm/services/llm.service.js +192 -21
- package/dist/core/llm/services/llm.service.js.map +1 -1
- package/dist/core/llm/services/model.service.d.ts +37 -0
- package/dist/core/llm/services/model.service.d.ts.map +1 -1
- package/dist/core/llm/services/model.service.js +94 -5
- package/dist/core/llm/services/model.service.js.map +1 -1
- package/dist/core/llm/services/unsupported-param-fetch.d.ts +47 -0
- package/dist/core/llm/services/unsupported-param-fetch.d.ts.map +1 -0
- package/dist/core/llm/services/unsupported-param-fetch.js +195 -0
- package/dist/core/llm/services/unsupported-param-fetch.js.map +1 -0
- package/dist/core/llm/utils/schema.utils.d.ts +89 -0
- package/dist/core/llm/utils/schema.utils.d.ts.map +1 -1
- package/dist/core/llm/utils/schema.utils.js +210 -3
- package/dist/core/llm/utils/schema.utils.js.map +1 -1
- package/dist/foundations/chunker/services/types/pdf/interfaces/pdf-element.interface.d.ts.map +1 -1
- package/dist/foundations/rbac/dsl/types.d.ts.map +1 -1
- package/dist/foundations/rbac/dsl/types.js.map +1 -1
- package/dist/foundations/stripe-subscription/entities/stripe-subscription.entity.d.ts.map +1 -1
- package/package.json +67 -67
|
@@ -7,6 +7,7 @@ import OpenAI, { AzureOpenAI } from "openai";
|
|
|
7
7
|
import { BaseConfigInterface, ConfigAiInterface } from "../../../config/interfaces";
|
|
8
8
|
import { AppLoggingService } from "../../logging/services/logging.service";
|
|
9
9
|
import { ModelWeight } from "../enums/model.weight";
|
|
10
|
+
import { ReasoningEffort } from "../enums/reasoning.effort";
|
|
10
11
|
import { EmbedderTokenBucketService } from "./embedder-token-bucket.service";
|
|
11
12
|
/**
|
|
12
13
|
* Securely materialises Google Vertex credentials to a temp file.
|
|
@@ -38,6 +39,22 @@ export declare function writeGcpCredentials(decodedCredentials: string, tag: str
|
|
|
38
39
|
* @throws {Error} if the URL fails any check.
|
|
39
40
|
*/
|
|
40
41
|
export declare function validateAiUrl(url: string, provider: string): void;
|
|
42
|
+
/**
|
|
43
|
+
* Narrows a CONFIG-sourced reasoning effort to the allowed set.
|
|
44
|
+
*
|
|
45
|
+
* `AI_REASONING_EFFORT` reaches this code as a free-form string, and a typo
|
|
46
|
+
* (`AI_REASONING_EFFORT=lwo`) would otherwise be cast straight onto the wire. The
|
|
47
|
+
* provider answers 400 `unsupported_value`, which `unsupportedParamFetch` then
|
|
48
|
+
* remembers for that (parameter, value) pair — one wasted round-trip per distinct
|
|
49
|
+
* typo, and an effort silently degraded to the provider default for the rest of the
|
|
50
|
+
* process. Rejecting it here keeps the misconfiguration visible and costs nothing.
|
|
51
|
+
*
|
|
52
|
+
* Per-call values are NOT routed through this: those are typed `ReasoningEffort` at
|
|
53
|
+
* the call site, so the compiler already guarantees them.
|
|
54
|
+
*
|
|
55
|
+
* @returns the effort when recognised, otherwise undefined (tier default unset).
|
|
56
|
+
*/
|
|
57
|
+
export declare function normaliseConfiguredReasoningEffort(value: unknown): ReasoningEffort | undefined;
|
|
41
58
|
export declare class ModelService implements OnModuleInit {
|
|
42
59
|
private readonly clsService;
|
|
43
60
|
private readonly configService;
|
|
@@ -62,6 +79,21 @@ export declare class ModelService implements OnModuleInit {
|
|
|
62
79
|
* Undefined / Normal → `ai`; Lite → `aiLite`; Large → `aiLarge`.
|
|
63
80
|
*/
|
|
64
81
|
getResolvedConfig(weight?: ModelWeight): ConfigAiInterface["ai"];
|
|
82
|
+
/**
|
|
83
|
+
* Whether this tier's provider honours OpenAI's STRICT structured-output mode.
|
|
84
|
+
*
|
|
85
|
+
* Only the OpenAI-compatible chat-completions family enforces `strict`.
|
|
86
|
+
* `ChatGoogleBase.withStructuredOutput` ignores the flag outright, so on Vertex
|
|
87
|
+
* a strict-shaped schema costs the model an explicit null for every optional
|
|
88
|
+
* field and returns no guarantee in exchange — verified against a live
|
|
89
|
+
* gemini-2.5-flash-lite deployment, which accepts both shapes.
|
|
90
|
+
*
|
|
91
|
+
* Answered from the tier's PROVIDER, which this service already owns, rather
|
|
92
|
+
* than `instanceof ChatOpenAI`: `instanceof` fails silently when two copies of
|
|
93
|
+
* `@langchain/openai` resolve, which is exactly the dual-instance hazard the
|
|
94
|
+
* July 2026 dependency sweep removed.
|
|
95
|
+
*/
|
|
96
|
+
supportsStrictStructuredOutput(weight?: ModelWeight): boolean;
|
|
65
97
|
/**
|
|
66
98
|
* Gets a configured LLM instance based on the current config.
|
|
67
99
|
*
|
|
@@ -89,7 +121,12 @@ export declare class ModelService implements OnModuleInit {
|
|
|
89
121
|
maxOutputTokens?: number;
|
|
90
122
|
frequencyPenalty?: number;
|
|
91
123
|
modelWeight?: ModelWeight;
|
|
124
|
+
/**
|
|
125
|
+
* @deprecated Use `reasoningEffort: "none"` instead. Kept as a working alias
|
|
126
|
+
* for backward compatibility — a published-library API is never removed.
|
|
127
|
+
*/
|
|
92
128
|
disableThinking?: boolean;
|
|
129
|
+
reasoningEffort?: ReasoningEffort;
|
|
93
130
|
/** Per-attempt request budget in ms. Defaults to `ai.requestTimeoutMs`. */
|
|
94
131
|
timeoutMs?: number;
|
|
95
132
|
}): BaseChatModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.service.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/services/model.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAI5E,OAAO,EAAc,YAAY,EAAY,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAK/C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"model.service.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/services/model.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,6 +48,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
48
48
|
exports.ModelService = void 0;
|
|
49
49
|
exports.writeGcpCredentials = writeGcpCredentials;
|
|
50
50
|
exports.validateAiUrl = validateAiUrl;
|
|
51
|
+
exports.normaliseConfiguredReasoningEffort = normaliseConfiguredReasoningEffort;
|
|
51
52
|
const testing_1 = require("@langchain/core/utils/testing");
|
|
52
53
|
const google_vertexai_1 = require("@langchain/google-vertexai");
|
|
53
54
|
const openai_1 = require("@langchain/openai");
|
|
@@ -64,6 +65,7 @@ const model_weight_1 = require("../enums/model.weight");
|
|
|
64
65
|
const embedder_token_bucket_service_1 = require("./embedder-token-bucket.service");
|
|
65
66
|
const openrouter_fetch_1 = require("./openrouter-fetch");
|
|
66
67
|
const rate_limited_embedder_1 = require("./rate-limited-embedder");
|
|
68
|
+
const unsupported_param_fetch_1 = require("./unsupported-param-fetch");
|
|
67
69
|
/**
|
|
68
70
|
* Tracks GCP credential temp files written this process so they can be removed
|
|
69
71
|
* on exit. Each path is UUID-unique (see {@link writeGcpCredentials}).
|
|
@@ -143,6 +145,32 @@ function validateAiUrl(url, provider) {
|
|
|
143
145
|
throw new Error(`AI_URL hostname "${parsed.hostname}" not in allowlist`);
|
|
144
146
|
}
|
|
145
147
|
}
|
|
148
|
+
/** The complete set of values {@link ReasoningEffort} allows. */
|
|
149
|
+
const REASONING_EFFORTS = new Set(["none", "minimal", "low", "medium", "high"]);
|
|
150
|
+
/**
|
|
151
|
+
* Narrows a CONFIG-sourced reasoning effort to the allowed set.
|
|
152
|
+
*
|
|
153
|
+
* `AI_REASONING_EFFORT` reaches this code as a free-form string, and a typo
|
|
154
|
+
* (`AI_REASONING_EFFORT=lwo`) would otherwise be cast straight onto the wire. The
|
|
155
|
+
* provider answers 400 `unsupported_value`, which `unsupportedParamFetch` then
|
|
156
|
+
* remembers for that (parameter, value) pair — one wasted round-trip per distinct
|
|
157
|
+
* typo, and an effort silently degraded to the provider default for the rest of the
|
|
158
|
+
* process. Rejecting it here keeps the misconfiguration visible and costs nothing.
|
|
159
|
+
*
|
|
160
|
+
* Per-call values are NOT routed through this: those are typed `ReasoningEffort` at
|
|
161
|
+
* the call site, so the compiler already guarantees them.
|
|
162
|
+
*
|
|
163
|
+
* @returns the effort when recognised, otherwise undefined (tier default unset).
|
|
164
|
+
*/
|
|
165
|
+
function normaliseConfiguredReasoningEffort(value) {
|
|
166
|
+
if (value === undefined || value === null || value === "")
|
|
167
|
+
return undefined;
|
|
168
|
+
if (typeof value === "string" && REASONING_EFFORTS.has(value))
|
|
169
|
+
return value;
|
|
170
|
+
console.warn(`[ModelService] ignoring unrecognised reasoning effort ${JSON.stringify(value)} — ` +
|
|
171
|
+
`expected one of ${[...REASONING_EFFORTS].join(", ")}`);
|
|
172
|
+
return undefined;
|
|
173
|
+
}
|
|
146
174
|
let ModelService = class ModelService {
|
|
147
175
|
constructor(clsService, configService, bucket, logger) {
|
|
148
176
|
this.clsService = clsService;
|
|
@@ -186,6 +214,23 @@ let ModelService = class ModelService {
|
|
|
186
214
|
return this.aiConfig.ai;
|
|
187
215
|
}
|
|
188
216
|
}
|
|
217
|
+
/**
|
|
218
|
+
* Whether this tier's provider honours OpenAI's STRICT structured-output mode.
|
|
219
|
+
*
|
|
220
|
+
* Only the OpenAI-compatible chat-completions family enforces `strict`.
|
|
221
|
+
* `ChatGoogleBase.withStructuredOutput` ignores the flag outright, so on Vertex
|
|
222
|
+
* a strict-shaped schema costs the model an explicit null for every optional
|
|
223
|
+
* field and returns no guarantee in exchange — verified against a live
|
|
224
|
+
* gemini-2.5-flash-lite deployment, which accepts both shapes.
|
|
225
|
+
*
|
|
226
|
+
* Answered from the tier's PROVIDER, which this service already owns, rather
|
|
227
|
+
* than `instanceof ChatOpenAI`: `instanceof` fails silently when two copies of
|
|
228
|
+
* `@langchain/openai` resolve, which is exactly the dual-instance hazard the
|
|
229
|
+
* July 2026 dependency sweep removed.
|
|
230
|
+
*/
|
|
231
|
+
supportsStrictStructuredOutput(weight) {
|
|
232
|
+
return this.getResolvedConfig(weight).provider !== "vertex";
|
|
233
|
+
}
|
|
189
234
|
/**
|
|
190
235
|
* Gets a configured LLM instance based on the current config.
|
|
191
236
|
*
|
|
@@ -215,12 +260,22 @@ let ModelService = class ModelService {
|
|
|
215
260
|
const temperature = params?.temperature ?? 0.2;
|
|
216
261
|
const cfg = this.getResolvedConfig(params?.modelWeight);
|
|
217
262
|
const maxOutputTokens = params?.maxOutputTokens ?? cfg.maxOutputTokens;
|
|
263
|
+
// Precedence (Shared Contracts, plan 2026-07-31-llm-latency-and-structured-output):
|
|
264
|
+
// an explicit per-call `reasoningEffort` wins; failing that, the equally
|
|
265
|
+
// explicit per-call `disableThinking` (the older boolean spelling of "none")
|
|
266
|
+
// wins over the tier default — a per-call signal must never be silently
|
|
267
|
+
// overridden by config, matching `temperature`/`maxOutputTokens` elsewhere in
|
|
268
|
+
// this method. Only when the call passes neither does the tier default apply.
|
|
269
|
+
const resolvedReasoningEffort = params?.reasoningEffort ??
|
|
270
|
+
(params?.disableThinking ? "none" : undefined) ??
|
|
271
|
+
normaliseConfiguredReasoningEffort(cfg.reasoningEffort);
|
|
218
272
|
return this.buildChatModel(cfg, {
|
|
219
273
|
temperature,
|
|
220
274
|
maxOutputTokens,
|
|
221
275
|
frequencyPenalty: params?.frequencyPenalty,
|
|
222
276
|
credentialFileTag: "llm",
|
|
223
277
|
disableThinking: params?.disableThinking,
|
|
278
|
+
reasoningEffort: resolvedReasoningEffort,
|
|
224
279
|
timeoutMs: params?.timeoutMs ?? this.aiConfig.requestTimeoutMs,
|
|
225
280
|
});
|
|
226
281
|
}
|
|
@@ -251,9 +306,10 @@ let ModelService = class ModelService {
|
|
|
251
306
|
// deployments. Ignored for non-reasoning models.
|
|
252
307
|
const visionModelLower = (visionConfig.model || "").toLowerCase();
|
|
253
308
|
const isReasoningVisionModel = visionModelLower.includes("gpt-5") || /(^|\/)o\d/.test(visionModelLower);
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
309
|
+
// Config-sourced, so validated exactly like the chat tiers' effort — the vision
|
|
310
|
+
// block reads its own `VISION_REASONING_EFFORT` and is just as typo-prone.
|
|
311
|
+
const visionEffort = normaliseConfiguredReasoningEffort(visionConfig.reasoningEffort);
|
|
312
|
+
const modelKwargs = isReasoningVisionModel && visionEffort ? { reasoning_effort: visionEffort } : undefined;
|
|
257
313
|
return this.buildChatModel(visionConfig, { temperature, credentialFileTag: "vision", modelKwargs });
|
|
258
314
|
}
|
|
259
315
|
/**
|
|
@@ -282,6 +338,24 @@ let ModelService = class ModelService {
|
|
|
282
338
|
// tiers that never pass an explicit budget — an unbounded request is the
|
|
283
339
|
// silent-stall bug, whatever the modality.
|
|
284
340
|
const timeoutMs = opts.timeoutMs ?? this.aiConfig?.requestTimeoutMs;
|
|
341
|
+
// Identifies the deployment whose parameter verdicts we learn (see
|
|
342
|
+
// unsupportedParamFetch). Endpoint-qualified: the same model name behind two
|
|
343
|
+
// providers can accept two different parameter sets.
|
|
344
|
+
const modelKey = [cfg.provider, cfg.instance ?? cfg.url, cfg.model].filter(Boolean).join("|");
|
|
345
|
+
// Resolved ONCE, into `llmConfig.modelKwargs`, so every provider branch below
|
|
346
|
+
// picks it up from the same place.
|
|
347
|
+
//
|
|
348
|
+
// It used to be spread into the generic `new ChatOpenAI({...})` at the bottom
|
|
349
|
+
// of this method — which the `azure` branch never reaches, because it returns
|
|
350
|
+
// early. The effect was that `reasoningEffort` was silently dropped on Azure,
|
|
351
|
+
// i.e. on the one provider this project actually runs, while the unit tests
|
|
352
|
+
// (which build an `openrouter` tier) all passed. Any per-request parameter
|
|
353
|
+
// added here must go into `llmConfig`, never into a single branch's return.
|
|
354
|
+
const effort = opts.reasoningEffort ?? (opts.disableThinking ? "none" : undefined);
|
|
355
|
+
const modelKwargs = {
|
|
356
|
+
...(opts.modelKwargs ?? {}),
|
|
357
|
+
...(effort ? { reasoning_effort: effort } : {}),
|
|
358
|
+
};
|
|
285
359
|
const llmConfig = {
|
|
286
360
|
apiKey: cfg.apiKey || "not-needed",
|
|
287
361
|
temperature,
|
|
@@ -289,7 +363,7 @@ let ModelService = class ModelService {
|
|
|
289
363
|
configuration: {
|
|
290
364
|
baseURL: cfg.url || "http://localhost:8033/v1",
|
|
291
365
|
},
|
|
292
|
-
...(
|
|
366
|
+
...(Object.keys(modelKwargs).length > 0 ? { modelKwargs } : {}),
|
|
293
367
|
...(timeoutMs ? { timeout: timeoutMs } : {}),
|
|
294
368
|
};
|
|
295
369
|
switch (cfg.provider) {
|
|
@@ -350,10 +424,20 @@ let ModelService = class ModelService {
|
|
|
350
424
|
azureOpenAIApiInstanceName: cfg.instance,
|
|
351
425
|
azureOpenAIApiDeploymentName: cfg.model,
|
|
352
426
|
azureOpenAIApiVersion: cfg.apiVersion,
|
|
427
|
+
// The deployment name builds the URL — it never reaches the parameter
|
|
428
|
+
// mapping. Without `model` LangChain falls back to its "gpt-3.5-turbo"
|
|
429
|
+
// default and picks the request shape from THAT, sending `max_tokens`
|
|
430
|
+
// to a gpt-5 deployment (400 — "Use 'max_completion_tokens' instead").
|
|
431
|
+
// Azure ignores the body's `model`, so this is purely a client-side
|
|
432
|
+
// signal about which model the deployment actually serves.
|
|
433
|
+
model: cfg.model,
|
|
353
434
|
temperature,
|
|
354
435
|
...(timeoutMs ? { timeout: timeoutMs } : {}),
|
|
355
436
|
...(maxOutputTokens ? { maxTokens: maxOutputTokens } : {}),
|
|
356
437
|
...(llmConfig.modelKwargs ? { modelKwargs: llmConfig.modelKwargs } : {}),
|
|
438
|
+
// ONLY `fetch` — a `baseURL` here would override the Azure endpoint
|
|
439
|
+
// that azureOpenAIApiInstanceName/DeploymentName build.
|
|
440
|
+
configuration: { fetch: (0, unsupported_param_fetch_1.unsupportedParamFetch)(modelKey) },
|
|
357
441
|
};
|
|
358
442
|
return new openai_1.AzureChatOpenAI(azureParameters);
|
|
359
443
|
}
|
|
@@ -371,6 +455,12 @@ let ModelService = class ModelService {
|
|
|
371
455
|
}
|
|
372
456
|
return new openai_1.ChatOpenAI({
|
|
373
457
|
...llmConfig,
|
|
458
|
+
configuration: {
|
|
459
|
+
...llmConfig.configuration,
|
|
460
|
+
// Wraps whatever the provider switch installed (the OpenRouter pin
|
|
461
|
+
// included) rather than replacing it.
|
|
462
|
+
fetch: (0, unsupported_param_fetch_1.unsupportedParamFetch)(modelKey, llmConfig.configuration.fetch),
|
|
463
|
+
},
|
|
374
464
|
// 1 hard attempt + 2 soft retries. Retries escalate the OpenRouter pin
|
|
375
465
|
// (see openRouterEscalatingFetch) so a transient provider error can reroute.
|
|
376
466
|
maxRetries: 2,
|
|
@@ -380,7 +470,6 @@ let ModelService = class ModelService {
|
|
|
380
470
|
// memory extractor emitting `{op:"ADD",...}` endlessly). Maps to OpenAI's
|
|
381
471
|
// `frequency_penalty`, honoured by the Ollama/llamacpp OpenAI-compatible APIs.
|
|
382
472
|
...(typeof frequencyPenalty === "number" ? { frequencyPenalty } : {}),
|
|
383
|
-
...(opts.disableThinking ? { modelKwargs: { ...(llmConfig.modelKwargs ?? {}), reasoning_effort: "none" } } : {}),
|
|
384
473
|
});
|
|
385
474
|
}
|
|
386
475
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.service.js","sourceRoot":"","sources":["../../../../src/core/llm/services/model.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"model.service.js","sourceRoot":"","sources":["../../../../src/core/llm/services/model.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider-truth-driven request repair for OpenAI-compatible endpoints.
|
|
3
|
+
*
|
|
4
|
+
* Model families disagree about which chat-completions parameters they accept:
|
|
5
|
+
* OpenAI's reasoning models (o-series, gpt-5 except gpt-5-chat) reject
|
|
6
|
+
* `max_tokens`, `frequency_penalty` and `presence_penalty` outright, and reject
|
|
7
|
+
* any non-default `temperature` / `top_p`. Encoding that taxonomy here would
|
|
8
|
+
* duplicate knowledge we do not own and would rot on every model release — and
|
|
9
|
+
* it cannot be complete anyway, because an Azure deployment name is chosen by
|
|
10
|
+
* whoever created it ("prod-llm" tells us nothing about the model behind it).
|
|
11
|
+
*
|
|
12
|
+
* So we let the provider tell us. A 400 names the offending parameter exactly:
|
|
13
|
+
*
|
|
14
|
+
* { error: { code: "unsupported_parameter", param: "max_tokens",
|
|
15
|
+
* message: "... Use 'max_completion_tokens' instead." } }
|
|
16
|
+
* { error: { code: "unsupported_value", param: "temperature",
|
|
17
|
+
* message: "... Only the default (1) value is supported." } }
|
|
18
|
+
*
|
|
19
|
+
* This middleware removes the named parameter, retries once per rejection, and
|
|
20
|
+
* REMEMBERS the verdict per model for the rest of the process, so only the first
|
|
21
|
+
* call to a given deployment pays the extra round-trip.
|
|
22
|
+
*
|
|
23
|
+
* The two codes are remembered at DIFFERENT scopes, because they say different
|
|
24
|
+
* things. `unsupported_parameter` means the deployment does not know the parameter
|
|
25
|
+
* at all, so it is dropped from every later request. `unsupported_value` means only
|
|
26
|
+
* the value sent was refused — the parameter itself is fine. Remembering the latter
|
|
27
|
+
* as a parameter-level drop is actively harmful: one call sending
|
|
28
|
+
* `reasoning_effort: "none"` to a deployment that only knows low/medium/high would
|
|
29
|
+
* otherwise strip `reasoning_effort` from EVERY later request, silently discarding
|
|
30
|
+
* the `"low"` latency win the triage/retrieval/citation-audit nodes depend on. So a
|
|
31
|
+
* value rejection is memoised against the (parameter, value) pair, and a later
|
|
32
|
+
* request carrying a different value for the same parameter is still sent.
|
|
33
|
+
*/
|
|
34
|
+
/** Test seam — clears everything learned so far. */
|
|
35
|
+
export declare function resetLearnedUnsupportedParams(): void;
|
|
36
|
+
/**
|
|
37
|
+
* Wraps `fetch` so a rejected chat-completions parameter repairs itself.
|
|
38
|
+
*
|
|
39
|
+
* @param modelKey - Identifies the deployment the verdicts belong to. Two
|
|
40
|
+
* deployments of the same model name on different endpoints get separate
|
|
41
|
+
* entries, so one provider's rejection never suppresses a parameter another
|
|
42
|
+
* provider accepts.
|
|
43
|
+
* @param inner - The fetch to wrap. Composes with other middleware — passing
|
|
44
|
+
* `openRouterEscalatingFetch(...)` keeps its provider pinning intact.
|
|
45
|
+
*/
|
|
46
|
+
export declare function unsupportedParamFetch(modelKey: string, inner?: typeof fetch): typeof fetch;
|
|
47
|
+
//# sourceMappingURL=unsupported-param-fetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unsupported-param-fetch.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/services/unsupported-param-fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AA4CH,oDAAoD;AACpD,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAiFD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,GAAG,OAAO,KAAK,CA0C1F"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Provider-truth-driven request repair for OpenAI-compatible endpoints.
|
|
4
|
+
*
|
|
5
|
+
* Model families disagree about which chat-completions parameters they accept:
|
|
6
|
+
* OpenAI's reasoning models (o-series, gpt-5 except gpt-5-chat) reject
|
|
7
|
+
* `max_tokens`, `frequency_penalty` and `presence_penalty` outright, and reject
|
|
8
|
+
* any non-default `temperature` / `top_p`. Encoding that taxonomy here would
|
|
9
|
+
* duplicate knowledge we do not own and would rot on every model release — and
|
|
10
|
+
* it cannot be complete anyway, because an Azure deployment name is chosen by
|
|
11
|
+
* whoever created it ("prod-llm" tells us nothing about the model behind it).
|
|
12
|
+
*
|
|
13
|
+
* So we let the provider tell us. A 400 names the offending parameter exactly:
|
|
14
|
+
*
|
|
15
|
+
* { error: { code: "unsupported_parameter", param: "max_tokens",
|
|
16
|
+
* message: "... Use 'max_completion_tokens' instead." } }
|
|
17
|
+
* { error: { code: "unsupported_value", param: "temperature",
|
|
18
|
+
* message: "... Only the default (1) value is supported." } }
|
|
19
|
+
*
|
|
20
|
+
* This middleware removes the named parameter, retries once per rejection, and
|
|
21
|
+
* REMEMBERS the verdict per model for the rest of the process, so only the first
|
|
22
|
+
* call to a given deployment pays the extra round-trip.
|
|
23
|
+
*
|
|
24
|
+
* The two codes are remembered at DIFFERENT scopes, because they say different
|
|
25
|
+
* things. `unsupported_parameter` means the deployment does not know the parameter
|
|
26
|
+
* at all, so it is dropped from every later request. `unsupported_value` means only
|
|
27
|
+
* the value sent was refused — the parameter itself is fine. Remembering the latter
|
|
28
|
+
* as a parameter-level drop is actively harmful: one call sending
|
|
29
|
+
* `reasoning_effort: "none"` to a deployment that only knows low/medium/high would
|
|
30
|
+
* otherwise strip `reasoning_effort` from EVERY later request, silently discarding
|
|
31
|
+
* the `"low"` latency win the triage/retrieval/citation-audit nodes depend on. So a
|
|
32
|
+
* value rejection is memoised against the (parameter, value) pair, and a later
|
|
33
|
+
* request carrying a different value for the same parameter is still sent.
|
|
34
|
+
*/
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.resetLearnedUnsupportedParams = resetLearnedUnsupportedParams;
|
|
37
|
+
exports.unsupportedParamFetch = unsupportedParamFetch;
|
|
38
|
+
/**
|
|
39
|
+
* Parameters that are not merely unsupported but RENAMED — dropping them would
|
|
40
|
+
* silently discard the caller's intent (an unbounded response instead of a
|
|
41
|
+
* capped one). This is parameter-level knowledge, stable across the whole
|
|
42
|
+
* OpenAI-compatible ecosystem, NOT a per-model taxonomy: it is only ever applied
|
|
43
|
+
* when the provider has already rejected the original name.
|
|
44
|
+
*/
|
|
45
|
+
const PARAM_SUCCESSORS = {
|
|
46
|
+
max_tokens: "max_completion_tokens",
|
|
47
|
+
};
|
|
48
|
+
/** Bounds the repair loop: the API reports ONE rejected parameter per response,
|
|
49
|
+
* so a request carrying several needs one round-trip each. */
|
|
50
|
+
const MAX_REPAIRS = 6;
|
|
51
|
+
const UNSUPPORTED_CODES = new Set(["unsupported_parameter", "unsupported_value"]);
|
|
52
|
+
/** Canonical key for a parameter value, so `"none"` and `0.2` compare reliably. */
|
|
53
|
+
const valueKey = (value) => JSON.stringify(value ?? null);
|
|
54
|
+
/**
|
|
55
|
+
* Learned verdicts, keyed by model. Module-level on purpose: `ModelService`
|
|
56
|
+
* builds a fresh chat model per call, so anything held on the instance would
|
|
57
|
+
* re-learn (and re-pay the failed round-trip) on every request.
|
|
58
|
+
*
|
|
59
|
+
* model key → (rejected parameter → verdict)
|
|
60
|
+
*/
|
|
61
|
+
const learned = new Map();
|
|
62
|
+
/** Test seam — clears everything learned so far. */
|
|
63
|
+
function resetLearnedUnsupportedParams() {
|
|
64
|
+
learned.clear();
|
|
65
|
+
}
|
|
66
|
+
/** Applies the verdicts learned so far for `modelKey`. Returns the body
|
|
67
|
+
* unchanged when nothing is known yet or the body is not JSON. */
|
|
68
|
+
function applyLearned(bodyStr, modelKey) {
|
|
69
|
+
const verdicts = learned.get(modelKey);
|
|
70
|
+
if (!verdicts?.size)
|
|
71
|
+
return bodyStr;
|
|
72
|
+
try {
|
|
73
|
+
const body = JSON.parse(bodyStr);
|
|
74
|
+
let changed = false;
|
|
75
|
+
for (const [param, verdict] of verdicts) {
|
|
76
|
+
if (!(param in body))
|
|
77
|
+
continue;
|
|
78
|
+
const value = body[param];
|
|
79
|
+
// A value-scoped verdict must not touch a request carrying a value the
|
|
80
|
+
// deployment has never refused — that value may well be accepted.
|
|
81
|
+
if (verdict.values && !verdict.values.has(valueKey(value)))
|
|
82
|
+
continue;
|
|
83
|
+
delete body[param];
|
|
84
|
+
if (verdict.successor)
|
|
85
|
+
body[verdict.successor] = value;
|
|
86
|
+
changed = true;
|
|
87
|
+
}
|
|
88
|
+
return changed ? JSON.stringify(body) : bodyStr;
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return bodyStr;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/** Records a verdict, widening an existing entry rather than narrowing it: a
|
|
95
|
+
* parameter-level rejection always supersedes value-level ones, and a second
|
|
96
|
+
* rejected value joins the set instead of replacing it. */
|
|
97
|
+
function rememberVerdict(modelKey, param, verdict) {
|
|
98
|
+
const verdicts = learned.get(modelKey) ?? new Map();
|
|
99
|
+
const existing = verdicts.get(param);
|
|
100
|
+
if (existing && !verdict.values) {
|
|
101
|
+
// Parameter-level wins outright.
|
|
102
|
+
verdicts.set(param, verdict);
|
|
103
|
+
}
|
|
104
|
+
else if (existing?.values && verdict.values) {
|
|
105
|
+
for (const value of verdict.values)
|
|
106
|
+
existing.values.add(value);
|
|
107
|
+
}
|
|
108
|
+
else if (!existing) {
|
|
109
|
+
verdicts.set(param, verdict);
|
|
110
|
+
}
|
|
111
|
+
// existing is parameter-level and the new verdict is value-level → already covered.
|
|
112
|
+
learned.set(modelKey, verdicts);
|
|
113
|
+
}
|
|
114
|
+
/** Reads the rejected-parameter verdict out of a 400 payload. Returns undefined
|
|
115
|
+
* when the error is anything other than a rejected top-level parameter that the
|
|
116
|
+
* request actually carried — we only repair what we can prove we caused. */
|
|
117
|
+
function readVerdict(responseText, bodyStr) {
|
|
118
|
+
let param;
|
|
119
|
+
let code;
|
|
120
|
+
try {
|
|
121
|
+
const error = JSON.parse(responseText)?.error;
|
|
122
|
+
param = error?.param;
|
|
123
|
+
code = error?.code;
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
return undefined;
|
|
127
|
+
}
|
|
128
|
+
if (typeof param !== "string" || !param || typeof code !== "string" || !UNSUPPORTED_CODES.has(code))
|
|
129
|
+
return undefined;
|
|
130
|
+
let rejectedValue;
|
|
131
|
+
try {
|
|
132
|
+
const body = JSON.parse(bodyStr);
|
|
133
|
+
if (!(param in body))
|
|
134
|
+
return undefined;
|
|
135
|
+
rejectedValue = body[param];
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
// The successor rename applies to both codes: a rejected `max_tokens` value still
|
|
141
|
+
// means the cap belongs in `max_completion_tokens`, never that it should vanish.
|
|
142
|
+
const successor = PARAM_SUCCESSORS[param] ?? null;
|
|
143
|
+
return {
|
|
144
|
+
param,
|
|
145
|
+
rejectedValue,
|
|
146
|
+
verdict: code === "unsupported_value" ? { successor, values: new Set([valueKey(rejectedValue)]) } : { successor },
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Wraps `fetch` so a rejected chat-completions parameter repairs itself.
|
|
151
|
+
*
|
|
152
|
+
* @param modelKey - Identifies the deployment the verdicts belong to. Two
|
|
153
|
+
* deployments of the same model name on different endpoints get separate
|
|
154
|
+
* entries, so one provider's rejection never suppresses a parameter another
|
|
155
|
+
* provider accepts.
|
|
156
|
+
* @param inner - The fetch to wrap. Composes with other middleware — passing
|
|
157
|
+
* `openRouterEscalatingFetch(...)` keeps its provider pinning intact.
|
|
158
|
+
*/
|
|
159
|
+
function unsupportedParamFetch(modelKey, inner) {
|
|
160
|
+
// Resolved per call, never captured at construction: binding the global here
|
|
161
|
+
// would freeze whatever `fetch` existed when the model was built.
|
|
162
|
+
const send = (input, init) => (inner ?? fetch)(input, init);
|
|
163
|
+
return (async (input, init) => {
|
|
164
|
+
if (typeof init?.body !== "string")
|
|
165
|
+
return send(input, init);
|
|
166
|
+
let body = applyLearned(init.body, modelKey);
|
|
167
|
+
let response = await send(input, { ...init, body });
|
|
168
|
+
for (let repair = 0; repair < MAX_REPAIRS; repair++) {
|
|
169
|
+
if (response.status !== 400)
|
|
170
|
+
return response;
|
|
171
|
+
// Safe to drain: a 400 is never a stream. Anything we decide not to repair
|
|
172
|
+
// is handed back as an equivalent Response so the caller still sees it.
|
|
173
|
+
const responseText = await response.text();
|
|
174
|
+
const verdict = readVerdict(responseText, body);
|
|
175
|
+
if (!verdict) {
|
|
176
|
+
return new Response(responseText, {
|
|
177
|
+
status: response.status,
|
|
178
|
+
statusText: response.statusText,
|
|
179
|
+
headers: response.headers,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
rememberVerdict(modelKey, verdict.param, verdict.verdict);
|
|
183
|
+
const scope = verdict.verdict.values
|
|
184
|
+
? `'${verdict.param}: ${JSON.stringify(verdict.rejectedValue)}'`
|
|
185
|
+
: `'${verdict.param}'`;
|
|
186
|
+
console.warn(`[ModelService] "${modelKey}" rejected ${scope} — ` +
|
|
187
|
+
`${verdict.verdict.successor ? `sending '${verdict.verdict.successor}' instead` : "dropping it"} ` +
|
|
188
|
+
`for this and later calls${verdict.verdict.values ? " that send the same value" : ""}`);
|
|
189
|
+
body = applyLearned(body, modelKey);
|
|
190
|
+
response = await send(input, { ...init, body });
|
|
191
|
+
}
|
|
192
|
+
return response;
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=unsupported-param-fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unsupported-param-fetch.js","sourceRoot":"","sources":["../../../../src/core/llm/services/unsupported-param-fetch.ts"],"names":[],"mappings":"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"}
|