@carlonicora/nestjs-neo4jsonapi 2.3.0 → 2.4.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/common/usage-attribution.d.ts +218 -0
- package/dist/agents/common/usage-attribution.d.ts.map +1 -0
- package/dist/agents/common/usage-attribution.js +235 -0
- package/dist/agents/common/usage-attribution.js.map +1 -0
- package/dist/agents/community.summariser/services/community.summariser.service.d.ts.map +1 -1
- package/dist/agents/community.summariser/services/community.summariser.service.js +13 -1
- package/dist/agents/community.summariser/services/community.summariser.service.js.map +1 -1
- package/dist/agents/contextualiser/contexts/contextualiser.context.d.ts +24 -1
- package/dist/agents/contextualiser/contexts/contextualiser.context.d.ts.map +1 -1
- package/dist/agents/contextualiser/contexts/contextualiser.context.js +32 -0
- package/dist/agents/contextualiser/contexts/contextualiser.context.js.map +1 -1
- package/dist/agents/contextualiser/factories/contextualiser.context.factory.d.ts +7 -0
- package/dist/agents/contextualiser/factories/contextualiser.context.factory.d.ts.map +1 -1
- package/dist/agents/contextualiser/factories/contextualiser.context.factory.js +5 -0
- package/dist/agents/contextualiser/factories/contextualiser.context.factory.js.map +1 -1
- package/dist/agents/contextualiser/nodes/atomicfacts.node.service.d.ts.map +1 -1
- package/dist/agents/contextualiser/nodes/atomicfacts.node.service.js +4 -0
- package/dist/agents/contextualiser/nodes/atomicfacts.node.service.js.map +1 -1
- package/dist/agents/contextualiser/nodes/chunk.node.service.d.ts.map +1 -1
- package/dist/agents/contextualiser/nodes/chunk.node.service.js +4 -0
- package/dist/agents/contextualiser/nodes/chunk.node.service.js.map +1 -1
- package/dist/agents/contextualiser/nodes/chunk.vector.node.service.d.ts.map +1 -1
- package/dist/agents/contextualiser/nodes/chunk.vector.node.service.js +15 -0
- package/dist/agents/contextualiser/nodes/chunk.vector.node.service.js.map +1 -1
- package/dist/agents/contextualiser/nodes/keyconcepts.node.service.d.ts.map +1 -1
- package/dist/agents/contextualiser/nodes/keyconcepts.node.service.js +11 -0
- package/dist/agents/contextualiser/nodes/keyconcepts.node.service.js.map +1 -1
- package/dist/agents/contextualiser/nodes/question.refiner.node.service.d.ts.map +1 -1
- package/dist/agents/contextualiser/nodes/question.refiner.node.service.js +4 -0
- package/dist/agents/contextualiser/nodes/question.refiner.node.service.js.map +1 -1
- package/dist/agents/contextualiser/nodes/rational.node.service.d.ts.map +1 -1
- package/dist/agents/contextualiser/nodes/rational.node.service.js +4 -0
- package/dist/agents/contextualiser/nodes/rational.node.service.js.map +1 -1
- package/dist/agents/contextualiser/services/contextualiser.service.d.ts +7 -0
- package/dist/agents/contextualiser/services/contextualiser.service.d.ts.map +1 -1
- package/dist/agents/contextualiser/services/contextualiser.service.js +17 -5
- package/dist/agents/contextualiser/services/contextualiser.service.js.map +1 -1
- package/dist/agents/drift/contexts/drift.context.d.ts +25 -1
- package/dist/agents/drift/contexts/drift.context.d.ts.map +1 -1
- package/dist/agents/drift/contexts/drift.context.js +32 -0
- package/dist/agents/drift/contexts/drift.context.js.map +1 -1
- package/dist/agents/drift/nodes/followup.node.service.d.ts.map +1 -1
- package/dist/agents/drift/nodes/followup.node.service.js +4 -0
- package/dist/agents/drift/nodes/followup.node.service.js.map +1 -1
- package/dist/agents/drift/nodes/hyde.node.service.d.ts.map +1 -1
- package/dist/agents/drift/nodes/hyde.node.service.js +9 -1
- package/dist/agents/drift/nodes/hyde.node.service.js.map +1 -1
- package/dist/agents/drift/nodes/primer.answer.node.service.d.ts.map +1 -1
- package/dist/agents/drift/nodes/primer.answer.node.service.js +4 -0
- package/dist/agents/drift/nodes/primer.answer.node.service.js.map +1 -1
- package/dist/agents/drift/nodes/synthesis.node.service.d.ts.map +1 -1
- package/dist/agents/drift/nodes/synthesis.node.service.js +4 -0
- package/dist/agents/drift/nodes/synthesis.node.service.js.map +1 -1
- package/dist/agents/drift/services/drift.search.service.d.ts +9 -0
- package/dist/agents/drift/services/drift.search.service.d.ts.map +1 -1
- package/dist/agents/drift/services/drift.search.service.js +22 -5
- package/dist/agents/drift/services/drift.search.service.js.map +1 -1
- package/dist/agents/graph/services/graph.search.service.d.ts.map +1 -1
- package/dist/agents/graph/services/graph.search.service.js +10 -1
- package/dist/agents/graph/services/graph.search.service.js.map +1 -1
- package/dist/agents/graph/tools/tool.factory.d.ts +6 -0
- package/dist/agents/graph/tools/tool.factory.d.ts.map +1 -1
- package/dist/agents/graph/tools/tool.factory.js.map +1 -1
- package/dist/agents/index.d.ts +7 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +13 -1
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/operator/contexts/operator.context.d.ts +37 -1
- package/dist/agents/operator/contexts/operator.context.d.ts.map +1 -1
- package/dist/agents/operator/contexts/operator.context.js +8 -0
- package/dist/agents/operator/contexts/operator.context.js.map +1 -1
- package/dist/agents/operator/interfaces/operator.tool.interface.d.ts +8 -0
- package/dist/agents/operator/interfaces/operator.tool.interface.d.ts.map +1 -1
- package/dist/agents/operator/interfaces/operator.tool.interface.js.map +1 -1
- package/dist/agents/operator/services/operator.service.d.ts +8 -0
- package/dist/agents/operator/services/operator.service.d.ts.map +1 -1
- package/dist/agents/operator/services/operator.service.js +29 -0
- package/dist/agents/operator/services/operator.service.js.map +1 -1
- package/dist/agents/operator/tools/operator.tool.registry.d.ts.map +1 -1
- package/dist/agents/operator/tools/operator.tool.registry.js +2 -1
- package/dist/agents/operator/tools/operator.tool.registry.js.map +1 -1
- package/dist/agents/operator/tools/search-communities.tool.d.ts +8 -2
- package/dist/agents/operator/tools/search-communities.tool.d.ts.map +1 -1
- package/dist/agents/operator/tools/search-communities.tool.js +16 -4
- package/dist/agents/operator/tools/search-communities.tool.js.map +1 -1
- package/dist/agents/operator/tools/search-documents.tool.d.ts.map +1 -1
- package/dist/agents/operator/tools/search-documents.tool.js +5 -0
- package/dist/agents/operator/tools/search-documents.tool.js.map +1 -1
- package/dist/agents/responder/contexts/responder.context.d.ts +31 -0
- package/dist/agents/responder/contexts/responder.context.d.ts.map +1 -1
- package/dist/agents/responder/contexts/responder.context.js +8 -0
- package/dist/agents/responder/contexts/responder.context.js.map +1 -1
- package/dist/agents/responder/factories/responder.context.factory.d.ts +4 -0
- package/dist/agents/responder/factories/responder.context.factory.d.ts.map +1 -1
- package/dist/agents/responder/factories/responder.context.factory.js +2 -0
- package/dist/agents/responder/factories/responder.context.factory.js.map +1 -1
- package/dist/agents/responder/nodes/graph.node.service.d.ts +6 -0
- package/dist/agents/responder/nodes/graph.node.service.d.ts.map +1 -1
- package/dist/agents/responder/nodes/graph.node.service.js +20 -0
- package/dist/agents/responder/nodes/graph.node.service.js.map +1 -1
- package/dist/agents/responder/nodes/planner.node.service.d.ts.map +1 -1
- package/dist/agents/responder/nodes/planner.node.service.js +9 -0
- package/dist/agents/responder/nodes/planner.node.service.js.map +1 -1
- package/dist/agents/responder/nodes/responder.answer.node.service.d.ts.map +1 -1
- package/dist/agents/responder/nodes/responder.answer.node.service.js +9 -0
- package/dist/agents/responder/nodes/responder.answer.node.service.js.map +1 -1
- package/dist/agents/responder/services/responder.service.d.ts +16 -0
- package/dist/agents/responder/services/responder.service.d.ts.map +1 -1
- package/dist/agents/responder/services/responder.service.js +29 -5
- package/dist/agents/responder/services/responder.service.js.map +1 -1
- package/dist/agents/summariser/services/summariser.service.d.ts +7 -0
- package/dist/agents/summariser/services/summariser.service.d.ts.map +1 -1
- package/dist/agents/summariser/services/summariser.service.js +15 -3
- package/dist/agents/summariser/services/summariser.service.js.map +1 -1
- package/dist/common/helpers/index.d.ts +1 -0
- package/dist/common/helpers/index.d.ts.map +1 -1
- package/dist/common/helpers/index.js +1 -0
- package/dist/common/helpers/index.js.map +1 -1
- package/dist/common/helpers/map-with-concurrency.d.ts +23 -0
- package/dist/common/helpers/map-with-concurrency.d.ts.map +1 -0
- package/dist/common/helpers/map-with-concurrency.js +60 -0
- package/dist/common/helpers/map-with-concurrency.js.map +1 -0
- package/dist/common/tokens.d.ts +2 -1
- package/dist/common/tokens.d.ts.map +1 -1
- package/dist/common/tokens.js +2 -1
- package/dist/common/tokens.js.map +1 -1
- package/dist/config/base.config.d.ts +19 -0
- package/dist/config/base.config.d.ts.map +1 -1
- package/dist/config/base.config.js +30 -3
- package/dist/config/base.config.js.map +1 -1
- package/dist/config/interfaces/config.ai.interface.d.ts +10 -1
- package/dist/config/interfaces/config.ai.interface.d.ts.map +1 -1
- package/dist/config/interfaces/config.chunk.queues.interface.d.ts +13 -0
- package/dist/config/interfaces/config.chunk.queues.interface.d.ts.map +1 -1
- package/dist/config/interfaces/config.credits.interface.d.ts +1 -1
- package/dist/core/blocknote/services/blocknote.service.d.ts.map +1 -1
- package/dist/core/blocknote/services/blocknote.service.js +7 -0
- package/dist/core/blocknote/services/blocknote.service.js.map +1 -1
- package/dist/core/llm/services/audio.llm.service.d.ts +70 -1
- package/dist/core/llm/services/audio.llm.service.d.ts.map +1 -1
- package/dist/core/llm/services/audio.llm.service.js +118 -3
- package/dist/core/llm/services/audio.llm.service.js.map +1 -1
- package/dist/core/llm/services/document-ai.service.d.ts +6 -0
- package/dist/core/llm/services/document-ai.service.d.ts.map +1 -1
- package/dist/core/llm/services/document-ai.service.js +1 -0
- package/dist/core/llm/services/document-ai.service.js.map +1 -1
- package/dist/core/llm/services/embedder.service.d.ts +105 -0
- package/dist/core/llm/services/embedder.service.d.ts.map +1 -1
- package/dist/core/llm/services/embedder.service.js +237 -7
- package/dist/core/llm/services/embedder.service.js.map +1 -1
- package/dist/core/llm/services/llm.service.d.ts +103 -6
- package/dist/core/llm/services/llm.service.d.ts.map +1 -1
- package/dist/core/llm/services/llm.service.js +570 -148
- package/dist/core/llm/services/llm.service.js.map +1 -1
- package/dist/core/llm/services/model.service.d.ts +25 -0
- package/dist/core/llm/services/model.service.d.ts.map +1 -1
- package/dist/core/llm/services/model.service.js +76 -4
- package/dist/core/llm/services/model.service.js.map +1 -1
- package/dist/core/llm/utils/repair-truncated-json.d.ts +29 -0
- package/dist/core/llm/utils/repair-truncated-json.d.ts.map +1 -0
- package/dist/core/llm/utils/repair-truncated-json.js +111 -0
- package/dist/core/llm/utils/repair-truncated-json.js.map +1 -0
- package/dist/foundations/assistant/services/assistant.service.d.ts.map +1 -1
- package/dist/foundations/assistant/services/assistant.service.js +12 -0
- package/dist/foundations/assistant/services/assistant.service.js.map +1 -1
- package/dist/foundations/atomicfact/services/atomicfact.service.d.ts +7 -0
- package/dist/foundations/atomicfact/services/atomicfact.service.d.ts.map +1 -1
- package/dist/foundations/atomicfact/services/atomicfact.service.js +6 -0
- package/dist/foundations/atomicfact/services/atomicfact.service.js.map +1 -1
- package/dist/foundations/chunk/processors/chunk.processor.d.ts.map +1 -1
- package/dist/foundations/chunk/processors/chunk.processor.js +7 -1
- package/dist/foundations/chunk/processors/chunk.processor.js.map +1 -1
- package/dist/foundations/chunk/repositories/chunk.repository.d.ts +90 -2
- package/dist/foundations/chunk/repositories/chunk.repository.d.ts.map +1 -1
- package/dist/foundations/chunk/repositories/chunk.repository.js +205 -31
- package/dist/foundations/chunk/repositories/chunk.repository.js.map +1 -1
- package/dist/foundations/chunk/services/chunk.service.d.ts.map +1 -1
- package/dist/foundations/chunk/services/chunk.service.js +50 -1
- package/dist/foundations/chunk/services/chunk.service.js.map +1 -1
- package/dist/foundations/chunker/chunker.module.d.ts.map +1 -1
- package/dist/foundations/chunker/chunker.module.js +4 -1
- package/dist/foundations/chunker/chunker.module.js.map +1 -1
- package/dist/foundations/chunker/services/chunker.service.d.ts +57 -1
- package/dist/foundations/chunker/services/chunker.service.d.ts.map +1 -1
- package/dist/foundations/chunker/services/chunker.service.js +207 -16
- package/dist/foundations/chunker/services/chunker.service.js.map +1 -1
- package/dist/foundations/chunker/services/types/pdf.service.d.ts +42 -1
- package/dist/foundations/chunker/services/types/pdf.service.d.ts.map +1 -1
- package/dist/foundations/chunker/services/types/pdf.service.js +111 -22
- package/dist/foundations/chunker/services/types/pdf.service.js.map +1 -1
- package/dist/foundations/chunker/services/types/semanticsplitter.service.d.ts.map +1 -1
- package/dist/foundations/chunker/services/types/semanticsplitter.service.js +24 -3
- package/dist/foundations/chunker/services/types/semanticsplitter.service.js.map +1 -1
- package/dist/foundations/company/repositories/company.repository.d.ts +1 -1
- package/dist/foundations/company/repositories/company.repository.d.ts.map +1 -1
- package/dist/foundations/company/repositories/company.repository.js +31 -14
- package/dist/foundations/company/repositories/company.repository.js.map +1 -1
- package/dist/foundations/how-to/processors/how-to.processor.d.ts.map +1 -1
- package/dist/foundations/how-to/processors/how-to.processor.js +20 -7
- package/dist/foundations/how-to/processors/how-to.processor.js.map +1 -1
- package/dist/foundations/keyconcept/repositories/keyconcept.repository.d.ts +25 -1
- package/dist/foundations/keyconcept/repositories/keyconcept.repository.d.ts.map +1 -1
- package/dist/foundations/keyconcept/repositories/keyconcept.repository.js +38 -2
- package/dist/foundations/keyconcept/repositories/keyconcept.repository.js.map +1 -1
- package/dist/foundations/keyconcept/services/keyconcept.service.d.ts +5 -0
- package/dist/foundations/keyconcept/services/keyconcept.service.d.ts.map +1 -1
- package/dist/foundations/keyconcept/services/keyconcept.service.js +4 -0
- package/dist/foundations/keyconcept/services/keyconcept.service.js.map +1 -1
- package/dist/foundations/tokenusage/entities/tokenusage.js +1 -1
- package/dist/foundations/tokenusage/enums/tokenusage.type.d.ts +4 -1
- package/dist/foundations/tokenusage/enums/tokenusage.type.d.ts.map +1 -1
- package/dist/foundations/tokenusage/enums/tokenusage.type.js +3 -0
- package/dist/foundations/tokenusage/enums/tokenusage.type.js.map +1 -1
- package/dist/foundations/tokenusage/repositories/tokenusage.admin.repository.js +3 -3
- package/dist/foundations/tokenusage/repositories/tokenusage.repository.js +2 -2
- package/dist/foundations/tokenusage/services/tokenusage.service.d.ts +6 -1
- package/dist/foundations/tokenusage/services/tokenusage.service.d.ts.map +1 -1
- package/dist/foundations/tokenusage/services/tokenusage.service.js +7 -2
- package/dist/foundations/tokenusage/services/tokenusage.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { ConfigService } from "@nestjs/config";
|
|
2
|
+
import { TokenUsageRecorderInterface } from "../../../common/tokens";
|
|
2
3
|
import { BaseConfigInterface } from "../../../config/interfaces";
|
|
4
|
+
import { TokenUsageService } from "../../../foundations/tokenusage/services/tokenusage.service";
|
|
3
5
|
import { type TranscodeOptions } from "./audio/ffmpeg-transcode";
|
|
4
6
|
import { LLMCallDumper } from "./llm-call-dumper.service";
|
|
5
7
|
import { ModelService } from "./model.service";
|
|
@@ -23,6 +25,19 @@ export interface AudioCallParams {
|
|
|
23
25
|
* (high-pass, silence trim). Omit for the plain resample. See TranscodeOptions.
|
|
24
26
|
*/
|
|
25
27
|
transcode?: TranscodeOptions;
|
|
28
|
+
/**
|
|
29
|
+
* Cost-attribution category written to the usage record. Free-form so each
|
|
30
|
+
* application owns its own vocabulary; defaults to "transcription".
|
|
31
|
+
*/
|
|
32
|
+
tokenUsageType?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Opt-in cost attribution, exactly like `LLMCallParams`: BOTH of these must
|
|
35
|
+
* be present or no usage record is written at all. The package stays
|
|
36
|
+
* domain-agnostic — the caller decides what the transcription is billed
|
|
37
|
+
* against (narr8: the Session the recording belongs to).
|
|
38
|
+
*/
|
|
39
|
+
relationshipId?: string;
|
|
40
|
+
relationshipType?: string;
|
|
26
41
|
}
|
|
27
42
|
export interface TranscriptionResult {
|
|
28
43
|
text: string;
|
|
@@ -64,9 +79,63 @@ export declare class AudioLLMService {
|
|
|
64
79
|
private readonly modelService;
|
|
65
80
|
private readonly config;
|
|
66
81
|
private readonly dumper;
|
|
82
|
+
private readonly tokenUsageService?;
|
|
83
|
+
private readonly tokenUsageRecorder?;
|
|
67
84
|
private readonly logger;
|
|
68
|
-
constructor(modelService: ModelService, config: ConfigService<BaseConfigInterface>, dumper: LLMCallDumper);
|
|
85
|
+
constructor(modelService: ModelService, config: ConfigService<BaseConfigInterface>, dumper: LLMCallDumper, tokenUsageService?: TokenUsageService, tokenUsageRecorder?: TokenUsageRecorderInterface);
|
|
69
86
|
call(params: AudioCallParams): Promise<TranscriptionResult>;
|
|
87
|
+
/**
|
|
88
|
+
* True once the "direct STT reports no tokens" warning has been emitted by
|
|
89
|
+
* this instance. The audio service is a singleton, so this throttles the
|
|
90
|
+
* warning to once per process instead of once per utterance.
|
|
91
|
+
*/
|
|
92
|
+
private directPathUnbilledWarned;
|
|
93
|
+
/**
|
|
94
|
+
* Makes an unbillable engine LOUD instead of silent.
|
|
95
|
+
*
|
|
96
|
+
* The direct `/audio/transcriptions` engine (AUDIO_DIRECT_URL) reports no
|
|
97
|
+
* token counts at all, and the zero-token rule in {@link persistUsage} then
|
|
98
|
+
* writes no usage record — so switching an application to that engine
|
|
99
|
+
* silently turns transcription back into completely unbilled work. There is
|
|
100
|
+
* no per-minute rate to fall back on (`audioSeconds` is available on the
|
|
101
|
+
* result, but no price for it is configured anywhere), and inventing a token
|
|
102
|
+
* count would be a lie, so the honest fix is a warning that names the
|
|
103
|
+
* consequence. Emitted once per process — never in the hot per-utterance
|
|
104
|
+
* path beyond a boolean check.
|
|
105
|
+
*/
|
|
106
|
+
private warnIfDirectPathUnbilled;
|
|
107
|
+
/**
|
|
108
|
+
* Records transcription usage. Attribution is opt-in — same contract as
|
|
109
|
+
* `LLMService.persistUsage`: no relationship, no record, so the package stays
|
|
110
|
+
* domain-agnostic. Cost comes from the `audio` config block rather than
|
|
111
|
+
* `computeCost()`, which only knows the text tiers (`configForWeight` never
|
|
112
|
+
* looks at `ai.audio`), hence `costOverride`.
|
|
113
|
+
*
|
|
114
|
+
* ZERO-TOKEN RULE (mirrors `LLMService.persistUsageOnFailure`): a call that
|
|
115
|
+
* reports no tokens records NOTHING. `recordTokenUsage` floors every row at
|
|
116
|
+
* `minCreditsPerRecord`, so a 0/0 row would invent a charge for tokens nobody
|
|
117
|
+
* spent. This is what the direct `/audio/transcriptions` path always hits —
|
|
118
|
+
* it returns no token counts by design — so that engine bills nothing until
|
|
119
|
+
* the endpoint reports usage (and says so loudly: see
|
|
120
|
+
* {@link warnIfDirectPathUnbilled}). The chat path (AUDIO_DIRECT_URL unset)
|
|
121
|
+
* returns real counts and is billed normally.
|
|
122
|
+
*
|
|
123
|
+
* FLOOR-EXEMPT (`applyMinimum: false`), same rationale as EmbedderService:
|
|
124
|
+
* transcription is per-utterance, not per-request. A session averages a few
|
|
125
|
+
* hundred segments and can exceed a thousand, each truly worth a fraction of
|
|
126
|
+
* a credit, so applying the per-record floor to every one of them would bill
|
|
127
|
+
* a large multiple of the real cost. The floor exists to stop sub-cent REAL
|
|
128
|
+
* usage rounding to nothing on a handful of records, not to price a thousand
|
|
129
|
+
* of them.
|
|
130
|
+
*
|
|
131
|
+
* Writes through the application-provided `TOKEN_USAGE_RECORDER` when one is
|
|
132
|
+
* bound, falling back to the module-local `TokenUsageService` otherwise (see
|
|
133
|
+
* the token's docblock for why package code must use this seam).
|
|
134
|
+
*
|
|
135
|
+
* Never throws: a persistence failure logs a warning and the transcription
|
|
136
|
+
* result stands.
|
|
137
|
+
*/
|
|
138
|
+
private persistUsage;
|
|
70
139
|
private callChat;
|
|
71
140
|
/**
|
|
72
141
|
* Dump the full upstream error for diagnostics. LangChain wraps the openai
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio.llm.service.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/services/audio.llm.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAqB,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAsB,KAAK,gBAAgB,EAAwB,MAAM,0BAA0B,CAAC;AAC3G,OAAO,EAAe,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"audio.llm.service.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/services/audio.llm.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAwB,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAqB,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6DAA6D,CAAC;AAChG,OAAO,EAAsB,KAAK,gBAAgB,EAAwB,MAAM,0BAA0B,CAAC;AAC3G,OAAO,EAAe,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK/C;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC;CACtB;AAwBD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBACa,eAAe;IAIxB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAIX,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACL,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAVhF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;gBAGxC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAC1C,MAAM,EAAE,aAAa,EAIT,iBAAiB,CAAC,EAAE,iBAAiB,EACP,kBAAkB,CAAC,EAAE,2BAA2B;IAGvG,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA8CjE;;;;OAIG;IACH,OAAO,CAAC,wBAAwB,CAAS;IAEzC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,wBAAwB;IAehC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;YACW,YAAY;YAiCZ,QAAQ;IA8EtB;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;YAkDX,UAAU;CAuFzB"}
|
|
@@ -41,6 +41,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
41
41
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
42
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
43
|
};
|
|
44
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
45
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
46
|
+
};
|
|
44
47
|
var AudioLLMService_1;
|
|
45
48
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
49
|
exports.AudioLLMService = void 0;
|
|
@@ -48,9 +51,13 @@ const messages_1 = require("@langchain/core/messages");
|
|
|
48
51
|
const common_1 = require("@nestjs/common");
|
|
49
52
|
const config_1 = require("@nestjs/config");
|
|
50
53
|
const fs = __importStar(require("fs"));
|
|
54
|
+
const tokens_1 = require("../../../common/tokens");
|
|
55
|
+
const tokenusage_service_1 = require("../../../foundations/tokenusage/services/tokenusage.service");
|
|
51
56
|
const ffmpeg_transcode_1 = require("./audio/ffmpeg-transcode");
|
|
52
57
|
const llm_call_dumper_service_1 = require("./llm-call-dumper.service");
|
|
53
58
|
const model_service_1 = require("./model.service");
|
|
59
|
+
/** Default `tokenUsageType` written when a caller attributes a call but names no category. */
|
|
60
|
+
const DEFAULT_AUDIO_TOKEN_USAGE_TYPE = "transcription";
|
|
54
61
|
function extractText(content) {
|
|
55
62
|
if (typeof content === "string")
|
|
56
63
|
return content;
|
|
@@ -89,11 +96,19 @@ function extractText(content) {
|
|
|
89
96
|
* No retry layer — BullMQ's job-level retry handles transient failures.
|
|
90
97
|
*/
|
|
91
98
|
let AudioLLMService = AudioLLMService_1 = class AudioLLMService {
|
|
92
|
-
constructor(modelService, config, dumper) {
|
|
99
|
+
constructor(modelService, config, dumper, tokenUsageService, tokenUsageRecorder) {
|
|
93
100
|
this.modelService = modelService;
|
|
94
101
|
this.config = config;
|
|
95
102
|
this.dumper = dumper;
|
|
103
|
+
this.tokenUsageService = tokenUsageService;
|
|
104
|
+
this.tokenUsageRecorder = tokenUsageRecorder;
|
|
96
105
|
this.logger = new common_1.Logger(AudioLLMService_1.name);
|
|
106
|
+
/**
|
|
107
|
+
* True once the "direct STT reports no tokens" warning has been emitted by
|
|
108
|
+
* this instance. The audio service is a singleton, so this throttles the
|
|
109
|
+
* warning to once per process instead of once per utterance.
|
|
110
|
+
*/
|
|
111
|
+
this.directPathUnbilledWarned = false;
|
|
97
112
|
}
|
|
98
113
|
async call(params) {
|
|
99
114
|
const audio = this.config.get("ai").audio;
|
|
@@ -113,9 +128,21 @@ let AudioLLMService = AudioLLMService_1 = class AudioLLMService {
|
|
|
113
128
|
});
|
|
114
129
|
this.logger.log(`audio-call: transcode done → ${transcode.path} durationSeconds=${transcode.durationSeconds.toFixed(2)}`);
|
|
115
130
|
try {
|
|
116
|
-
|
|
131
|
+
const result = audio.directUrl
|
|
117
132
|
? await this.callDirect(params, audio, transcode)
|
|
118
133
|
: await this.callChat(params, audio, transcode);
|
|
134
|
+
this.warnIfDirectPathUnbilled(audio, result.tokenUsage);
|
|
135
|
+
await this.persistUsage(params, result.tokenUsage);
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
// A failed transcription is not a free call in principle, but neither
|
|
140
|
+
// branch surfaces the tokens it burned before throwing (LangChain drops
|
|
141
|
+
// usage_metadata on error; /audio/transcriptions never reports any), so
|
|
142
|
+
// this is {0,0} today and the zero-token rule in persistUsage skips it.
|
|
143
|
+
// Wired anyway so partial usage is billed the day a branch can report it.
|
|
144
|
+
await this.persistUsage(params, { input: 0, output: 0 });
|
|
145
|
+
throw error;
|
|
119
146
|
}
|
|
120
147
|
finally {
|
|
121
148
|
await transcode.cleanup().catch((err) => {
|
|
@@ -123,6 +150,90 @@ let AudioLLMService = AudioLLMService_1 = class AudioLLMService {
|
|
|
123
150
|
});
|
|
124
151
|
}
|
|
125
152
|
}
|
|
153
|
+
/**
|
|
154
|
+
* Makes an unbillable engine LOUD instead of silent.
|
|
155
|
+
*
|
|
156
|
+
* The direct `/audio/transcriptions` engine (AUDIO_DIRECT_URL) reports no
|
|
157
|
+
* token counts at all, and the zero-token rule in {@link persistUsage} then
|
|
158
|
+
* writes no usage record — so switching an application to that engine
|
|
159
|
+
* silently turns transcription back into completely unbilled work. There is
|
|
160
|
+
* no per-minute rate to fall back on (`audioSeconds` is available on the
|
|
161
|
+
* result, but no price for it is configured anywhere), and inventing a token
|
|
162
|
+
* count would be a lie, so the honest fix is a warning that names the
|
|
163
|
+
* consequence. Emitted once per process — never in the hot per-utterance
|
|
164
|
+
* path beyond a boolean check.
|
|
165
|
+
*/
|
|
166
|
+
warnIfDirectPathUnbilled(audio, tokens) {
|
|
167
|
+
if (!audio.directUrl)
|
|
168
|
+
return;
|
|
169
|
+
if (tokens.input + tokens.output > 0)
|
|
170
|
+
return;
|
|
171
|
+
if (this.directPathUnbilledWarned)
|
|
172
|
+
return;
|
|
173
|
+
this.directPathUnbilledWarned = true;
|
|
174
|
+
this.logger.warn(`audio-billing: TRANSCRIPTION USAGE IS NOT BEING BILLED — the direct STT endpoint ` +
|
|
175
|
+
`(AUDIO_DIRECT_URL=${audio.directUrl}, model=${audio.model}) returns no token counts, so every ` +
|
|
176
|
+
`transcription records zero usage and deducts no credits. Billing this engine needs a ` +
|
|
177
|
+
`per-duration rate (the call already measures audioSeconds); until one exists this cost is ` +
|
|
178
|
+
`invisible. Unset AUDIO_DIRECT_URL to use the chat engine, which reports real tokens and bills ` +
|
|
179
|
+
`normally. Logged once per process.`);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Records transcription usage. Attribution is opt-in — same contract as
|
|
183
|
+
* `LLMService.persistUsage`: no relationship, no record, so the package stays
|
|
184
|
+
* domain-agnostic. Cost comes from the `audio` config block rather than
|
|
185
|
+
* `computeCost()`, which only knows the text tiers (`configForWeight` never
|
|
186
|
+
* looks at `ai.audio`), hence `costOverride`.
|
|
187
|
+
*
|
|
188
|
+
* ZERO-TOKEN RULE (mirrors `LLMService.persistUsageOnFailure`): a call that
|
|
189
|
+
* reports no tokens records NOTHING. `recordTokenUsage` floors every row at
|
|
190
|
+
* `minCreditsPerRecord`, so a 0/0 row would invent a charge for tokens nobody
|
|
191
|
+
* spent. This is what the direct `/audio/transcriptions` path always hits —
|
|
192
|
+
* it returns no token counts by design — so that engine bills nothing until
|
|
193
|
+
* the endpoint reports usage (and says so loudly: see
|
|
194
|
+
* {@link warnIfDirectPathUnbilled}). The chat path (AUDIO_DIRECT_URL unset)
|
|
195
|
+
* returns real counts and is billed normally.
|
|
196
|
+
*
|
|
197
|
+
* FLOOR-EXEMPT (`applyMinimum: false`), same rationale as EmbedderService:
|
|
198
|
+
* transcription is per-utterance, not per-request. A session averages a few
|
|
199
|
+
* hundred segments and can exceed a thousand, each truly worth a fraction of
|
|
200
|
+
* a credit, so applying the per-record floor to every one of them would bill
|
|
201
|
+
* a large multiple of the real cost. The floor exists to stop sub-cent REAL
|
|
202
|
+
* usage rounding to nothing on a handful of records, not to price a thousand
|
|
203
|
+
* of them.
|
|
204
|
+
*
|
|
205
|
+
* Writes through the application-provided `TOKEN_USAGE_RECORDER` when one is
|
|
206
|
+
* bound, falling back to the module-local `TokenUsageService` otherwise (see
|
|
207
|
+
* the token's docblock for why package code must use this seam).
|
|
208
|
+
*
|
|
209
|
+
* Never throws: a persistence failure logs a warning and the transcription
|
|
210
|
+
* result stands.
|
|
211
|
+
*/
|
|
212
|
+
async persistUsage(params, tokens) {
|
|
213
|
+
if (!params.relationshipId || !params.relationshipType)
|
|
214
|
+
return;
|
|
215
|
+
if (tokens.input + tokens.output === 0)
|
|
216
|
+
return;
|
|
217
|
+
const recorder = this.tokenUsageRecorder ?? this.tokenUsageService;
|
|
218
|
+
if (!recorder)
|
|
219
|
+
return;
|
|
220
|
+
const audio = this.config.get("ai")?.audio;
|
|
221
|
+
const cost = (tokens.input * (audio?.inputCostPer1MTokens ?? 0) + tokens.output * (audio?.outputCostPer1MTokens ?? 0)) /
|
|
222
|
+
1_000_000;
|
|
223
|
+
try {
|
|
224
|
+
await recorder.recordTokenUsage({
|
|
225
|
+
tokens,
|
|
226
|
+
type: params.tokenUsageType ?? DEFAULT_AUDIO_TOKEN_USAGE_TYPE,
|
|
227
|
+
relationshipId: params.relationshipId,
|
|
228
|
+
relationshipType: params.relationshipType,
|
|
229
|
+
costOverride: cost,
|
|
230
|
+
applyMinimum: false,
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
catch (err) {
|
|
234
|
+
this.logger.warn(`Transcription usage persistence failed — continuing: ${String(err)}`);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
126
237
|
// ─────────────────────────────────────────────────────────────────────────
|
|
127
238
|
// Chat-LLM branch (audio.directUrl unset) — provider routing via ModelService
|
|
128
239
|
// ─────────────────────────────────────────────────────────────────────────
|
|
@@ -320,8 +431,12 @@ let AudioLLMService = AudioLLMService_1 = class AudioLLMService {
|
|
|
320
431
|
exports.AudioLLMService = AudioLLMService;
|
|
321
432
|
exports.AudioLLMService = AudioLLMService = AudioLLMService_1 = __decorate([
|
|
322
433
|
(0, common_1.Injectable)(),
|
|
434
|
+
__param(3, (0, common_1.Optional)()),
|
|
435
|
+
__param(4, (0, common_1.Optional)()),
|
|
436
|
+
__param(4, (0, common_1.Inject)(tokens_1.TOKEN_USAGE_RECORDER)),
|
|
323
437
|
__metadata("design:paramtypes", [model_service_1.ModelService,
|
|
324
438
|
config_1.ConfigService,
|
|
325
|
-
llm_call_dumper_service_1.LLMCallDumper
|
|
439
|
+
llm_call_dumper_service_1.LLMCallDumper,
|
|
440
|
+
tokenusage_service_1.TokenUsageService, Object])
|
|
326
441
|
], AudioLLMService);
|
|
327
442
|
//# sourceMappingURL=audio.llm.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio.llm.service.js","sourceRoot":"","sources":["../../../../src/core/llm/services/audio.llm.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audio.llm.service.js","sourceRoot":"","sources":["../../../../src/core/llm/services/audio.llm.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,12 @@ export declare class DocumentAiService {
|
|
|
30
30
|
output: number;
|
|
31
31
|
};
|
|
32
32
|
ocrText: string;
|
|
33
|
+
/**
|
|
34
|
+
* Number of pages the OCR provider actually processed. OCR is billed PER PAGE, not
|
|
35
|
+
* per token, so this is the only usable cost signal for this call — callers multiply
|
|
36
|
+
* it by `ai.documentAi.costPerPage` and record it as a `costOverride`.
|
|
37
|
+
*/
|
|
38
|
+
pages: number;
|
|
33
39
|
}>;
|
|
34
40
|
}
|
|
35
41
|
//# sourceMappingURL=document-ai.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-ai.service.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/services/document-ai.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAqB,MAAM,4BAA4B,CAAC;AAGpF;;;;;;;;;;;GAWG;AACH,qBACa,iBAAiB;IAIhB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;IAC7D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;gBAEb,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC;IAEjE,OAAO,CAAC,MAAM,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC;QACnF,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9C,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"document-ai.service.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/services/document-ai.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAqB,MAAM,4BAA4B,CAAC;AAGpF;;;;;;;;;;;GAWG;AACH,qBACa,iBAAiB;IAIhB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;IAC7D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;gBAEb,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC;IAEjE,OAAO,CAAC,MAAM,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC;QACnF,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9C,OAAO,EAAE,MAAM,CAAC;QAChB;;;;WAIG;QACH,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CAiEH"}
|
|
@@ -89,6 +89,7 @@ let DocumentAiService = DocumentAiService_1 = class DocumentAiService {
|
|
|
89
89
|
confidence: typeof parsed.confidence === "number" ? parsed.confidence : 90,
|
|
90
90
|
tokenUsage: { input: 0, output: 0 }, // OCR is billed per page, not tokens
|
|
91
91
|
ocrText,
|
|
92
|
+
pages: json?.pages?.length ?? 0,
|
|
92
93
|
};
|
|
93
94
|
}
|
|
94
95
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-ai.service.js","sourceRoot":"","sources":["../../../../src/core/llm/services/document-ai.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AAEpD,2CAA+C;AAE/C,wDAA+D;AAE/D;;;;;;;;;;;GAWG;AAEI,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAI5B,YAA6B,MAA0C;QAA1C,WAAM,GAAN,MAAM,CAAoC;QAHtD,WAAM,GAAG,IAAI,eAAM,CAAC,mBAAiB,CAAC,IAAI,CAAC,CAAC;QAC5C,oBAAe,GAAG,MAAM,CAAC;IAEgC,CAAC;IAE3E,KAAK,CAAC,OAAO,CAAC,MAA4D;
|
|
1
|
+
{"version":3,"file":"document-ai.service.js","sourceRoot":"","sources":["../../../../src/core/llm/services/document-ai.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,42 @@ export declare class EmbedderService {
|
|
|
26
26
|
attribution?: EmbedderAttribution;
|
|
27
27
|
}): Promise<any>;
|
|
28
28
|
vectoriseTextBatch(texts: string[], attribution?: EmbedderAttribution): Promise<any[]>;
|
|
29
|
+
/**
|
|
30
|
+
* Embeds ONE text, slicing it first when it exceeds the provider's per-input
|
|
31
|
+
* cap: every slice goes through the same (rate-limited) embedder and the
|
|
32
|
+
* slice vectors are mean-pooled, so the caller always gets exactly one vector
|
|
33
|
+
* for one text and no oversized request ever reaches the provider.
|
|
34
|
+
*/
|
|
35
|
+
private embedGuarded;
|
|
36
|
+
/**
|
|
37
|
+
* Sequential on purpose: it mirrors RateLimitedEmbedder.embedDocuments, which
|
|
38
|
+
* walks its sub-batches one at a time (rate-limited-embedder.ts:77) so a
|
|
39
|
+
* single large input never raids the shared token bucket in one burst.
|
|
40
|
+
*/
|
|
41
|
+
private embedSlices;
|
|
42
|
+
private warnOversizedInput;
|
|
43
|
+
/**
|
|
44
|
+
* Slices `text` into pieces that each measure at most MAX_EMBED_INPUT_TOKENS
|
|
45
|
+
* with the SAME tokenizer used for billing. A text that already fits is
|
|
46
|
+
* returned as-is (single element), and the slices always concatenate back to
|
|
47
|
+
* the original text — nothing is dropped.
|
|
48
|
+
*/
|
|
49
|
+
private splitByTokenBudget;
|
|
50
|
+
/** Longest measured-within-budget prefix of `text` (never empty). */
|
|
51
|
+
private takeBudgetedHead;
|
|
52
|
+
/**
|
|
53
|
+
* Pulls the cut back to the nearest whitespace within the last fifth of the
|
|
54
|
+
* window, so slices break between words. A stretch with no whitespace at all
|
|
55
|
+
* (a long unbroken blob) is cut mid-word rather than left oversized.
|
|
56
|
+
*/
|
|
57
|
+
private snapToWordBoundary;
|
|
58
|
+
/**
|
|
59
|
+
* Element-wise mean of the slice vectors, L2-normalized: the standard
|
|
60
|
+
* long-input reduction. Normalising keeps the pooled vector comparable with
|
|
61
|
+
* single-call vectors under cosine similarity, which is what every Neo4j
|
|
62
|
+
* vector index in this package searches with.
|
|
63
|
+
*/
|
|
64
|
+
private meanPool;
|
|
29
65
|
/** Lazily-built tokenizer for the configured embedder model; null after a failed init. */
|
|
30
66
|
private tokenizer;
|
|
31
67
|
/**
|
|
@@ -39,6 +75,75 @@ export declare class EmbedderService {
|
|
|
39
75
|
* false): sub-cent embedding calls must never floor to 0.1 credits.
|
|
40
76
|
*/
|
|
41
77
|
private persistUsage;
|
|
78
|
+
/**
|
|
79
|
+
* Records what a FAILED embedding call already burned — but ONLY when the
|
|
80
|
+
* rejection is evidence the provider actually did work.
|
|
81
|
+
*
|
|
82
|
+
* A failure is not automatically a free call: a batch that dies on the
|
|
83
|
+
* provider's LAST internal sub-batch has still been charged for every chunk
|
|
84
|
+
* the provider served, and `RateLimitedEmbedder` surfaces that as a single
|
|
85
|
+
* rejection. Recording nothing there understates real spend.
|
|
86
|
+
*
|
|
87
|
+
* BUT the counts here are computed LOCALLY with tiktoken, never read off a
|
|
88
|
+
* provider response, so they exist even when the provider was never reached.
|
|
89
|
+
* Billing every rejection would therefore charge the customer for OUR
|
|
90
|
+
* outages, inverting the very rule this path claims parity with:
|
|
91
|
+
* `LLMService.persistUsageOnFailure` bills provider-REPORTED tokens, which
|
|
92
|
+
* are 0 when nothing was served. The damage would be real —
|
|
93
|
+
* `RateLimitedEmbedder` rejects with `EmbedderBucketStarvedError` before any
|
|
94
|
+
* HTTP request when our own token bucket cannot grant within `maxWaitMs`, and
|
|
95
|
+
* these calls sit inside BullMQ jobs with `attempts: 3`, so one transient
|
|
96
|
+
* local failure could bill the same batch up to four times.
|
|
97
|
+
*
|
|
98
|
+
* So the local count is only trusted when {@link providerServedWork} says the
|
|
99
|
+
* rejection carries positive evidence of provider-side work. See that method
|
|
100
|
+
* for the signal and for the residual over-billing it knowingly accepts.
|
|
101
|
+
*
|
|
102
|
+
* ZERO-TOKEN RULE, as everywhere else on this path: an operation that burned
|
|
103
|
+
* nothing records NOTHING — a 0-token row would assert a call that never
|
|
104
|
+
* happened.
|
|
105
|
+
*
|
|
106
|
+
* Never throws: it sits in a catch block and must not mask the original error.
|
|
107
|
+
*/
|
|
108
|
+
private persistUsageOnFailure;
|
|
109
|
+
/**
|
|
110
|
+
* Does this rejection carry positive evidence that the provider did billable
|
|
111
|
+
* work? Nothing is billed unless it does.
|
|
112
|
+
*
|
|
113
|
+
* THE SIGNAL: a SERVER-side HTTP status (5xx) reported by the provider. That
|
|
114
|
+
* is the only class of rejection in which the provider accepted the request
|
|
115
|
+
* and failed during or after processing it — the case the failure-billing
|
|
116
|
+
* exists for (a multi-sub-batch call whose last sub-batch 500s, after earlier
|
|
117
|
+
* sub-batches were served and charged).
|
|
118
|
+
*
|
|
119
|
+
* Everything else records NOTHING, because in every other case the provider
|
|
120
|
+
* demonstrably served none of this input:
|
|
121
|
+
* - NO status at all — raised locally before or without any HTTP exchange:
|
|
122
|
+
* `EmbedderBucketStarvedError` (our own bucket refusing to grant), DNS
|
|
123
|
+
* failures, connection refused, aborts and client-side timeouts. This is
|
|
124
|
+
* the "our outage must not charge the customer" case.
|
|
125
|
+
* - A 4xx — the provider REFUSED the request rather than serving it: 401/403
|
|
126
|
+
* auth, 400/422 malformed, 413 too large, 429 rate-limited (including the
|
|
127
|
+
* retry-exhausted path). Providers do not charge for a request they
|
|
128
|
+
* rejected, so neither do we.
|
|
129
|
+
*
|
|
130
|
+
* RESIDUAL OVER-BILLING, KNOWINGLY ACCEPTED: on a 5xx this bills the WHOLE
|
|
131
|
+
* submitted input, including sub-batches the provider never got to.
|
|
132
|
+
* `RateLimitedEmbedder.embedDocuments` splits the input into sequential
|
|
133
|
+
* sub-batches and is all-or-nothing to its caller — it returns vectors or it
|
|
134
|
+
* throws, never a partial result — so this service cannot know how many
|
|
135
|
+
* sub-batches were served. Over-billing is bounded by the batch size and only
|
|
136
|
+
* on provider-side faults; the alternative (recording nothing) silently
|
|
137
|
+
* under-bills every genuinely-served chunk. Narrowing this needs
|
|
138
|
+
* `RateLimitedEmbedder` to report served-sub-batch counts, which would change
|
|
139
|
+
* its published surface.
|
|
140
|
+
*/
|
|
141
|
+
private providerServedWork;
|
|
142
|
+
/**
|
|
143
|
+
* Token count for a SINGLE text, through the very tokenizer billing uses — so
|
|
144
|
+
* the oversize guard slices by the same measure the provider charges by.
|
|
145
|
+
*/
|
|
146
|
+
private countText;
|
|
42
147
|
private countTokens;
|
|
43
148
|
}
|
|
44
149
|
//# sourceMappingURL=embedder.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedder.service.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/services/embedder.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAwB,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAqB,MAAM,4BAA4B,CAAC;AAEpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6DAA6D,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"embedder.service.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/services/embedder.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAwB,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAqB,MAAM,4BAA4B,CAAC;AAEpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6DAA6D,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAcD,qBACa,eAAe;IAIxB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAIX,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACL,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAThF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;gBAGxC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAI9B,iBAAiB,CAAC,EAAE,iBAAiB,EACP,kBAAkB,CAAC,EAAE,2BAA2B;IAGvG,aAAa,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,mBAAmB,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAWxF,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,WAAW,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IA2B5F;;;;;OAKG;YACW,YAAY;IAO1B;;;;OAIG;YACW,WAAW;IAMzB,OAAO,CAAC,kBAAkB;IAW1B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAuB1B,qEAAqE;IACrE,OAAO,CAAC,gBAAgB;IAaxB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;IAYhB,0FAA0F;IAC1F,OAAO,CAAC,SAAS,CAA8B;IAE/C;;;;;;;;;OASG;YACW,YAAY;IA4B1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;YACW,qBAAqB;IASnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;;OAGG;IACH,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,WAAW;CAsBpB"}
|