@revenium/perplexity 1.0.23 → 2.0.1
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/README.md +468 -364
- package/dist/cjs/core/config/perplexity-config.js +45 -0
- package/dist/cjs/core/config/perplexity-config.js.map +1 -0
- package/dist/cjs/core/config/revenium-config.js +80 -0
- package/dist/cjs/core/config/revenium-config.js.map +1 -0
- package/dist/cjs/core/tracking/metering.js +131 -0
- package/dist/cjs/core/tracking/metering.js.map +1 -0
- package/dist/cjs/core/wrapper/perplexity-client.js +177 -0
- package/dist/cjs/core/wrapper/perplexity-client.js.map +1 -0
- package/dist/cjs/index.js +64 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/types/index.js +21 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/utils/logger.js +23 -0
- package/dist/cjs/utils/logger.js.map +1 -0
- package/dist/esm/core/config/perplexity-config.js +40 -0
- package/dist/esm/core/config/perplexity-config.js.map +1 -0
- package/dist/esm/core/config/revenium-config.js +72 -0
- package/dist/esm/core/config/revenium-config.js.map +1 -0
- package/dist/esm/core/tracking/metering.js +126 -0
- package/dist/esm/core/tracking/metering.js.map +1 -0
- package/dist/esm/core/wrapper/perplexity-client.js +170 -0
- package/dist/esm/core/wrapper/perplexity-client.js.map +1 -0
- package/dist/esm/index.js +44 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/types/index.js +18 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/utils/logger.js +20 -0
- package/dist/esm/utils/logger.js.map +1 -0
- package/dist/types/core/config/perplexity-config.d.ts +24 -0
- package/dist/types/core/config/perplexity-config.d.ts.map +1 -0
- package/dist/types/core/config/revenium-config.d.ts +37 -0
- package/dist/types/core/config/revenium-config.d.ts.map +1 -0
- package/dist/types/core/tracking/metering.d.ts +31 -0
- package/dist/types/core/tracking/metering.d.ts.map +1 -0
- package/dist/types/core/wrapper/perplexity-client.d.ts +32 -0
- package/dist/types/core/wrapper/perplexity-client.d.ts.map +1 -0
- package/dist/types/index.d.ts +34 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +159 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/utils/logger.d.ts +10 -0
- package/dist/types/utils/logger.d.ts.map +1 -0
- package/package.json +36 -16
- package/.env.example +0 -3
- package/dist/index.js +0 -19
- package/dist/interfaces/chatCompletionRequest.d.ts +0 -9
- package/dist/interfaces/chatCompletionRequest.js +0 -2
- package/dist/interfaces/credential.d.ts +0 -4
- package/dist/interfaces/credential.js +0 -2
- package/dist/interfaces/meteringRequest.d.ts +0 -13
- package/dist/interfaces/meteringRequest.js +0 -2
- package/dist/interfaces/meteringResponse.d.ts +0 -27
- package/dist/interfaces/meteringResponse.js +0 -2
- package/dist/interfaces/operation.d.ts +0 -4
- package/dist/interfaces/operation.js +0 -8
- package/dist/interfaces/subscriber.d.ts +0 -8
- package/dist/interfaces/subscriber.js +0 -2
- package/dist/interfaces/tokenCounts.d.ts +0 -7
- package/dist/interfaces/tokenCounts.js +0 -2
- package/dist/interfaces/usageMetadata.d.ts +0 -27
- package/dist/interfaces/usageMetadata.js +0 -2
- package/dist/middleware.d.ts +0 -22
- package/dist/middleware.js +0 -129
- package/dist/models/Logger.js +0 -35
- package/dist/models/Metering.d.ts +0 -9
- package/dist/models/Metering.js +0 -80
- package/dist/utils/calculateDurationMs.d.ts +0 -1
- package/dist/utils/calculateDurationMs.js +0 -6
- package/dist/utils/constants/constants.d.ts +0 -6
- package/dist/utils/constants/constants.js +0 -11
- package/dist/utils/constants/logLevels.d.ts +0 -1
- package/dist/utils/constants/logLevels.js +0 -4
- package/dist/utils/constants/messages.d.ts +0 -5
- package/dist/utils/constants/messages.js +0 -8
- package/dist/utils/constants/models.d.ts +0 -1
- package/dist/utils/constants/models.js +0 -21
- package/dist/utils/extractTokenCount.d.ts +0 -2
- package/dist/utils/extractTokenCount.js +0 -28
- package/dist/utils/formatTimeStamp.d.ts +0 -1
- package/dist/utils/formatTimeStamp.js +0 -6
- package/dist/utils/generateTransactionId.d.ts +0 -1
- package/dist/utils/generateTransactionId.js +0 -7
- package/dist/utils/index.d.ts +0 -6
- package/dist/utils/index.js +0 -23
- package/dist/utils/loadEnv.d.ts +0 -1
- package/dist/utils/loadEnv.js +0 -7
- package/dist/utils/safeExtract.d.ts +0 -29
- package/dist/utils/safeExtract.js +0 -67
- package/examples/basic.ts +0 -17
- package/examples/chat-completions.ts +0 -22
- package/examples/enhanced.ts +0 -20
- package/examples/metadata.ts +0 -43
- package/examples/streaming.ts +0 -24
- package/playground/basic.js +0 -17
- package/playground/chat-completions.js +0 -22
- package/playground/enhanced.js +0 -20
- package/playground/metadata.js +0 -43
- package/playground/streaming.js +0 -24
- package/src/index.ts +0 -4
- package/src/interfaces/chatCompletionRequest.ts +0 -10
- package/src/interfaces/credential.ts +0 -4
- package/src/interfaces/meteringRequest.ts +0 -14
- package/src/interfaces/meteringResponse.ts +0 -28
- package/src/interfaces/operation.ts +0 -4
- package/src/interfaces/subscriber.ts +0 -8
- package/src/interfaces/tokenCounts.ts +0 -7
- package/src/interfaces/usageMetadata.ts +0 -27
- package/src/middleware.ts +0 -157
- package/src/models/Logger.ts +0 -38
- package/src/models/Metering.ts +0 -114
- package/src/utils/calculateDurationMs.ts +0 -3
- package/src/utils/constants/constants.ts +0 -10
- package/src/utils/constants/logLevels.ts +0 -1
- package/src/utils/constants/messages.ts +0 -11
- package/src/utils/constants/models.ts +0 -20
- package/src/utils/extractTokenCount.ts +0 -26
- package/src/utils/formatTimestamp.ts +0 -3
- package/src/utils/generateTransactionId.ts +0 -5
- package/src/utils/index.ts +0 -39
- package/src/utils/loadEnv.ts +0 -8
- package/src/utils/safeExtract.ts +0 -67
- package/tsconfig.json +0 -15
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Revenium Middleware for Perplexity
|
|
3
|
+
*
|
|
4
|
+
* A lightweight middleware that adds Revenium metering to Perplexity API calls.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import {
|
|
9
|
+
* initializeReveniumFromEnv,
|
|
10
|
+
* initializePerplexityFromEnv,
|
|
11
|
+
* createChatCompletion,
|
|
12
|
+
* } from '@revenium/perplexity';
|
|
13
|
+
*
|
|
14
|
+
* // Initialize configurations
|
|
15
|
+
* initializeReveniumFromEnv();
|
|
16
|
+
* initializePerplexityFromEnv();
|
|
17
|
+
*
|
|
18
|
+
* // Create a chat completion
|
|
19
|
+
* const result = await createChatCompletion({
|
|
20
|
+
* messages: [{ role: 'user', content: 'Hello!' }],
|
|
21
|
+
* model: 'sonar-pro',
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* console.log(result.content);
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export { initializeReveniumFromEnv, initializeRevenium, getReveniumConfig, isReveniumEnabled, disableRevenium, enableRevenium, type ReveniumConfig, } from "./core/config/revenium-config";
|
|
28
|
+
export { initializePerplexityFromEnv, initializePerplexity, getPerplexityConfig, type PerplexityConfig, } from "./core/config/perplexity-config";
|
|
29
|
+
export { createChatCompletion, createStreamingChatCompletion, } from "./core/wrapper/perplexity-client";
|
|
30
|
+
export { generateTransactionId, buildMeteringData, sendMeteringData, } from "./core/tracking/metering";
|
|
31
|
+
export type { PerplexityMessage, PerplexityChatRequest, PerplexityUsage, PerplexityChoice, PerplexityResponse, PerplexityStreamChunk, UsageMetadata, MeteringData, ChatCompletionResult, StreamingResult, PerplexityModel, } from "./types";
|
|
32
|
+
export { PERPLEXITY_MODELS, DEFAULT_MODEL } from "./types";
|
|
33
|
+
export { logger } from "./utils/logger";
|
|
34
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AASH,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,KAAK,cAAc,GACpB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,gBAAgB,GACtB,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EACL,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAMlC,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAM3D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript Type Definitions for Perplexity Middleware
|
|
3
|
+
*/
|
|
4
|
+
export interface PerplexityMessage {
|
|
5
|
+
role: "system" | "user" | "assistant";
|
|
6
|
+
content: string;
|
|
7
|
+
}
|
|
8
|
+
export interface PerplexityChatRequest {
|
|
9
|
+
model: string;
|
|
10
|
+
messages: PerplexityMessage[];
|
|
11
|
+
max_tokens?: number;
|
|
12
|
+
temperature?: number;
|
|
13
|
+
top_p?: number;
|
|
14
|
+
stream?: boolean;
|
|
15
|
+
presence_penalty?: number;
|
|
16
|
+
frequency_penalty?: number;
|
|
17
|
+
}
|
|
18
|
+
export interface PerplexityUsage {
|
|
19
|
+
prompt_tokens: number;
|
|
20
|
+
completion_tokens: number;
|
|
21
|
+
total_tokens: number;
|
|
22
|
+
}
|
|
23
|
+
export interface PerplexityChoice {
|
|
24
|
+
index: number;
|
|
25
|
+
message?: {
|
|
26
|
+
role: string;
|
|
27
|
+
content: string;
|
|
28
|
+
};
|
|
29
|
+
delta?: {
|
|
30
|
+
role?: string;
|
|
31
|
+
content?: string;
|
|
32
|
+
};
|
|
33
|
+
finish_reason: string | null;
|
|
34
|
+
}
|
|
35
|
+
export interface PerplexityResponse {
|
|
36
|
+
id: string;
|
|
37
|
+
object: string;
|
|
38
|
+
created: number;
|
|
39
|
+
model: string;
|
|
40
|
+
choices: PerplexityChoice[];
|
|
41
|
+
usage?: PerplexityUsage;
|
|
42
|
+
}
|
|
43
|
+
export interface PerplexityStreamChunk {
|
|
44
|
+
id: string;
|
|
45
|
+
object: string;
|
|
46
|
+
created: number;
|
|
47
|
+
model: string;
|
|
48
|
+
choices: PerplexityChoice[];
|
|
49
|
+
}
|
|
50
|
+
export interface UsageMetadata {
|
|
51
|
+
subscriber?: {
|
|
52
|
+
id: string;
|
|
53
|
+
email?: string;
|
|
54
|
+
credential?: {
|
|
55
|
+
name: string;
|
|
56
|
+
value: string;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
organizationId?: string;
|
|
60
|
+
productId?: string;
|
|
61
|
+
transactionId?: string;
|
|
62
|
+
traceId?: string;
|
|
63
|
+
inputTokenCount?: number;
|
|
64
|
+
outputTokenCount?: number;
|
|
65
|
+
totalTokenCount?: number;
|
|
66
|
+
reasoningTokenCount?: number;
|
|
67
|
+
cacheCreationTokenCount?: number;
|
|
68
|
+
cacheReadTokenCount?: number;
|
|
69
|
+
requestTime?: string;
|
|
70
|
+
responseTime?: string;
|
|
71
|
+
completionStartTime?: string;
|
|
72
|
+
timeToFirstToken?: number;
|
|
73
|
+
operationType?: string;
|
|
74
|
+
taskType?: string;
|
|
75
|
+
agent?: string;
|
|
76
|
+
stopReason?: string;
|
|
77
|
+
costType?: string;
|
|
78
|
+
subscriberId?: string;
|
|
79
|
+
subscriberEmail?: string;
|
|
80
|
+
subscriberCredentialName?: string;
|
|
81
|
+
subscriberCredential?: string;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Metering data sent to Revenium
|
|
85
|
+
* Field order matches the expected API format
|
|
86
|
+
*/
|
|
87
|
+
export interface MeteringData {
|
|
88
|
+
stopReason: string;
|
|
89
|
+
costType: string;
|
|
90
|
+
isStreamed: boolean;
|
|
91
|
+
taskType: string;
|
|
92
|
+
agent: string;
|
|
93
|
+
operationType: string;
|
|
94
|
+
inputTokenCount: number;
|
|
95
|
+
outputTokenCount: number;
|
|
96
|
+
reasoningTokenCount: number;
|
|
97
|
+
cacheCreationTokenCount: number;
|
|
98
|
+
cacheReadTokenCount: number;
|
|
99
|
+
totalTokenCount: number;
|
|
100
|
+
organizationId: string;
|
|
101
|
+
productId: string;
|
|
102
|
+
subscriber: {
|
|
103
|
+
id: string;
|
|
104
|
+
email: string;
|
|
105
|
+
credential: {
|
|
106
|
+
name: string;
|
|
107
|
+
value: string;
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
model: string;
|
|
111
|
+
transactionId: string;
|
|
112
|
+
responseTime: string;
|
|
113
|
+
requestDuration: number;
|
|
114
|
+
provider: string;
|
|
115
|
+
requestTime: string;
|
|
116
|
+
completionStartTime: string;
|
|
117
|
+
timeToFirstToken: number;
|
|
118
|
+
middleware_source: string;
|
|
119
|
+
traceId?: string;
|
|
120
|
+
}
|
|
121
|
+
export interface ChatCompletionResult {
|
|
122
|
+
content: string;
|
|
123
|
+
role: string;
|
|
124
|
+
finishReason: string | null;
|
|
125
|
+
usage: {
|
|
126
|
+
promptTokens: number;
|
|
127
|
+
completionTokens: number;
|
|
128
|
+
totalTokens: number;
|
|
129
|
+
};
|
|
130
|
+
model: string;
|
|
131
|
+
transactionId: string;
|
|
132
|
+
rawResponse: PerplexityResponse;
|
|
133
|
+
}
|
|
134
|
+
export interface StreamingResult {
|
|
135
|
+
stream: AsyncGenerator<PerplexityStreamChunk>;
|
|
136
|
+
transactionId: string;
|
|
137
|
+
model: string;
|
|
138
|
+
}
|
|
139
|
+
export interface ReveniumConfig {
|
|
140
|
+
meteringApiKey: string;
|
|
141
|
+
meteringBaseUrl: string;
|
|
142
|
+
teamId?: string;
|
|
143
|
+
enabled: boolean;
|
|
144
|
+
}
|
|
145
|
+
export interface PerplexityConfig {
|
|
146
|
+
apiKey: string;
|
|
147
|
+
baseUrl: string;
|
|
148
|
+
}
|
|
149
|
+
export declare const PERPLEXITY_MODELS: {
|
|
150
|
+
readonly SONAR: "sonar";
|
|
151
|
+
readonly SONAR_PRO: "sonar-pro";
|
|
152
|
+
readonly SONAR_REASONING: "sonar-reasoning";
|
|
153
|
+
readonly LLAMA_3_1_SONAR_SMALL_128K_CHAT: "llama-3.1-sonar-small-128k-chat";
|
|
154
|
+
readonly LLAMA_3_1_SONAR_LARGE_128K_CHAT: "llama-3.1-sonar-large-128k-chat";
|
|
155
|
+
readonly LLAMA_3_1_SONAR_HUGE_128K_CHAT: "llama-3.1-sonar-huge-128k-chat";
|
|
156
|
+
};
|
|
157
|
+
export type PerplexityModel = (typeof PERPLEXITY_MODELS)[keyof typeof PERPLEXITY_MODELS];
|
|
158
|
+
export declare const DEFAULT_MODEL: PerplexityModel;
|
|
159
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,MAAM;oBACD,GAAG,EAAE;oBAGL,GAAG,EAAE;qBAGJ,GAAG,EAAE;qBAGL,GAAG,EAAE;CAKvB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@revenium/perplexity",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "NodeJS middleware for
|
|
3
|
+
"version": "2.0.1",
|
|
4
|
+
"description": "NodeJS middleware for Perplexity AI API with Revenium metering",
|
|
5
5
|
"homepage": "https://github.com/revenium/revenium-middleware-perplexity-node#readme",
|
|
6
6
|
"bugs": {
|
|
7
7
|
"url": "https://github.com/revenium/revenium-middleware-perplexity-node/issues"
|
|
@@ -10,20 +10,37 @@
|
|
|
10
10
|
"type": "git",
|
|
11
11
|
"url": "git+https://github.com/revenium/revenium-middleware-perplexity-node.git"
|
|
12
12
|
},
|
|
13
|
-
"main": "dist/index.js",
|
|
14
|
-
"
|
|
13
|
+
"main": "dist/cjs/index.js",
|
|
14
|
+
"module": "dist/esm/index.js",
|
|
15
|
+
"types": "dist/types/index.d.ts",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"import": "./dist/esm/index.js",
|
|
19
|
+
"require": "./dist/cjs/index.js",
|
|
20
|
+
"types": "./dist/types/index.d.ts"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"files": [
|
|
24
|
+
"dist/**/*",
|
|
25
|
+
"README.md",
|
|
26
|
+
"LICENSE"
|
|
27
|
+
],
|
|
15
28
|
"scripts": {
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
29
|
+
"clean": "if exist dist rmdir /s /q dist",
|
|
30
|
+
"build:esm": "tsc -p tsconfig.esm.json",
|
|
31
|
+
"build:cjs": "tsc -p tsconfig.cjs.json",
|
|
32
|
+
"build:types": "tsc -p tsconfig.types.json",
|
|
33
|
+
"build": "npm run clean && npm run build:esm && npm run build:cjs && npm run build:types",
|
|
34
|
+
"prepublishOnly": "npm run build",
|
|
35
|
+
"example:basic": "tsx examples/basic.ts",
|
|
36
|
+
"example:streaming": "tsx examples/streaming.ts",
|
|
37
|
+
"example:chat": "tsx examples/chat.ts",
|
|
38
|
+
"example:metadata": "tsx examples/metadata.ts",
|
|
39
|
+
"playground:basic": "node playground/basic.js",
|
|
40
|
+
"playground:streaming": "node playground/streaming.js",
|
|
41
|
+
"playground:chat": "node playground/chat.js",
|
|
42
|
+
"playground:metadata": "node playground/metadata.js",
|
|
43
|
+
"test": "npm run example:basic && npm run example:streaming && npm run example:chat && npm run example:metadata"
|
|
27
44
|
},
|
|
28
45
|
"keywords": [
|
|
29
46
|
"revenium",
|
|
@@ -42,8 +59,11 @@
|
|
|
42
59
|
"dependencies": {
|
|
43
60
|
"dotenv": "^17.2.2",
|
|
44
61
|
"openai": "^5.23.1",
|
|
45
|
-
"
|
|
62
|
+
"tsx": "^4.19.2",
|
|
46
63
|
"typescript": "^5.9.2",
|
|
47
64
|
"uuid": "^13.0.0"
|
|
65
|
+
},
|
|
66
|
+
"devDependencies": {
|
|
67
|
+
"@types/node": "^24.7.1"
|
|
48
68
|
}
|
|
49
69
|
}
|
package/.env.example
DELETED
package/dist/index.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
const dotenv_1 = require("dotenv");
|
|
18
|
-
(0, dotenv_1.config)();
|
|
19
|
-
__exportStar(require("./middleware"), exports);
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { ChatCompletionMessageParam } from "openai/resources/index";
|
|
2
|
-
import { IUsageMetadata } from "./usageMetadata";
|
|
3
|
-
export interface IChatCompletionRequest {
|
|
4
|
-
model?: string;
|
|
5
|
-
messages: ChatCompletionMessageParam[];
|
|
6
|
-
stream?: boolean;
|
|
7
|
-
usageMetadata?: IUsageMetadata;
|
|
8
|
-
[key: string]: any;
|
|
9
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { IOperationType } from "./operation";
|
|
2
|
-
import { ITokenCounts } from "./tokenCounts";
|
|
3
|
-
import { IUsageMetadata } from "./usageMetadata";
|
|
4
|
-
export interface IMeteringRequest {
|
|
5
|
-
transactionId?: string;
|
|
6
|
-
startTime: Date;
|
|
7
|
-
endTime: Date;
|
|
8
|
-
modelName: string;
|
|
9
|
-
tokenCounts: ITokenCounts;
|
|
10
|
-
stopReason: string;
|
|
11
|
-
operationType: IOperationType;
|
|
12
|
-
usageMetadata?: IUsageMetadata;
|
|
13
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { ISubscriber } from "./subscriber";
|
|
2
|
-
export interface IMeteringResponse {
|
|
3
|
-
stopReason: string;
|
|
4
|
-
costType: string;
|
|
5
|
-
isStreamed: boolean;
|
|
6
|
-
taskType: string;
|
|
7
|
-
agent: string;
|
|
8
|
-
operationType: string;
|
|
9
|
-
inputTokenCount: number;
|
|
10
|
-
outputTokenCount: number;
|
|
11
|
-
reasoningTokenCount: number;
|
|
12
|
-
cacheCreationTokenCount: number;
|
|
13
|
-
cacheReadTokenCount: number;
|
|
14
|
-
totalTokenCount: number;
|
|
15
|
-
organizationId: string;
|
|
16
|
-
productId: string;
|
|
17
|
-
subscriber: ISubscriber;
|
|
18
|
-
model: string;
|
|
19
|
-
transactionId: string;
|
|
20
|
-
responseTime: string;
|
|
21
|
-
requestDuration: number;
|
|
22
|
-
provider: string;
|
|
23
|
-
requestTime: string;
|
|
24
|
-
completionStartTime: string;
|
|
25
|
-
timeToFirstToken: number;
|
|
26
|
-
middleware_source: string;
|
|
27
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IOperationType = void 0;
|
|
4
|
-
var IOperationType;
|
|
5
|
-
(function (IOperationType) {
|
|
6
|
-
IOperationType["CHAT"] = "CHAT";
|
|
7
|
-
IOperationType["EMBED"] = "EMBED";
|
|
8
|
-
})(IOperationType || (exports.IOperationType = IOperationType = {}));
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export interface IUsageMetadata {
|
|
2
|
-
traceId?: string;
|
|
3
|
-
taskType?: string;
|
|
4
|
-
subscriberEmail?: string;
|
|
5
|
-
subscriberId?: string;
|
|
6
|
-
subscriberCredentialName?: string;
|
|
7
|
-
subscriberCredential?: string;
|
|
8
|
-
organizationId?: string;
|
|
9
|
-
subscriptionId?: string;
|
|
10
|
-
productId?: string;
|
|
11
|
-
agent?: string;
|
|
12
|
-
responseQualityScore?: number;
|
|
13
|
-
transactionId?: string;
|
|
14
|
-
timeToFirstToken?: number;
|
|
15
|
-
requestTime?: Date;
|
|
16
|
-
completionStartTime?: Date;
|
|
17
|
-
operationType?: string;
|
|
18
|
-
inputTokenCount?: number;
|
|
19
|
-
outputTokenCount?: number;
|
|
20
|
-
reasoningTokenCount?: number;
|
|
21
|
-
cacheCreationTokenCount?: number;
|
|
22
|
-
cacheReadTokenCount?: number;
|
|
23
|
-
totalTokenCount?: number;
|
|
24
|
-
responseTime?: Date;
|
|
25
|
-
requestDuration?: number;
|
|
26
|
-
stopReason?: string;
|
|
27
|
-
}
|
package/dist/middleware.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import OpenAI from "openai";
|
|
2
|
-
import { IChatCompletionRequest } from "./interfaces/chatCompletionRequest";
|
|
3
|
-
import { RequestOptions } from "openai/internal/request-options";
|
|
4
|
-
export declare class PerplexityReveniumMiddleware {
|
|
5
|
-
private client;
|
|
6
|
-
private working;
|
|
7
|
-
private modelName;
|
|
8
|
-
constructor();
|
|
9
|
-
getGenerativeModel(model: string): {
|
|
10
|
-
createChatCompletion: (params: IChatCompletionRequest) => Promise<OpenAI.Chat.Completions.ChatCompletion & {
|
|
11
|
-
_request_id?: string | null | undefined;
|
|
12
|
-
}>;
|
|
13
|
-
createChatCompletionStream: (params: IChatCompletionRequest) => Promise<import("openai/core/streaming").Stream<OpenAI.Chat.Completions.ChatCompletionChunk> & {
|
|
14
|
-
_request_id?: string | null;
|
|
15
|
-
}>;
|
|
16
|
-
createEmbeddings: (_body: Omit<OpenAI.Embeddings.EmbeddingCreateParams, "model">, _options?: RequestOptions) => Promise<void>;
|
|
17
|
-
};
|
|
18
|
-
private embeddings;
|
|
19
|
-
private streamingChatCompletion;
|
|
20
|
-
private chatCompletion;
|
|
21
|
-
private verifyEnv;
|
|
22
|
-
}
|
package/dist/middleware.js
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
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.PerplexityReveniumMiddleware = void 0;
|
|
7
|
-
const openai_1 = __importDefault(require("openai"));
|
|
8
|
-
const utils_1 = require("./utils");
|
|
9
|
-
const Logger_1 = require("./models/Logger");
|
|
10
|
-
const Metering_1 = require("./models/Metering");
|
|
11
|
-
const operation_1 = require("./interfaces/operation");
|
|
12
|
-
const extractTokenCount_1 = require("./utils/extractTokenCount");
|
|
13
|
-
class PerplexityReveniumMiddleware {
|
|
14
|
-
constructor() {
|
|
15
|
-
this.working = true;
|
|
16
|
-
this.modelName = "";
|
|
17
|
-
this.embeddings = async (_body, _options) => { };
|
|
18
|
-
this.streamingChatCompletion = async (params) => {
|
|
19
|
-
var _a;
|
|
20
|
-
const startTime = new Date();
|
|
21
|
-
try {
|
|
22
|
-
const { usageMetadata, ...openaiParams } = params;
|
|
23
|
-
const requestParams = {
|
|
24
|
-
...openaiParams,
|
|
25
|
-
model: this.modelName,
|
|
26
|
-
};
|
|
27
|
-
const result = await ((_a = this.client) === null || _a === void 0 ? void 0 : _a.chat.completions.create({
|
|
28
|
-
...requestParams,
|
|
29
|
-
stream: true,
|
|
30
|
-
}));
|
|
31
|
-
if (!this.working) {
|
|
32
|
-
Logger_1.logger.warning("Metering is not working. Check your configuration.");
|
|
33
|
-
return result;
|
|
34
|
-
}
|
|
35
|
-
const tokenCounts = (0, extractTokenCount_1.extractGoogleAITokenCounts)(result);
|
|
36
|
-
const endTime = new Date();
|
|
37
|
-
Logger_1.logger.info("Metering is working.");
|
|
38
|
-
const metering = new Metering_1.Metering(utils_1.REVENIUM_METERING_API_KEY !== null && utils_1.REVENIUM_METERING_API_KEY !== void 0 ? utils_1.REVENIUM_METERING_API_KEY : "", utils_1.REVENIUM_METERING_BASE_URL !== null && utils_1.REVENIUM_METERING_BASE_URL !== void 0 ? utils_1.REVENIUM_METERING_BASE_URL : "");
|
|
39
|
-
const getMetering = metering.createMetering({
|
|
40
|
-
modelName: this.modelName,
|
|
41
|
-
endTime,
|
|
42
|
-
startTime,
|
|
43
|
-
operationType: operation_1.IOperationType.CHAT,
|
|
44
|
-
stopReason: "END",
|
|
45
|
-
tokenCounts,
|
|
46
|
-
usageMetadata,
|
|
47
|
-
}, true);
|
|
48
|
-
await metering.sendMeteringData(getMetering);
|
|
49
|
-
return result;
|
|
50
|
-
}
|
|
51
|
-
catch (error) {
|
|
52
|
-
throw error;
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
this.chatCompletion = async (params) => {
|
|
56
|
-
var _a;
|
|
57
|
-
const startTime = new Date();
|
|
58
|
-
try {
|
|
59
|
-
const { usageMetadata, ...openaiParams } = params;
|
|
60
|
-
const requestParams = {
|
|
61
|
-
...openaiParams,
|
|
62
|
-
model: this.modelName,
|
|
63
|
-
};
|
|
64
|
-
const result = await ((_a = this.client) === null || _a === void 0 ? void 0 : _a.chat.completions.create({
|
|
65
|
-
...requestParams,
|
|
66
|
-
stream: false,
|
|
67
|
-
}));
|
|
68
|
-
if (!this.working) {
|
|
69
|
-
Logger_1.logger.warning("Metering is not working. Check your configuration.");
|
|
70
|
-
return result;
|
|
71
|
-
}
|
|
72
|
-
const tokenCounts = (0, extractTokenCount_1.extractGoogleAITokenCounts)(result);
|
|
73
|
-
const endTime = new Date();
|
|
74
|
-
Logger_1.logger.info(" Metering is working.");
|
|
75
|
-
const metering = new Metering_1.Metering(utils_1.REVENIUM_METERING_API_KEY !== null && utils_1.REVENIUM_METERING_API_KEY !== void 0 ? utils_1.REVENIUM_METERING_API_KEY : "", utils_1.REVENIUM_METERING_BASE_URL !== null && utils_1.REVENIUM_METERING_BASE_URL !== void 0 ? utils_1.REVENIUM_METERING_BASE_URL : "");
|
|
76
|
-
const getMetering = metering.createMetering({
|
|
77
|
-
modelName: this.modelName,
|
|
78
|
-
endTime,
|
|
79
|
-
startTime,
|
|
80
|
-
operationType: operation_1.IOperationType.CHAT,
|
|
81
|
-
stopReason: "END",
|
|
82
|
-
tokenCounts,
|
|
83
|
-
usageMetadata,
|
|
84
|
-
}, false);
|
|
85
|
-
await metering.sendMeteringData(getMetering);
|
|
86
|
-
return result;
|
|
87
|
-
}
|
|
88
|
-
catch (error) {
|
|
89
|
-
throw error;
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
this.verifyEnv();
|
|
93
|
-
this.client = new openai_1.default({
|
|
94
|
-
apiKey: utils_1.PERPLEXITY_API_KEY,
|
|
95
|
-
baseURL: utils_1.PERPLEXITY_API_BASE_URL,
|
|
96
|
-
});
|
|
97
|
-
Logger_1.logger.info(utils_1.PERPLEXITY_CLIENT_INITIALIZED_MESSAGE);
|
|
98
|
-
}
|
|
99
|
-
getGenerativeModel(model) {
|
|
100
|
-
this.modelName = model;
|
|
101
|
-
if (!utils_1.models.includes(model)) {
|
|
102
|
-
throw new Error(`Model ${model} is not supported`);
|
|
103
|
-
}
|
|
104
|
-
return {
|
|
105
|
-
createChatCompletion: this.chatCompletion,
|
|
106
|
-
createChatCompletionStream: this.streamingChatCompletion,
|
|
107
|
-
createEmbeddings: this.embeddings,
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
verifyEnv() {
|
|
111
|
-
if (!utils_1.PERPLEXITY_API_KEY) {
|
|
112
|
-
Logger_1.logger.error(utils_1.PERPLEXITY_REQUIRED_API_KEY_MESSAGE);
|
|
113
|
-
throw new Error(utils_1.PERPLEXITY_REQUIRED_API_KEY_MESSAGE);
|
|
114
|
-
}
|
|
115
|
-
if (!utils_1.PERPLEXITY_API_KEY.includes("pplx-")) {
|
|
116
|
-
Logger_1.logger.error(utils_1.PERPLEXITY_API_KEY_INVALID_MESSAGE);
|
|
117
|
-
throw new Error(utils_1.PERPLEXITY_API_KEY_INVALID_MESSAGE);
|
|
118
|
-
}
|
|
119
|
-
if (!utils_1.REVENIUM_METERING_API_KEY) {
|
|
120
|
-
Logger_1.logger.warning(utils_1.PERPLEXITY_METERING_API_KEY_IS_NOT_SET_MESSAGE);
|
|
121
|
-
this.working = false;
|
|
122
|
-
}
|
|
123
|
-
if (!utils_1.REVENIUM_METERING_BASE_URL) {
|
|
124
|
-
Logger_1.logger.warning(utils_1.PERPLEXITY_METERING_BASE_URL_IS_NOT_SET_MESSAGE);
|
|
125
|
-
this.working = false;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
exports.PerplexityReveniumMiddleware = PerplexityReveniumMiddleware;
|
package/dist/models/Logger.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.logger = exports.Logger = void 0;
|
|
4
|
-
const utils_1 = require("../utils");
|
|
5
|
-
class Logger {
|
|
6
|
-
static debug(message, data) {
|
|
7
|
-
if (this.shouldLog(utils_1.LOG_LEVELS[0])) {
|
|
8
|
-
console.log(`[${utils_1.LOG_LEVELS[0]}] ${message}`, data || "");
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
static info(message, data) {
|
|
12
|
-
if (this.shouldLog(utils_1.LOG_LEVELS[1])) {
|
|
13
|
-
console.log(`[${utils_1.LOG_LEVELS[1]}] ${message}`, data || "");
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
static warning(message, data) {
|
|
17
|
-
if (this.shouldLog(utils_1.LOG_LEVELS[2])) {
|
|
18
|
-
console.warn(`[${utils_1.LOG_LEVELS[2]}] ${message}`, data || "");
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
static error(message, data) {
|
|
22
|
-
if (this.shouldLog(utils_1.LOG_LEVELS[3])) {
|
|
23
|
-
console.error(`[${utils_1.LOG_LEVELS[3]}] ${message}`, data || "");
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
static shouldLog(level) {
|
|
27
|
-
const levels = utils_1.LOG_LEVELS;
|
|
28
|
-
const currentLevel = levels.indexOf(this.logLevel.toUpperCase());
|
|
29
|
-
const messageLevel = levels.indexOf(level);
|
|
30
|
-
return messageLevel >= currentLevel;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
exports.Logger = Logger;
|
|
34
|
-
Logger.logLevel = process.env.REVENIUM_LOG_LEVEL || "INFO";
|
|
35
|
-
exports.logger = Logger;
|