@loonylabs/llm-middleware 2.28.0 โ 2.29.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/.env.example +8 -0
- package/README.md +3 -2
- package/dist/middleware/services/llm/llm.service.d.ts.map +1 -1
- package/dist/middleware/services/llm/llm.service.js +2 -0
- package/dist/middleware/services/llm/llm.service.js.map +1 -1
- package/dist/middleware/services/llm/providers/azure-openai-capabilities.d.ts +33 -0
- package/dist/middleware/services/llm/providers/azure-openai-capabilities.d.ts.map +1 -0
- package/dist/middleware/services/llm/providers/azure-openai-capabilities.js +66 -0
- package/dist/middleware/services/llm/providers/azure-openai-capabilities.js.map +1 -0
- package/dist/middleware/services/llm/providers/azure-openai-provider.d.ts +53 -0
- package/dist/middleware/services/llm/providers/azure-openai-provider.d.ts.map +1 -0
- package/dist/middleware/services/llm/providers/azure-openai-provider.js +333 -0
- package/dist/middleware/services/llm/providers/azure-openai-provider.js.map +1 -0
- package/dist/middleware/services/llm/providers/index.d.ts +2 -0
- package/dist/middleware/services/llm/providers/index.d.ts.map +1 -1
- package/dist/middleware/services/llm/providers/index.js +2 -0
- package/dist/middleware/services/llm/providers/index.js.map +1 -1
- package/dist/middleware/services/llm/types/azure-openai.types.d.ts +135 -0
- package/dist/middleware/services/llm/types/azure-openai.types.d.ts.map +1 -0
- package/dist/middleware/services/llm/types/azure-openai.types.js +19 -0
- package/dist/middleware/services/llm/types/azure-openai.types.js.map +1 -0
- package/dist/middleware/services/llm/types/common.types.d.ts +10 -1
- package/dist/middleware/services/llm/types/common.types.d.ts.map +1 -1
- package/dist/middleware/services/llm/types/common.types.js +2 -0
- package/dist/middleware/services/llm/types/common.types.js.map +1 -1
- package/dist/middleware/services/llm/types/index.d.ts +1 -0
- package/dist/middleware/services/llm/types/index.d.ts.map +1 -1
- package/dist/middleware/services/llm/types/index.js +1 -0
- package/dist/middleware/services/llm/types/index.js.map +1 -1
- package/dist/middleware/services/llm/utils/debug-llm.utils.d.ts.map +1 -1
- package/dist/middleware/services/llm/utils/debug-llm.utils.js +4 -0
- package/dist/middleware/services/llm/utils/debug-llm.utils.js.map +1 -1
- package/package.json +2 -1
package/.env.example
CHANGED
|
@@ -36,6 +36,14 @@ BEDROCK_API_KEY=your_bedrock_api_key_here # Amazon Bedrock API key (B
|
|
|
36
36
|
BEDROCK_REGION=eu-central-1 # AWS region (Frankfurt = EU data residency)
|
|
37
37
|
BEDROCK_MODEL=qwen.qwen3-32b-v1:0 # Default model ID (verify via Bedrock console / list-foundation-models)
|
|
38
38
|
|
|
39
|
+
# Azure OpenAI / Foundry Configuration (Optional - api-key auth, OpenAI-compatible, serverless)
|
|
40
|
+
# EU data residency: create the resource in Germany West Central (or Sweden Central) with a Data Zone deployment.
|
|
41
|
+
# Note: some partner models (e.g. Kimi K2.5) are GLOBAL-ONLY on Azure -> they cannot be EU-resident.
|
|
42
|
+
AZURE_OPENAI_API_KEY=your_azure_openai_api_key_here # Azure OpenAI / Foundry API key (sent in the 'api-key' header)
|
|
43
|
+
AZURE_OPENAI_ENDPOINT=https://<resource>.openai.azure.com # Your resource endpoint (region is encoded in the host)
|
|
44
|
+
AZURE_OPENAI_DEPLOYMENT=o4-mini # Your deployment name (= 'model' field in the request body)
|
|
45
|
+
AZURE_OPENAI_API_VERSION= # Optional: empty = v1 route (/openai/v1/); '2024-05-01-preview' = MaaS route (/models/)
|
|
46
|
+
|
|
39
47
|
# Test Configuration (Optional)
|
|
40
48
|
TEST_LLM_MODEL=vertex/gemini-2.0-flash-lite # Model for general LLM tests
|
|
41
49
|
# Reasoning models:
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# ๐ LLM Middleware
|
|
4
4
|
|
|
5
|
-
*A comprehensive TypeScript middleware library for building robust multi-provider LLM backends. Currently supports Ollama, Anthropic Claude, Google Gemini (Direct API & Vertex AI),
|
|
5
|
+
*A comprehensive TypeScript middleware library for building robust multi-provider LLM backends. Currently supports Ollama, Anthropic Claude, Google Gemini (Direct API & Vertex AI), Requesty.AI (300+ models), AWS Bedrock, and Azure OpenAI / Foundry. Features EU data residency via Vertex AI / Bedrock / Azure data zones, reasoning control, advanced JSON cleaning, logging, error handling, cost tracking, and more.*
|
|
6
6
|
|
|
7
7
|
<!-- Horizontal Badge Navigation Bar -->
|
|
8
8
|
[](https://www.npmjs.com/package/@loonylabs/llm-middleware)
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
- โ
**Google Vertex AI**: CDPA/GDPR-compliant with EU data residency (Service Account auth)
|
|
47
47
|
- โ
**Requesty.AI**: 300+ models via unified API, built-in cost tracking
|
|
48
48
|
- โ
**AWS Bedrock**: Converse API via Bearer-token auth (no AWS SDK); Claude, Nova, Qwen, GLM, Kimi, DeepSeek, gpt-oss โ with central `reasoningEffort` control โ **v2.28.0**
|
|
49
|
+
- โ
**Azure OpenAI / Foundry**: OpenAI-compatible v1 route with `api-key` auth; o-series/GPT-5 reasoning vs. gpt-4o standard auto-handled; EU data-zone residency โ **v2.29.0**
|
|
49
50
|
- ๐ **Pluggable**: Easy to add custom providers - see [LLM Providers Guide](docs/LLM_PROVIDERS.md)
|
|
50
51
|
- ๐๏ธ **Vision / Multimodal Input**: Send images alongside text to LLM providers
|
|
51
52
|
- โจ **v2.22.0**: Provider-agnostic `MultimodalContent` type (`string | ContentPart[]`)
|
|
@@ -371,7 +372,7 @@ VERTEX_AI_MODEL=gemini-2.5-flash # Default Vertex AI model
|
|
|
371
372
|
GOOGLE_APPLICATION_CREDENTIALS=./vertex-ai-service-account.json # Service Account
|
|
372
373
|
```
|
|
373
374
|
|
|
374
|
-
**Multi-Provider Support:** The middleware is fully integrated with **Ollama**, **Anthropic Claude**, **Google Gemini** (Direct API & Vertex AI), **Requesty.AI**,
|
|
375
|
+
**Multi-Provider Support:** The middleware is fully integrated with **Ollama**, **Anthropic Claude**, **Google Gemini** (Direct API & Vertex AI), **Requesty.AI**, **AWS Bedrock** (Converse API, EU data residency), and **Azure OpenAI / Foundry** (OpenAI-compatible v1 route, EU data zone). See the [LLM Providers Guide](docs/LLM_PROVIDERS.md) for details on the provider system and how to use or add providers. Provider specifics: [AWS Bedrock Guide](docs/AWS_BEDROCK.md) ยท [Azure OpenAI Guide](docs/AZURE_OPENAI.md).
|
|
375
376
|
|
|
376
377
|
</details>
|
|
377
378
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.service.d.ts","sourceRoot":"","sources":["../../../../src/middleware/services/llm/llm.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAKhE,OAAO,EAAoB,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"llm.service.d.ts","sourceRoot":"","sources":["../../../../src/middleware/services/llm/llm.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAKhE,OAAO,EAAoB,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAG9E,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,wEAAwE;IACxE,cAAc,CAAC,EAAE,sBAAsB,CAAC;CACzC;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,eAAe,CAAmC;gBAE9C,OAAO,CAAC,EAAE,iBAAiB;IAYvC;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,eAAe;IAQ1D;;;;;;;;;;;;;;;;;;OAkBG;IACI,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI;IAI/E;;OAEG;IACI,kBAAkB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAOtD;;OAEG;IACI,kBAAkB,IAAI,WAAW;IAIxC;;;OAGG;IACU,qBAAqB,CAChC,UAAU,EAAE,iBAAiB,EAC7B,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,gBAAgB,GAAG;QAAE,QAAQ,CAAC,EAAE,WAAW,CAAA;KAAO,GAC1D,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAMpC;;;OAGG;IACU,IAAI,CACf,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,gBAAgB,GAAG;QAAE,QAAQ,CAAC,EAAE,WAAW,CAAA;KAAO,GAC1D,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAMpC;;OAEG;IACI,qBAAqB,IAAI,WAAW,EAAE;CAG9C;AAGD,eAAO,MAAM,UAAU,YAAmB,CAAC"}
|
|
@@ -11,6 +11,7 @@ const gemini_provider_1 = require("./providers/gemini-provider");
|
|
|
11
11
|
const requesty_provider_1 = require("./providers/requesty-provider");
|
|
12
12
|
const gemini_1 = require("./providers/gemini");
|
|
13
13
|
const bedrock_provider_1 = require("./providers/bedrock-provider");
|
|
14
|
+
const azure_openai_provider_1 = require("./providers/azure-openai-provider");
|
|
14
15
|
const types_1 = require("./types");
|
|
15
16
|
class LLMService {
|
|
16
17
|
constructor(options) {
|
|
@@ -23,6 +24,7 @@ class LLMService {
|
|
|
23
24
|
this.providers.set(types_1.LLMProvider.REQUESTY, new requesty_provider_1.RequestyProvider());
|
|
24
25
|
this.providers.set(types_1.LLMProvider.VERTEX_AI, new gemini_1.VertexAIProvider(options?.vertexAIConfig));
|
|
25
26
|
this.providers.set(types_1.LLMProvider.BEDROCK, new bedrock_provider_1.BedrockProvider());
|
|
27
|
+
this.providers.set(types_1.LLMProvider.AZURE_OPENAI, new azure_openai_provider_1.AzureOpenAIProvider());
|
|
26
28
|
}
|
|
27
29
|
/**
|
|
28
30
|
* Get a specific provider instance
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.service.js","sourceRoot":"","sources":["../../../../src/middleware/services/llm/llm.service.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,iEAA6D;AAC7D,uEAAmE;AACnE,iEAA6D;AAC7D,qEAAiE;AACjE,+CAA8E;AAC9E,mEAA+D;AAC/D,mCAA2E;AAQ3E,MAAa,UAAU;IAIrB,YAAY,OAA2B;QAF/B,oBAAe,GAAgB,mBAAW,CAAC,MAAM,CAAC;QAGxD,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QAC3B,iCAAiC;QACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAW,CAAC,MAAM,EAAE,IAAI,gCAAc,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAW,CAAC,SAAS,EAAE,IAAI,sCAAiB,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAW,CAAC,MAAM,EAAE,IAAI,gCAAc,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAW,CAAC,QAAQ,EAAE,IAAI,oCAAgB,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAW,CAAC,SAAS,EAAE,IAAI,yBAAgB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;QACzF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAW,CAAC,OAAO,EAAE,IAAI,kCAAe,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"llm.service.js","sourceRoot":"","sources":["../../../../src/middleware/services/llm/llm.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Azure OpenAI model-capability detection.
|
|
3
|
+
*
|
|
4
|
+
* On Azure, reasoning models (o-series, GPT-5 series) and standard models
|
|
5
|
+
* (gpt-4o, gpt-4o-mini, โฆ) require a *different* parameter set โ verified live:
|
|
6
|
+
* - Reasoning models use `max_completion_tokens` and REJECT `temperature`/`max_tokens` (HTTP 400);
|
|
7
|
+
* they accept `reasoning_effort`.
|
|
8
|
+
* - Standard models use `max_tokens` + `temperature` and ignore `reasoning_effort`.
|
|
9
|
+
*
|
|
10
|
+
* The split is binary, so a lightweight helper (rather than a full strategy
|
|
11
|
+
* pattern) is sufficient. Because Azure deployment names are user-chosen, the
|
|
12
|
+
* name heuristic can be overridden explicitly via `AzureOpenAIRequestOptions.reasoningModel`.
|
|
13
|
+
*/
|
|
14
|
+
import { ReasoningEffort } from '../types';
|
|
15
|
+
import { AzureOpenAIReasoningEffort } from '../types/azure-openai.types';
|
|
16
|
+
/**
|
|
17
|
+
* Decide whether a deployment should be treated as a reasoning model.
|
|
18
|
+
* @param deployment - The Azure deployment name (sent as `model`).
|
|
19
|
+
* @param override - Explicit override; when a boolean, it wins over the heuristic.
|
|
20
|
+
*/
|
|
21
|
+
export declare function isAzureReasoningModel(deployment: string, override?: boolean): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Map the provider-agnostic {@link ReasoningEffort} to Azure's `reasoning_effort`.
|
|
24
|
+
*
|
|
25
|
+
* Returns `{ value }` to send, or `{ warning }` (and no value) when the effort
|
|
26
|
+
* should be omitted. `none` is intentionally omitted: only gpt-5.1+ accept it,
|
|
27
|
+
* while o-series reject it โ omitting lets the model use its default safely.
|
|
28
|
+
*/
|
|
29
|
+
export declare function mapAzureReasoningEffort(effort: ReasoningEffort): {
|
|
30
|
+
value?: AzureOpenAIReasoningEffort;
|
|
31
|
+
warning?: string;
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=azure-openai-capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azure-openai-capabilities.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/providers/azure-openai-capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAezE;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAIrF;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,eAAe,GACtB;IAAE,KAAK,CAAC,EAAE,0BAA0B,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAiB1D"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Azure OpenAI model-capability detection.
|
|
4
|
+
*
|
|
5
|
+
* On Azure, reasoning models (o-series, GPT-5 series) and standard models
|
|
6
|
+
* (gpt-4o, gpt-4o-mini, โฆ) require a *different* parameter set โ verified live:
|
|
7
|
+
* - Reasoning models use `max_completion_tokens` and REJECT `temperature`/`max_tokens` (HTTP 400);
|
|
8
|
+
* they accept `reasoning_effort`.
|
|
9
|
+
* - Standard models use `max_tokens` + `temperature` and ignore `reasoning_effort`.
|
|
10
|
+
*
|
|
11
|
+
* The split is binary, so a lightweight helper (rather than a full strategy
|
|
12
|
+
* pattern) is sufficient. Because Azure deployment names are user-chosen, the
|
|
13
|
+
* name heuristic can be overridden explicitly via `AzureOpenAIRequestOptions.reasoningModel`.
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.isAzureReasoningModel = isAzureReasoningModel;
|
|
17
|
+
exports.mapAzureReasoningEffort = mapAzureReasoningEffort;
|
|
18
|
+
/**
|
|
19
|
+
* Deployment-name patterns that indicate a reasoning model. Matched against the
|
|
20
|
+
* deployment name (which usually defaults to the underlying model name).
|
|
21
|
+
* - `o\d` family: o1, o1-mini, o3, o3-mini, o3-pro, o4-mini (separator-anchored to avoid e.g. "neo4j")
|
|
22
|
+
* - GPT-5 series: gpt-5, gpt-5-mini, gpt-5.1, gpt5, gpt-5-codex
|
|
23
|
+
* - codex-mini
|
|
24
|
+
*/
|
|
25
|
+
const REASONING_NAME_PATTERNS = [
|
|
26
|
+
/(^|[-_/.])o\d+(-(mini|pro|preview))?($|[-_/.])/i,
|
|
27
|
+
/gpt-?5/i,
|
|
28
|
+
/(^|[-_/.])codex(-mini)?($|[-_/.])/i,
|
|
29
|
+
];
|
|
30
|
+
/**
|
|
31
|
+
* Decide whether a deployment should be treated as a reasoning model.
|
|
32
|
+
* @param deployment - The Azure deployment name (sent as `model`).
|
|
33
|
+
* @param override - Explicit override; when a boolean, it wins over the heuristic.
|
|
34
|
+
*/
|
|
35
|
+
function isAzureReasoningModel(deployment, override) {
|
|
36
|
+
if (typeof override === 'boolean')
|
|
37
|
+
return override;
|
|
38
|
+
if (!deployment)
|
|
39
|
+
return false;
|
|
40
|
+
return REASONING_NAME_PATTERNS.some(re => re.test(deployment));
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Map the provider-agnostic {@link ReasoningEffort} to Azure's `reasoning_effort`.
|
|
44
|
+
*
|
|
45
|
+
* Returns `{ value }` to send, or `{ warning }` (and no value) when the effort
|
|
46
|
+
* should be omitted. `none` is intentionally omitted: only gpt-5.1+ accept it,
|
|
47
|
+
* while o-series reject it โ omitting lets the model use its default safely.
|
|
48
|
+
*/
|
|
49
|
+
function mapAzureReasoningEffort(effort) {
|
|
50
|
+
switch (effort) {
|
|
51
|
+
case 'low':
|
|
52
|
+
case 'medium':
|
|
53
|
+
case 'high':
|
|
54
|
+
return { value: effort };
|
|
55
|
+
case 'none':
|
|
56
|
+
return {
|
|
57
|
+
warning: "reasoningEffort 'none' is not reliably supported across Azure reasoning models " +
|
|
58
|
+
'(only gpt-5.1+ accept it; o-series reject it). Omitting reasoning_effort so the ' +
|
|
59
|
+
'model uses its default.',
|
|
60
|
+
};
|
|
61
|
+
default:
|
|
62
|
+
// Defensive: unknown value โ safe middle ground.
|
|
63
|
+
return { value: 'medium' };
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=azure-openai-capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azure-openai-capabilities.js","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/providers/azure-openai-capabilities.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;AAuBH,sDAIC;AASD,0DAmBC;AAlDD;;;;;;GAMG;AACH,MAAM,uBAAuB,GAAa;IACxC,iDAAiD;IACjD,SAAS;IACT,oCAAoC;CACrC,CAAC;AAEF;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,UAAkB,EAAE,QAAkB;IAC1E,IAAI,OAAO,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IACnD,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9B,OAAO,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,uBAAuB,CACrC,MAAuB;IAEvB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK,CAAC;QACX,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACT,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM;YACT,OAAO;gBACL,OAAO,EACL,iFAAiF;oBACjF,kFAAkF;oBAClF,yBAAyB;aAC5B,CAAC;QACJ;YACE,iDAAiD;YACjD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { BaseLLMProvider } from './base-llm-provider';
|
|
2
|
+
import { CommonLLMResponse } from '../types';
|
|
3
|
+
import { AzureOpenAIRequestOptions } from '../types/azure-openai.types';
|
|
4
|
+
import { MultimodalContent } from '../types/multimodal.types';
|
|
5
|
+
/**
|
|
6
|
+
* Azure OpenAI / Microsoft Foundry provider using the OpenAI-compatible
|
|
7
|
+
* Chat Completions API (v1 route).
|
|
8
|
+
*
|
|
9
|
+
* Why v1 (not the classic deployments route): the deployment name is sent as the
|
|
10
|
+
* `model` field in the body and `api-version` is optional, which keeps the payload
|
|
11
|
+
* identical to a standard OpenAI request and matches the Requesty provider. The
|
|
12
|
+
* same route serves OpenAI and (increasingly) partner models on Foundry.
|
|
13
|
+
*
|
|
14
|
+
* Why `api-key` header (not Authorization: Bearer): Azure passes the static API
|
|
15
|
+
* key in the `api-key` header; `Authorization: Bearer` is reserved for Microsoft
|
|
16
|
+
* Entra ID tokens (a planned follow-up).
|
|
17
|
+
*
|
|
18
|
+
* Reasoning vs standard models take different parameters (verified live) โ see
|
|
19
|
+
* `azure-openai-capabilities.ts`.
|
|
20
|
+
*
|
|
21
|
+
* Auth: api-key: <AZURE_OPENAI_API_KEY>
|
|
22
|
+
* Endpoint: {AZURE_OPENAI_ENDPOINT}/openai/v1/chat/completions
|
|
23
|
+
* Residency: data zone is chosen at deployment time (EU = Germany West Central / Sweden Central)
|
|
24
|
+
* @see https://learn.microsoft.com/en-us/azure/foundry/openai/latest
|
|
25
|
+
*/
|
|
26
|
+
export declare class AzureOpenAIProvider extends BaseLLMProvider {
|
|
27
|
+
private dataFlowLogger;
|
|
28
|
+
private readonly DEFAULT_TIMEOUT;
|
|
29
|
+
constructor();
|
|
30
|
+
/**
|
|
31
|
+
* Build the Azure OpenAI v1 Chat Completions endpoint.
|
|
32
|
+
* `api-version` is appended only when explicitly provided (the v1 route
|
|
33
|
+
* defaults to no api-version).
|
|
34
|
+
*/
|
|
35
|
+
private buildEndpoint;
|
|
36
|
+
/**
|
|
37
|
+
* Build the user message content: multimodal (text + image_url) or plain string.
|
|
38
|
+
* Uses the OpenAI image_url/data-URI format, identical to the Requesty provider.
|
|
39
|
+
*/
|
|
40
|
+
private buildUserContent;
|
|
41
|
+
/**
|
|
42
|
+
* Call the Azure OpenAI Chat Completions API with a custom system message.
|
|
43
|
+
* @param userPrompt - The user's prompt (text or multimodal content)
|
|
44
|
+
* @param systemMessage - The system message defining AI behavior
|
|
45
|
+
* @param options - Options for the API call
|
|
46
|
+
* @returns The API response or null on error
|
|
47
|
+
*/
|
|
48
|
+
callWithSystemMessage(userPrompt: MultimodalContent, systemMessage: string, options?: AzureOpenAIRequestOptions): Promise<CommonLLMResponse | null>;
|
|
49
|
+
}
|
|
50
|
+
export declare const azureOpenAIProvider: AzureOpenAIProvider;
|
|
51
|
+
export { AzureOpenAIProvider as AzureOpenAIService };
|
|
52
|
+
export { azureOpenAIProvider as azureOpenAIService };
|
|
53
|
+
//# sourceMappingURL=azure-openai-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azure-openai-provider.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/providers/azure-openai-provider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAe,iBAAiB,EAAc,MAAM,UAAU,CAAC;AACtE,OAAO,EACL,yBAAyB,EAK1B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAQ9D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,mBAAoB,SAAQ,eAAe;IACtD,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;;IAO1C;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAMrB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;;;;;OAMG;IACU,qBAAqB,CAChC,UAAU,EAAE,iBAAiB,EAC7B,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;CAmUrC;AAGD,eAAO,MAAM,mBAAmB,qBAA4B,CAAC;AAG7D,OAAO,EAAE,mBAAmB,IAAI,kBAAkB,EAAE,CAAC;AACrD,OAAO,EAAE,mBAAmB,IAAI,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.azureOpenAIService = exports.AzureOpenAIService = exports.azureOpenAIProvider = exports.AzureOpenAIProvider = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const uuid_1 = require("uuid");
|
|
9
|
+
const logging_utils_1 = require("../../../shared/utils/logging.utils");
|
|
10
|
+
const base_llm_provider_1 = require("./base-llm-provider");
|
|
11
|
+
const types_1 = require("../types");
|
|
12
|
+
const debug_llm_utils_1 = require("../utils/debug-llm.utils");
|
|
13
|
+
const data_flow_logger_1 = require("../../data-flow-logger");
|
|
14
|
+
const thinking_1 = require("../thinking");
|
|
15
|
+
const retry_utils_1 = require("../utils/retry.utils");
|
|
16
|
+
const multimodal_utils_1 = require("../utils/multimodal.utils");
|
|
17
|
+
const azure_openai_capabilities_1 = require("./azure-openai-capabilities");
|
|
18
|
+
/**
|
|
19
|
+
* Azure OpenAI / Microsoft Foundry provider using the OpenAI-compatible
|
|
20
|
+
* Chat Completions API (v1 route).
|
|
21
|
+
*
|
|
22
|
+
* Why v1 (not the classic deployments route): the deployment name is sent as the
|
|
23
|
+
* `model` field in the body and `api-version` is optional, which keeps the payload
|
|
24
|
+
* identical to a standard OpenAI request and matches the Requesty provider. The
|
|
25
|
+
* same route serves OpenAI and (increasingly) partner models on Foundry.
|
|
26
|
+
*
|
|
27
|
+
* Why `api-key` header (not Authorization: Bearer): Azure passes the static API
|
|
28
|
+
* key in the `api-key` header; `Authorization: Bearer` is reserved for Microsoft
|
|
29
|
+
* Entra ID tokens (a planned follow-up).
|
|
30
|
+
*
|
|
31
|
+
* Reasoning vs standard models take different parameters (verified live) โ see
|
|
32
|
+
* `azure-openai-capabilities.ts`.
|
|
33
|
+
*
|
|
34
|
+
* Auth: api-key: <AZURE_OPENAI_API_KEY>
|
|
35
|
+
* Endpoint: {AZURE_OPENAI_ENDPOINT}/openai/v1/chat/completions
|
|
36
|
+
* Residency: data zone is chosen at deployment time (EU = Germany West Central / Sweden Central)
|
|
37
|
+
* @see https://learn.microsoft.com/en-us/azure/foundry/openai/latest
|
|
38
|
+
*/
|
|
39
|
+
class AzureOpenAIProvider extends base_llm_provider_1.BaseLLMProvider {
|
|
40
|
+
constructor() {
|
|
41
|
+
super(types_1.LLMProvider.AZURE_OPENAI);
|
|
42
|
+
this.DEFAULT_TIMEOUT = 180000;
|
|
43
|
+
this.dataFlowLogger = data_flow_logger_1.DataFlowLoggerService.getInstance();
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Build the Azure OpenAI v1 Chat Completions endpoint.
|
|
47
|
+
* `api-version` is appended only when explicitly provided (the v1 route
|
|
48
|
+
* defaults to no api-version).
|
|
49
|
+
*/
|
|
50
|
+
buildEndpoint(endpoint, apiVersion) {
|
|
51
|
+
const base = endpoint.replace(/\/+$/, '');
|
|
52
|
+
const url = `${base}/openai/v1/chat/completions`;
|
|
53
|
+
return apiVersion ? `${url}?api-version=${encodeURIComponent(apiVersion)}` : url;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Build the user message content: multimodal (text + image_url) or plain string.
|
|
57
|
+
* Uses the OpenAI image_url/data-URI format, identical to the Requesty provider.
|
|
58
|
+
*/
|
|
59
|
+
buildUserContent(userPrompt) {
|
|
60
|
+
if (!(0, multimodal_utils_1.hasImages)(userPrompt)) {
|
|
61
|
+
return typeof userPrompt === 'string'
|
|
62
|
+
? userPrompt
|
|
63
|
+
: (0, multimodal_utils_1.normalizeContent)(userPrompt)
|
|
64
|
+
.map(p => p.text)
|
|
65
|
+
.join('\n');
|
|
66
|
+
}
|
|
67
|
+
return (0, multimodal_utils_1.normalizeContent)(userPrompt).map(part => {
|
|
68
|
+
if (part.type === 'text') {
|
|
69
|
+
return { type: 'text', text: part.text };
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
type: 'image_url',
|
|
73
|
+
image_url: {
|
|
74
|
+
url: `data:${part.mimeType};base64,${part.data}`,
|
|
75
|
+
...(part.detail && { detail: part.detail })
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Call the Azure OpenAI Chat Completions API with a custom system message.
|
|
82
|
+
* @param userPrompt - The user's prompt (text or multimodal content)
|
|
83
|
+
* @param systemMessage - The system message defining AI behavior
|
|
84
|
+
* @param options - Options for the API call
|
|
85
|
+
* @returns The API response or null on error
|
|
86
|
+
*/
|
|
87
|
+
async callWithSystemMessage(userPrompt, systemMessage, options = {}) {
|
|
88
|
+
const { authToken = process.env.AZURE_OPENAI_API_KEY, endpoint = options.baseUrl || process.env.AZURE_OPENAI_ENDPOINT, deployment = options.model || process.env.AZURE_OPENAI_DEPLOYMENT, apiVersion = process.env.AZURE_OPENAI_API_VERSION || undefined, temperature = 0.7, maxTokens = 4096, topP, timeout = this.DEFAULT_TIMEOUT, debugContext, sessionId = (0, uuid_1.v4)(), chapterNumber, pageNumber, pageName, reasoningEffort, reasoningModel } = options;
|
|
89
|
+
// Validate API key
|
|
90
|
+
if (!authToken) {
|
|
91
|
+
throw new Error('Azure OpenAI API key is required but not provided. ' +
|
|
92
|
+
'Please set AZURE_OPENAI_API_KEY in your .env file or pass authToken in options.');
|
|
93
|
+
}
|
|
94
|
+
// Validate endpoint
|
|
95
|
+
if (!endpoint) {
|
|
96
|
+
throw new Error('Azure OpenAI endpoint is required but not provided. ' +
|
|
97
|
+
'Please set AZURE_OPENAI_ENDPOINT in your .env file or pass endpoint in options.');
|
|
98
|
+
}
|
|
99
|
+
// Validate deployment (= model)
|
|
100
|
+
if (!deployment) {
|
|
101
|
+
throw new Error('Azure OpenAI deployment name is required but not provided. ' +
|
|
102
|
+
'Please set AZURE_OPENAI_DEPLOYMENT in your .env file or pass deployment/model in options.');
|
|
103
|
+
}
|
|
104
|
+
const isReasoning = (0, azure_openai_capabilities_1.isAzureReasoningModel)(deployment, reasoningModel);
|
|
105
|
+
// Build request payload (OpenAI Chat Completions format).
|
|
106
|
+
const requestPayload = {
|
|
107
|
+
model: deployment,
|
|
108
|
+
messages: [
|
|
109
|
+
...(systemMessage ? [{ role: 'system', content: systemMessage }] : []),
|
|
110
|
+
{ role: 'user', content: this.buildUserContent(userPrompt) }
|
|
111
|
+
]
|
|
112
|
+
};
|
|
113
|
+
// Apply the verified, model-class-specific parameter set.
|
|
114
|
+
if (isReasoning) {
|
|
115
|
+
// Reasoning models: max_completion_tokens, NO temperature/top_p, reasoning_effort.
|
|
116
|
+
requestPayload.max_completion_tokens = maxTokens;
|
|
117
|
+
if (reasoningEffort) {
|
|
118
|
+
const { value, warning } = (0, azure_openai_capabilities_1.mapAzureReasoningEffort)(reasoningEffort);
|
|
119
|
+
if (value)
|
|
120
|
+
requestPayload.reasoning_effort = value;
|
|
121
|
+
if (warning) {
|
|
122
|
+
logging_utils_1.logger.warn(warning, {
|
|
123
|
+
context: 'AzureOpenAIProvider',
|
|
124
|
+
metadata: { deployment, reasoningEffort }
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
// Standard models: max_tokens + temperature (+ top_p); reasoning_effort is ignored.
|
|
131
|
+
requestPayload.max_tokens = maxTokens;
|
|
132
|
+
requestPayload.temperature = temperature;
|
|
133
|
+
if (topP !== undefined)
|
|
134
|
+
requestPayload.top_p = topP;
|
|
135
|
+
if (reasoningEffort) {
|
|
136
|
+
logging_utils_1.logger.warn(`reasoningEffort '${reasoningEffort}' is ignored for the non-reasoning Azure model '${deployment}'. ` +
|
|
137
|
+
'Set options.reasoningModel=true if this is actually a reasoning deployment.', { context: 'AzureOpenAIProvider', metadata: { deployment } });
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const url = this.buildEndpoint(endpoint, apiVersion);
|
|
141
|
+
const headers = {
|
|
142
|
+
'Content-Type': 'application/json',
|
|
143
|
+
'Accept': 'application/json',
|
|
144
|
+
'api-key': authToken
|
|
145
|
+
};
|
|
146
|
+
// Use debug string to avoid base64 blobs in logs
|
|
147
|
+
const userMessageDebug = (0, multimodal_utils_1.contentToDebugString)(userPrompt);
|
|
148
|
+
const debugInfo = {
|
|
149
|
+
timestamp: new Date(),
|
|
150
|
+
provider: this.providerName,
|
|
151
|
+
model: deployment,
|
|
152
|
+
baseUrl: url,
|
|
153
|
+
systemMessage,
|
|
154
|
+
userMessage: userMessageDebug,
|
|
155
|
+
requestData: requestPayload,
|
|
156
|
+
useCase: debugContext,
|
|
157
|
+
sessionId,
|
|
158
|
+
chapterNumber,
|
|
159
|
+
pageNumber,
|
|
160
|
+
pageName,
|
|
161
|
+
temperature: isReasoning ? undefined : temperature,
|
|
162
|
+
reasoningEffort
|
|
163
|
+
};
|
|
164
|
+
await debug_llm_utils_1.LLMDebugger.logRequest(debugInfo);
|
|
165
|
+
const contextForLogger = {
|
|
166
|
+
currentChapterNr: chapterNumber,
|
|
167
|
+
currentPage: pageNumber,
|
|
168
|
+
debugContext
|
|
169
|
+
};
|
|
170
|
+
const requestId = this.dataFlowLogger.startRequest(debugContext || 'azure-openai', contextForLogger);
|
|
171
|
+
this.dataFlowLogger.logLLMRequest({
|
|
172
|
+
stage: debugContext || 'azure-openai',
|
|
173
|
+
prompt: userMessageDebug,
|
|
174
|
+
systemMessage,
|
|
175
|
+
modelName: deployment,
|
|
176
|
+
temperature: isReasoning ? undefined : temperature,
|
|
177
|
+
contextInfo: { sessionId, chapterNumber, pageNumber, pageName }
|
|
178
|
+
}, contextForLogger, requestId);
|
|
179
|
+
const requestStartTime = Date.now();
|
|
180
|
+
try {
|
|
181
|
+
logging_utils_1.logger.info('Sending request to Azure OpenAI', {
|
|
182
|
+
context: 'AzureOpenAIProvider',
|
|
183
|
+
metadata: {
|
|
184
|
+
url,
|
|
185
|
+
deployment,
|
|
186
|
+
isReasoning,
|
|
187
|
+
promptLength: (0, multimodal_utils_1.contentLength)(userPrompt),
|
|
188
|
+
maxTokens
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
const response = await (0, retry_utils_1.retryWithBackoff)(() => axios_1.default.post(url, requestPayload, { headers, timeout }), this.constructor.name, options.retry);
|
|
192
|
+
const requestDuration = Date.now() - requestStartTime;
|
|
193
|
+
if (response && response.status === 200) {
|
|
194
|
+
const apiResponse = response.data;
|
|
195
|
+
const rawResponseText = apiResponse.choices[0]?.message?.content || '';
|
|
196
|
+
// Partner models served via Azure may inline reasoning as <think> tags;
|
|
197
|
+
// native OpenAI reasoning text is hidden by Azure (only token counts exposed).
|
|
198
|
+
const extractor = thinking_1.ThinkingExtractorFactory.forModel(deployment);
|
|
199
|
+
const { content: responseText, thinking } = extractor.extract(rawResponseText);
|
|
200
|
+
// Normalize token usage to the provider-agnostic format.
|
|
201
|
+
const usage = apiResponse.usage;
|
|
202
|
+
const reasoningTokens = usage.completion_tokens_details?.reasoning_tokens;
|
|
203
|
+
const cachedTokens = usage.prompt_tokens_details?.cached_tokens;
|
|
204
|
+
const tokenUsage = {
|
|
205
|
+
inputTokens: usage.prompt_tokens,
|
|
206
|
+
outputTokens: usage.completion_tokens,
|
|
207
|
+
totalTokens: usage.total_tokens,
|
|
208
|
+
...(reasoningTokens ? { reasoningTokens } : {}),
|
|
209
|
+
...(cachedTokens ? { cacheMetadata: { cacheReadTokens: cachedTokens } } : {})
|
|
210
|
+
};
|
|
211
|
+
const normalizedResponse = {
|
|
212
|
+
message: {
|
|
213
|
+
content: responseText,
|
|
214
|
+
...(thinking && { thinking })
|
|
215
|
+
},
|
|
216
|
+
sessionId,
|
|
217
|
+
metadata: {
|
|
218
|
+
provider: this.providerName,
|
|
219
|
+
model: apiResponse.model || deployment,
|
|
220
|
+
tokensUsed: tokenUsage.totalTokens,
|
|
221
|
+
processingTime: requestDuration
|
|
222
|
+
},
|
|
223
|
+
usage: tokenUsage,
|
|
224
|
+
id: apiResponse.id,
|
|
225
|
+
finish_reason: apiResponse.choices[0]?.finish_reason || undefined
|
|
226
|
+
};
|
|
227
|
+
debugInfo.responseTimestamp = new Date();
|
|
228
|
+
debugInfo.response = responseText;
|
|
229
|
+
debugInfo.rawResponseData = apiResponse;
|
|
230
|
+
if (thinking) {
|
|
231
|
+
debugInfo.thinking = thinking;
|
|
232
|
+
}
|
|
233
|
+
// Surface reasoning token count in the log. Azure hides the raw reasoning
|
|
234
|
+
// text for o-series, so this is the signal that reasoning actually happened.
|
|
235
|
+
if (reasoningTokens !== undefined) {
|
|
236
|
+
debugInfo.reasoningTokens = reasoningTokens;
|
|
237
|
+
}
|
|
238
|
+
await debug_llm_utils_1.LLMDebugger.logResponse(debugInfo);
|
|
239
|
+
this.dataFlowLogger.logLLMResponse(debugContext || 'azure-openai', { rawResponse: responseText, processingTime: requestDuration }, contextForLogger, requestId);
|
|
240
|
+
return normalizedResponse;
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
const error = new Error(`Status ${response?.status || 'unknown'}`);
|
|
244
|
+
logging_utils_1.logger.error('Error calling Azure OpenAI', {
|
|
245
|
+
context: this.constructor.name,
|
|
246
|
+
error: error.message,
|
|
247
|
+
metadata: response?.data || {}
|
|
248
|
+
});
|
|
249
|
+
this.dataFlowLogger.logLLMResponse(debugContext || 'azure-openai', { rawResponse: '', processingTime: Date.now() - requestStartTime, error }, contextForLogger, requestId);
|
|
250
|
+
return null;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
let errorMessage = 'Unknown error';
|
|
255
|
+
let errorDetails = {};
|
|
256
|
+
if (error instanceof Error) {
|
|
257
|
+
errorMessage = error.message;
|
|
258
|
+
}
|
|
259
|
+
if (error &&
|
|
260
|
+
typeof error === 'object' &&
|
|
261
|
+
'isAxiosError' in error &&
|
|
262
|
+
error.isAxiosError === true) {
|
|
263
|
+
const axiosError = error;
|
|
264
|
+
if (axiosError.response) {
|
|
265
|
+
errorDetails = {
|
|
266
|
+
statusCode: axiosError.response.status,
|
|
267
|
+
statusText: axiosError.response.statusText,
|
|
268
|
+
data: axiosError.response.data
|
|
269
|
+
};
|
|
270
|
+
if (axiosError.response.status === 401) {
|
|
271
|
+
logging_utils_1.logger.error('Authentication error with Azure OpenAI', {
|
|
272
|
+
context: this.constructor.name,
|
|
273
|
+
error: 'Invalid Azure OpenAI API key (sent in the api-key header)',
|
|
274
|
+
metadata: { statusCode: 401, message: axiosError.response.data?.error?.message }
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
else if (axiosError.response.status === 404) {
|
|
278
|
+
logging_utils_1.logger.error('Azure OpenAI deployment or route not found', {
|
|
279
|
+
context: this.constructor.name,
|
|
280
|
+
error: 'Deployment name not found, or endpoint/route incorrect',
|
|
281
|
+
metadata: {
|
|
282
|
+
statusCode: 404,
|
|
283
|
+
deployment,
|
|
284
|
+
hint: 'Verify the deployment name and that AZURE_OPENAI_ENDPOINT points at the resource host.'
|
|
285
|
+
}
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
else if (axiosError.response.status === 429) {
|
|
289
|
+
logging_utils_1.logger.error('Rate limit / quota exceeded on Azure OpenAI', {
|
|
290
|
+
context: this.constructor.name,
|
|
291
|
+
error: 'Too many requests',
|
|
292
|
+
metadata: { statusCode: 429, retryAfter: axiosError.response.headers?.['retry-after'] }
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
else if (axiosError.response.status === 400) {
|
|
296
|
+
logging_utils_1.logger.error('Bad request to Azure OpenAI', {
|
|
297
|
+
context: this.constructor.name,
|
|
298
|
+
error: axiosError.response.data?.error?.message || 'Invalid request',
|
|
299
|
+
metadata: {
|
|
300
|
+
deployment,
|
|
301
|
+
isReasoning,
|
|
302
|
+
hint: isReasoning
|
|
303
|
+
? 'Reasoning models reject temperature/max_tokens; they require max_completion_tokens.'
|
|
304
|
+
: 'Check parameter compatibility for this deployment.',
|
|
305
|
+
details: axiosError.response.data?.error
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
logging_utils_1.logger.error('Error in Azure OpenAI API request', {
|
|
312
|
+
context: this.constructor.name,
|
|
313
|
+
error: errorMessage,
|
|
314
|
+
metadata: { ...errorDetails, requestDeployment: deployment, sessionId }
|
|
315
|
+
});
|
|
316
|
+
this.dataFlowLogger.logLLMResponse(debugContext || 'azure-openai', {
|
|
317
|
+
rawResponse: '',
|
|
318
|
+
processingTime: Date.now() - requestStartTime,
|
|
319
|
+
error: error instanceof Error ? error : new Error(errorMessage)
|
|
320
|
+
}, contextForLogger, requestId);
|
|
321
|
+
debugInfo.responseTimestamp = new Date();
|
|
322
|
+
debugInfo.error = { message: errorMessage, details: errorDetails };
|
|
323
|
+
await debug_llm_utils_1.LLMDebugger.logError(debugInfo);
|
|
324
|
+
return null;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
exports.AzureOpenAIProvider = AzureOpenAIProvider;
|
|
329
|
+
exports.AzureOpenAIService = AzureOpenAIProvider;
|
|
330
|
+
// Export singleton instance
|
|
331
|
+
exports.azureOpenAIProvider = new AzureOpenAIProvider();
|
|
332
|
+
exports.azureOpenAIService = exports.azureOpenAIProvider;
|
|
333
|
+
//# sourceMappingURL=azure-openai-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azure-openai-provider.js","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/providers/azure-openai-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,4 +4,6 @@ export * from './anthropic-provider';
|
|
|
4
4
|
export * from './gemini-provider';
|
|
5
5
|
export * from './requesty-provider';
|
|
6
6
|
export * from './bedrock-provider';
|
|
7
|
+
export * from './azure-openai-provider';
|
|
8
|
+
export * from './azure-openai-capabilities';
|
|
7
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/providers/index.ts"],"names":[],"mappings":"AACA,cAAc,qBAAqB,CAAC;AAGpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/providers/index.ts"],"names":[],"mappings":"AACA,cAAc,qBAAqB,CAAC;AAGpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC"}
|
|
@@ -22,6 +22,8 @@ __exportStar(require("./anthropic-provider"), exports);
|
|
|
22
22
|
__exportStar(require("./gemini-provider"), exports);
|
|
23
23
|
__exportStar(require("./requesty-provider"), exports);
|
|
24
24
|
__exportStar(require("./bedrock-provider"), exports);
|
|
25
|
+
__exportStar(require("./azure-openai-provider"), exports);
|
|
26
|
+
__exportStar(require("./azure-openai-capabilities"), exports);
|
|
25
27
|
// Future providers will be added here:
|
|
26
28
|
// export * from './openai-provider';
|
|
27
29
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/providers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gBAAgB;AAChB,sDAAoC;AAEpC,qBAAqB;AACrB,oDAAkC;AAClC,uDAAqC;AACrC,oDAAkC;AAClC,sDAAoC;AACpC,qDAAmC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/providers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gBAAgB;AAChB,sDAAoC;AAEpC,qBAAqB;AACrB,oDAAkC;AAClC,uDAAqC;AACrC,oDAAkC;AAClC,sDAAoC;AACpC,qDAAmC;AACnC,0DAAwC;AACxC,8DAA4C;AAE5C,uCAAuC;AACvC,qCAAqC"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Azure OpenAI / Microsoft Foundry-specific types and interfaces.
|
|
3
|
+
*
|
|
4
|
+
* Azure exposes OpenAI (and some partner) models through an OpenAI-compatible
|
|
5
|
+
* Chat Completions API. This provider targets the new **v1 route**
|
|
6
|
+
* (`{endpoint}/openai/v1/chat/completions`), where the deployment name is sent
|
|
7
|
+
* as the `model` field in the request body and `api-version` is optional.
|
|
8
|
+
*
|
|
9
|
+
* Authentication uses an Azure API key in the **`api-key` header** (not
|
|
10
|
+
* `Authorization: Bearer`, which Azure reserves for Microsoft Entra ID tokens).
|
|
11
|
+
*
|
|
12
|
+
* Reasoning models (o-series, GPT-5 series) and standard models (gpt-4o, โฆ) take
|
|
13
|
+
* a different parameter set; see `providers/azure-openai-capabilities.ts`.
|
|
14
|
+
*
|
|
15
|
+
* @see https://learn.microsoft.com/en-us/azure/foundry/openai/latest
|
|
16
|
+
*/
|
|
17
|
+
import { CommonLLMOptions, CommonLLMResponse } from './common.types';
|
|
18
|
+
/**
|
|
19
|
+
* Azure-specific request options.
|
|
20
|
+
* Extends common options with Azure/Foundry-specific parameters.
|
|
21
|
+
*/
|
|
22
|
+
export interface AzureOpenAIRequestOptions extends CommonLLMOptions {
|
|
23
|
+
/**
|
|
24
|
+
* Resource endpoint base URL, e.g. `https://<resource>.openai.azure.com` or
|
|
25
|
+
* `https://<resource>.services.ai.azure.com`. The region is encoded in the host.
|
|
26
|
+
* Falls back to `baseUrl`, then the AZURE_OPENAI_ENDPOINT env var.
|
|
27
|
+
*/
|
|
28
|
+
endpoint?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Deployment name โ sent as the `model` field in the request body.
|
|
31
|
+
* Falls back to the common `model` option, then the AZURE_OPENAI_DEPLOYMENT env var.
|
|
32
|
+
*/
|
|
33
|
+
deployment?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Optional `api-version` query parameter. Leave empty for the v1 GA route.
|
|
36
|
+
* Falls back to the AZURE_OPENAI_API_VERSION env var.
|
|
37
|
+
*/
|
|
38
|
+
apiVersion?: string;
|
|
39
|
+
/** Nucleus sampling โ standard models only; ignored for reasoning models. */
|
|
40
|
+
topP?: number;
|
|
41
|
+
/**
|
|
42
|
+
* Explicit override for reasoning-model parameter handling. Azure deployment
|
|
43
|
+
* names are user-chosen, so the name heuristic can miss a renamed reasoning
|
|
44
|
+
* model โ set this to force the correct behavior.
|
|
45
|
+
* - `true` โ treat as a reasoning model (max_completion_tokens, no temperature, reasoning_effort)
|
|
46
|
+
* - `false` โ treat as a standard model (max_tokens, temperature)
|
|
47
|
+
*/
|
|
48
|
+
reasoningModel?: boolean;
|
|
49
|
+
/** Request timeout in milliseconds (default: 180000). */
|
|
50
|
+
timeout?: number;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Reasoning effort values accepted by Azure reasoning models.
|
|
54
|
+
* `minimal`/`xhigh`/`none` are only supported by specific model generations.
|
|
55
|
+
*/
|
|
56
|
+
export type AzureOpenAIReasoningEffort = 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
|
|
57
|
+
/** OpenAI-compatible content part for multimodal (vision) messages. */
|
|
58
|
+
export type AzureOpenAIContentPart = {
|
|
59
|
+
type: 'text';
|
|
60
|
+
text: string;
|
|
61
|
+
} | {
|
|
62
|
+
type: 'image_url';
|
|
63
|
+
image_url: {
|
|
64
|
+
url: string;
|
|
65
|
+
detail?: 'low' | 'high' | 'auto';
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
/** OpenAI-compatible chat message. `developer` is the reasoning-model equivalent of `system`. */
|
|
69
|
+
export interface AzureOpenAIMessage {
|
|
70
|
+
role: 'system' | 'developer' | 'user' | 'assistant';
|
|
71
|
+
content: string | AzureOpenAIContentPart[];
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Azure OpenAI Chat Completions request payload (OpenAI-compatible).
|
|
75
|
+
* `max_tokens` vs `max_completion_tokens` and `temperature` vs `reasoning_effort`
|
|
76
|
+
* are mutually exclusive per model class โ the provider sets only the valid set.
|
|
77
|
+
*/
|
|
78
|
+
export interface AzureOpenAIRequest {
|
|
79
|
+
/** Deployment name */
|
|
80
|
+
model: string;
|
|
81
|
+
messages: AzureOpenAIMessage[];
|
|
82
|
+
/** Standard models only. Reasoning models reject this (HTTP 400). */
|
|
83
|
+
max_tokens?: number;
|
|
84
|
+
/** Reasoning models only (replaces max_tokens). */
|
|
85
|
+
max_completion_tokens?: number;
|
|
86
|
+
/** Standard models only. Reasoning models reject this (HTTP 400). */
|
|
87
|
+
temperature?: number;
|
|
88
|
+
/** Standard models only. */
|
|
89
|
+
top_p?: number;
|
|
90
|
+
/** Reasoning models only. */
|
|
91
|
+
reasoning_effort?: AzureOpenAIReasoningEffort;
|
|
92
|
+
}
|
|
93
|
+
/** Azure Chat Completions token usage (OpenAI-compatible, with Azure detail blocks). */
|
|
94
|
+
export interface AzureOpenAIUsage {
|
|
95
|
+
prompt_tokens: number;
|
|
96
|
+
completion_tokens: number;
|
|
97
|
+
total_tokens: number;
|
|
98
|
+
/** Reasoning-model detail; `reasoning_tokens` is a subset of `completion_tokens`. */
|
|
99
|
+
completion_tokens_details?: {
|
|
100
|
+
reasoning_tokens?: number;
|
|
101
|
+
accepted_prediction_tokens?: number;
|
|
102
|
+
rejected_prediction_tokens?: number;
|
|
103
|
+
audio_tokens?: number;
|
|
104
|
+
};
|
|
105
|
+
/** `cached_tokens` reflects prompt-cache hits. */
|
|
106
|
+
prompt_tokens_details?: {
|
|
107
|
+
cached_tokens?: number;
|
|
108
|
+
audio_tokens?: number;
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/** Azure OpenAI Chat Completions API response payload. */
|
|
112
|
+
export interface AzureOpenAIAPIResponse {
|
|
113
|
+
id: string;
|
|
114
|
+
object: string;
|
|
115
|
+
created: number;
|
|
116
|
+
model: string;
|
|
117
|
+
choices: Array<{
|
|
118
|
+
index: number;
|
|
119
|
+
message: {
|
|
120
|
+
role: 'assistant';
|
|
121
|
+
content: string;
|
|
122
|
+
};
|
|
123
|
+
finish_reason: string | null;
|
|
124
|
+
}>;
|
|
125
|
+
usage: AzureOpenAIUsage;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Azure OpenAI-specific response (normalized to CommonLLMResponse).
|
|
129
|
+
* Keeps the raw id/finish_reason for consumers that need them.
|
|
130
|
+
*/
|
|
131
|
+
export interface AzureOpenAIResponse extends CommonLLMResponse {
|
|
132
|
+
id?: string;
|
|
133
|
+
finish_reason?: string;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=azure-openai.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azure-openai.types.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/types/azure-openai.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Azure OpenAI / Microsoft Foundry-specific types and interfaces.
|
|
4
|
+
*
|
|
5
|
+
* Azure exposes OpenAI (and some partner) models through an OpenAI-compatible
|
|
6
|
+
* Chat Completions API. This provider targets the new **v1 route**
|
|
7
|
+
* (`{endpoint}/openai/v1/chat/completions`), where the deployment name is sent
|
|
8
|
+
* as the `model` field in the request body and `api-version` is optional.
|
|
9
|
+
*
|
|
10
|
+
* Authentication uses an Azure API key in the **`api-key` header** (not
|
|
11
|
+
* `Authorization: Bearer`, which Azure reserves for Microsoft Entra ID tokens).
|
|
12
|
+
*
|
|
13
|
+
* Reasoning models (o-series, GPT-5 series) and standard models (gpt-4o, โฆ) take
|
|
14
|
+
* a different parameter set; see `providers/azure-openai-capabilities.ts`.
|
|
15
|
+
*
|
|
16
|
+
* @see https://learn.microsoft.com/en-us/azure/foundry/openai/latest
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
//# sourceMappingURL=azure-openai.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azure-openai.types.js","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/types/azure-openai.types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG"}
|
|
@@ -145,7 +145,9 @@ export declare enum LLMProvider {
|
|
|
145
145
|
/** Google Vertex AI - Service Account auth, EU hosting support */
|
|
146
146
|
VERTEX_AI = "vertex_ai",
|
|
147
147
|
/** AWS Bedrock - Bearer token (API key) auth via Converse API, EU hosting support */
|
|
148
|
-
BEDROCK = "bedrock"
|
|
148
|
+
BEDROCK = "bedrock",
|
|
149
|
+
/** Azure OpenAI / Microsoft Foundry - api-key auth via OpenAI-compatible v1 route, EU data-zone support */
|
|
150
|
+
AZURE_OPENAI = "azure_openai"
|
|
149
151
|
}
|
|
150
152
|
/**
|
|
151
153
|
* Debug information interface (provider-agnostic)
|
|
@@ -174,5 +176,12 @@ export interface LLMDebugInfo {
|
|
|
174
176
|
pageName?: string;
|
|
175
177
|
temperature?: number;
|
|
176
178
|
reasoningEffort?: ReasoningEffort;
|
|
179
|
+
/**
|
|
180
|
+
* Reasoning/thinking tokens reported by the model (output side, since 2.29.0).
|
|
181
|
+
* Surfaced in the log so you can see whether reasoning actually happened โ useful
|
|
182
|
+
* for providers that hide the raw reasoning text (e.g. Azure o-series exposes only
|
|
183
|
+
* the token count). Distinct from `reasoningEffort` (the requested input level).
|
|
184
|
+
*/
|
|
185
|
+
reasoningTokens?: number;
|
|
177
186
|
}
|
|
178
187
|
//# sourceMappingURL=common.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.types.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/types/common.types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"common.types.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/types/common.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEpE;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC,+CAA+C;IAC/C,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEvC;;;;OAIG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB,yFAAyF;IACzF,WAAW,CAAC,EAAE,UAAU,CAAC;CAC1B;AAED,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAExC;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,oBAAoB;IACnC,oEAAoE;IACpE,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAC;IACpB,2FAA2F;IAC3F,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,aAAa,CAAC,EAAE;QACd,kCAAkC;QAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,6BAA6B;QAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,6GAA6G;QAC7G,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,wDAAwD;QACxD,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF;;;;OAIG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED;;GAEG;AACH,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,kEAAkE;IAClE,SAAS,cAAc;IACvB,qFAAqF;IACrF,OAAO,YAAY;IACnB,2GAA2G;IAC3G,YAAY,iBAAiB;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,GAAG,CAAC;IAGjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,IAAI,CAAC;IACzB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,CAAC;IAGF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,GAAG,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAGlB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B"}
|
|
@@ -18,5 +18,7 @@ var LLMProvider;
|
|
|
18
18
|
LLMProvider["VERTEX_AI"] = "vertex_ai";
|
|
19
19
|
/** AWS Bedrock - Bearer token (API key) auth via Converse API, EU hosting support */
|
|
20
20
|
LLMProvider["BEDROCK"] = "bedrock";
|
|
21
|
+
/** Azure OpenAI / Microsoft Foundry - api-key auth via OpenAI-compatible v1 route, EU data-zone support */
|
|
22
|
+
LLMProvider["AZURE_OPENAI"] = "azure_openai";
|
|
21
23
|
})(LLMProvider || (exports.LLMProvider = LLMProvider = {}));
|
|
22
24
|
//# sourceMappingURL=common.types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.types.js","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/types/common.types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA6JH;;GAEG;AACH,IAAY,
|
|
1
|
+
{"version":3,"file":"common.types.js","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/types/common.types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA6JH;;GAEG;AACH,IAAY,WAYX;AAZD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,gCAAiB,CAAA;IACjB,sCAAuB,CAAA;IACvB,gCAAiB,CAAA;IACjB,oCAAqB,CAAA;IACrB,kEAAkE;IAClE,sCAAuB,CAAA;IACvB,qFAAqF;IACrF,kCAAmB,CAAA;IACnB,2GAA2G;IAC3G,4CAA6B,CAAA;AAC/B,CAAC,EAZW,WAAW,2BAAX,WAAW,QAYtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/types/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAC;AAG/B,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/types/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAC;AAG/B,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC"}
|
|
@@ -25,4 +25,5 @@ __exportStar(require("./gemini.types"), exports);
|
|
|
25
25
|
__exportStar(require("./requesty.types"), exports);
|
|
26
26
|
__exportStar(require("./vertex-ai.types"), exports);
|
|
27
27
|
__exportStar(require("./bedrock.types"), exports);
|
|
28
|
+
__exportStar(require("./azure-openai.types"), exports);
|
|
28
29
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,eAAe;AACf,iDAA+B;AAE/B,wCAAwC;AACxC,qDAAmC;AAEnC,0BAA0B;AAC1B,iDAA+B;AAC/B,oDAAkC;AAClC,iDAA+B;AAC/B,mDAAiC;AACjC,oDAAkC;AAClC,kDAAgC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,eAAe;AACf,iDAA+B;AAE/B,wCAAwC;AACxC,qDAAmC;AAEnC,0BAA0B;AAC1B,iDAA+B;AAC/B,oDAAkC;AAClC,iDAA+B;AAC/B,mDAAiC;AACjC,oDAAkC;AAClC,kDAAgC;AAChC,uDAAqC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug-llm.utils.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/utils/debug-llm.utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,SAAS,CAA2F;IACnH,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAA6G;IAChJ,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAA+G;IAEnJ,OAAO,CAAC,MAAM,CAAC,SAAS,CAEiD;IAEzE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAIzB;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAclD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAQ7C;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;IAwDzD;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"debug-llm.utils.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/utils/debug-llm.utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,SAAS,CAA2F;IACnH,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAA6G;IAChJ,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAA+G;IAEnJ,OAAO,CAAC,MAAM,CAAC,SAAS,CAEiD;IAEzE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAIzB;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAclD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAQ7C;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;IAwDzD;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;IA0E1D;;OAEG;WACU,cAAc,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;WA0HtD,UAAU,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;WAMlD,WAAW,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;WAOnD,QAAQ,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CAK9D;AAGD,YAAY,EAAE,YAAY,EAAE,CAAC;AAG7B,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,CAAC;AACzC,YAAY,EAAE,YAAY,IAAI,eAAe,EAAE,CAAC"}
|
|
@@ -164,6 +164,9 @@ class LLMDebugger {
|
|
|
164
164
|
console.log('-'.repeat(50));
|
|
165
165
|
console.log(this.formatMessage(debugInfo.thinking));
|
|
166
166
|
}
|
|
167
|
+
if (debugInfo.reasoningTokens !== undefined) {
|
|
168
|
+
console.log(`\n๐ง Reasoning Tokens: ${debugInfo.reasoningTokens}`);
|
|
169
|
+
}
|
|
167
170
|
// Show key metrics from raw response data
|
|
168
171
|
if (debugInfo.rawResponseData) {
|
|
169
172
|
console.log('\nโฑ๏ธ RESPONSE METRICS:');
|
|
@@ -237,6 +240,7 @@ class LLMDebugger {
|
|
|
237
240
|
- **Base URL**: ${debugInfo.baseUrl}
|
|
238
241
|
${debugInfo.temperature !== undefined ? `- **Temperature**: ${debugInfo.temperature}` : ''}
|
|
239
242
|
${debugInfo.reasoningEffort ? `- **Reasoning Effort**: ${debugInfo.reasoningEffort}` : ''}
|
|
243
|
+
${debugInfo.reasoningTokens !== undefined ? `- **Reasoning Tokens**: ${debugInfo.reasoningTokens}` : ''}
|
|
240
244
|
|
|
241
245
|
## Request Information
|
|
242
246
|
- **Request Timestamp**: ${debugInfo.timestamp.toISOString()}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug-llm.utils.js","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/utils/debug-llm.utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"debug-llm.utils.js","sourceRoot":"","sources":["../../../../../src/middleware/services/llm/utils/debug-llm.utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loonylabs/llm-middleware",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.29.0",
|
|
4
4
|
"description": "Complete middleware infrastructure for LLM-based backends with multi-provider support (Ollama, Anthropic, OpenAI, Google)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"test:provider:requesty": "TEST_PROVIDER=requesty ts-node tests/manual/provider-smoke-test.ts",
|
|
28
28
|
"test:provider:vertex": "ts-node tests/manual/vertex-ai-smoke-test.ts",
|
|
29
29
|
"test:provider:bedrock": "TEST_PROVIDER=bedrock ts-node tests/manual/provider-smoke-test.ts",
|
|
30
|
+
"test:provider:azure": "TEST_PROVIDER=azure ts-node tests/manual/provider-smoke-test.ts",
|
|
30
31
|
"test:vertex:smoke": "ts-node tests/manual/vertex-ai-smoke-test.ts",
|
|
31
32
|
"test:integration:reasoning": "LLM_INTEGRATION_TESTS=true jest tests/integration/reasoning-control.integration.test.ts --testTimeout=120000",
|
|
32
33
|
"test:live": "LLM_INTEGRATION_TESTS=true jest tests/integration/*.integration.test.ts --testTimeout=120000",
|