@revenium/perplexity 2.0.4 → 2.0.6
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/CHANGELOG.md +113 -98
- package/LICENSE +21 -21
- package/README.md +292 -271
- package/SECURITY.md +34 -0
- package/dist/cjs/core/client/index.js +13 -0
- package/dist/cjs/core/client/index.js.map +1 -0
- package/dist/cjs/core/client/manager.js +88 -0
- package/dist/cjs/core/client/manager.js.map +1 -0
- package/dist/cjs/core/config/index.js +21 -0
- package/dist/cjs/core/config/index.js.map +1 -0
- package/dist/cjs/core/config/loader.js +48 -0
- package/dist/cjs/core/config/loader.js.map +1 -0
- package/dist/cjs/core/config/manager.js +77 -0
- package/dist/cjs/core/config/manager.js.map +1 -0
- package/dist/cjs/core/config/validator.js +47 -0
- package/dist/cjs/core/config/validator.js.map +1 -0
- package/dist/cjs/core/middleware/index.js +14 -0
- package/dist/cjs/core/middleware/index.js.map +1 -0
- package/dist/cjs/core/middleware/interfaces.js +94 -0
- package/dist/cjs/core/middleware/interfaces.js.map +1 -0
- package/dist/cjs/core/middleware/revenium-client.js +44 -0
- package/dist/cjs/core/middleware/revenium-client.js.map +1 -0
- package/dist/cjs/core/middleware/streaming-wrapper.js +80 -0
- package/dist/cjs/core/middleware/streaming-wrapper.js.map +1 -0
- package/dist/cjs/core/providers/detector.js +38 -0
- package/dist/cjs/core/providers/detector.js.map +1 -0
- package/dist/cjs/core/providers/index.js +14 -0
- package/dist/cjs/core/providers/index.js.map +1 -0
- package/dist/cjs/core/tracking/api-client.js +67 -0
- package/dist/cjs/core/tracking/api-client.js.map +1 -0
- package/dist/cjs/core/tracking/index.js +21 -0
- package/dist/cjs/core/tracking/index.js.map +1 -0
- package/dist/cjs/core/tracking/payload-builder.js +95 -0
- package/dist/cjs/core/tracking/payload-builder.js.map +1 -0
- package/dist/cjs/core/tracking/usage-tracker.js +83 -0
- package/dist/cjs/core/tracking/usage-tracker.js.map +1 -0
- package/dist/cjs/index.js +55 -59
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/function-parameters.js +14 -0
- package/dist/cjs/types/function-parameters.js.map +1 -0
- package/dist/cjs/types/index.js +20 -1
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/utils/constants.js +20 -0
- package/dist/cjs/utils/constants.js.map +1 -0
- package/dist/cjs/utils/error-handler.js +194 -0
- package/dist/cjs/utils/error-handler.js.map +1 -0
- package/dist/cjs/utils/metadata-builder.js +191 -0
- package/dist/cjs/utils/metadata-builder.js.map +1 -0
- package/dist/cjs/utils/stop-reason-mapper.js +74 -0
- package/dist/cjs/utils/stop-reason-mapper.js.map +1 -0
- package/dist/cjs/utils/transaction-id.js +19 -0
- package/dist/cjs/utils/transaction-id.js.map +1 -0
- package/dist/cjs/utils/url-builder.js +57 -0
- package/dist/cjs/utils/url-builder.js.map +1 -0
- package/dist/esm/core/client/index.js +5 -0
- package/dist/esm/core/client/index.js.map +1 -0
- package/dist/esm/core/client/manager.js +81 -0
- package/dist/esm/core/client/manager.js.map +1 -0
- package/dist/esm/core/config/index.js +11 -0
- package/dist/esm/core/config/index.js.map +1 -0
- package/dist/esm/core/config/loader.js +45 -0
- package/dist/esm/core/config/loader.js.map +1 -0
- package/dist/esm/core/config/manager.js +70 -0
- package/dist/esm/core/config/manager.js.map +1 -0
- package/dist/esm/core/config/validator.js +44 -0
- package/dist/esm/core/config/validator.js.map +1 -0
- package/dist/esm/core/middleware/index.js +7 -0
- package/dist/esm/core/middleware/index.js.map +1 -0
- package/dist/esm/core/middleware/interfaces.js +89 -0
- package/dist/esm/core/middleware/interfaces.js.map +1 -0
- package/dist/esm/core/middleware/revenium-client.js +37 -0
- package/dist/esm/core/middleware/revenium-client.js.map +1 -0
- package/dist/esm/core/middleware/streaming-wrapper.js +76 -0
- package/dist/esm/core/middleware/streaming-wrapper.js.map +1 -0
- package/dist/esm/core/providers/detector.js +34 -0
- package/dist/esm/core/providers/detector.js.map +1 -0
- package/dist/esm/core/providers/index.js +9 -0
- package/dist/esm/core/providers/index.js.map +1 -0
- package/dist/esm/core/tracking/api-client.js +64 -0
- package/dist/esm/core/tracking/api-client.js.map +1 -0
- package/dist/esm/core/tracking/index.js +13 -0
- package/dist/esm/core/tracking/index.js.map +1 -0
- package/dist/esm/core/tracking/payload-builder.js +92 -0
- package/dist/esm/core/tracking/payload-builder.js.map +1 -0
- package/dist/esm/core/tracking/usage-tracker.js +79 -0
- package/dist/esm/core/tracking/usage-tracker.js.map +1 -0
- package/dist/esm/index.js +42 -39
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/function-parameters.js +13 -0
- package/dist/esm/types/function-parameters.js.map +1 -0
- package/dist/esm/types/index.js +6 -2
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/utils/constants.js +17 -0
- package/dist/esm/utils/constants.js.map +1 -0
- package/dist/esm/utils/error-handler.js +182 -0
- package/dist/esm/utils/error-handler.js.map +1 -0
- package/dist/esm/utils/metadata-builder.js +183 -0
- package/dist/esm/utils/metadata-builder.js.map +1 -0
- package/dist/esm/utils/stop-reason-mapper.js +69 -0
- package/dist/esm/utils/stop-reason-mapper.js.map +1 -0
- package/dist/esm/utils/transaction-id.js +16 -0
- package/dist/esm/utils/transaction-id.js.map +1 -0
- package/dist/esm/utils/url-builder.js +53 -0
- package/dist/esm/utils/url-builder.js.map +1 -0
- package/dist/types/core/client/index.d.ts +5 -0
- package/dist/types/core/client/index.d.ts.map +1 -0
- package/dist/types/core/client/manager.d.ts +44 -0
- package/dist/types/core/client/manager.d.ts.map +1 -0
- package/dist/types/core/config/index.d.ts +10 -0
- package/dist/types/core/config/index.d.ts.map +1 -0
- package/dist/types/core/config/loader.d.ts +13 -0
- package/dist/types/core/config/loader.d.ts.map +1 -0
- package/dist/types/core/config/manager.d.ts +28 -0
- package/dist/types/core/config/manager.d.ts.map +1 -0
- package/dist/types/core/config/validator.d.ts +12 -0
- package/dist/types/core/config/validator.d.ts.map +1 -0
- package/dist/types/core/middleware/index.d.ts +7 -0
- package/dist/types/core/middleware/index.d.ts.map +1 -0
- package/dist/types/core/middleware/interfaces.d.ts +35 -0
- package/dist/types/core/middleware/interfaces.d.ts.map +1 -0
- package/dist/types/core/middleware/revenium-client.d.ts +25 -0
- package/dist/types/core/middleware/revenium-client.d.ts.map +1 -0
- package/dist/types/core/middleware/streaming-wrapper.d.ts +21 -0
- package/dist/types/core/middleware/streaming-wrapper.d.ts.map +1 -0
- package/dist/types/core/providers/detector.d.ts +24 -0
- package/dist/types/core/providers/detector.d.ts.map +1 -0
- package/dist/types/core/providers/index.d.ts +8 -0
- package/dist/types/core/providers/index.d.ts.map +1 -0
- package/dist/types/core/tracking/api-client.d.ts +17 -0
- package/dist/types/core/tracking/api-client.d.ts.map +1 -0
- package/dist/types/core/tracking/index.d.ts +11 -0
- package/dist/types/core/tracking/index.d.ts.map +1 -0
- package/dist/types/core/tracking/payload-builder.d.ts +24 -0
- package/dist/types/core/tracking/payload-builder.d.ts.map +1 -0
- package/dist/types/core/tracking/usage-tracker.d.ts +30 -0
- package/dist/types/core/tracking/usage-tracker.d.ts.map +1 -0
- package/dist/types/index.d.ts +50 -26
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/function-parameters.d.ts +185 -0
- package/dist/types/types/function-parameters.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +108 -129
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/utils/constants.d.ts +9 -0
- package/dist/types/utils/constants.d.ts.map +1 -0
- package/dist/types/utils/error-handler.d.ts +95 -0
- package/dist/types/utils/error-handler.d.ts.map +1 -0
- package/dist/types/utils/metadata-builder.d.ts +65 -0
- package/dist/types/utils/metadata-builder.d.ts.map +1 -0
- package/dist/types/utils/stop-reason-mapper.d.ts +29 -0
- package/dist/types/utils/stop-reason-mapper.d.ts.map +1 -0
- package/dist/types/utils/transaction-id.d.ts +14 -0
- package/dist/types/utils/transaction-id.d.ts.map +1 -0
- package/dist/types/utils/url-builder.d.ts +22 -0
- package/dist/types/utils/url-builder.d.ts.map +1 -0
- package/examples/README.md +226 -322
- package/examples/advanced.ts +123 -0
- package/examples/basic.ts +45 -50
- package/examples/getting_started.ts +41 -64
- package/examples/metadata.ts +68 -65
- package/examples/stream.ts +53 -0
- package/package.json +72 -72
- package/dist/cjs/constants.js +0 -70
- package/dist/cjs/constants.js.map +0 -1
- package/dist/cjs/core/config/perplexity-config.js +0 -45
- package/dist/cjs/core/config/perplexity-config.js.map +0 -1
- package/dist/cjs/core/config/revenium-config.js +0 -80
- package/dist/cjs/core/config/revenium-config.js.map +0 -1
- package/dist/cjs/core/tracking/metering.js +0 -211
- package/dist/cjs/core/tracking/metering.js.map +0 -1
- package/dist/cjs/core/wrapper/perplexity-client.js +0 -187
- package/dist/cjs/core/wrapper/perplexity-client.js.map +0 -1
- package/dist/cjs/utils/logger.js +0 -23
- package/dist/cjs/utils/logger.js.map +0 -1
- package/dist/esm/constants.js +0 -67
- package/dist/esm/constants.js.map +0 -1
- package/dist/esm/core/config/perplexity-config.js +0 -40
- package/dist/esm/core/config/perplexity-config.js.map +0 -1
- package/dist/esm/core/config/revenium-config.js +0 -72
- package/dist/esm/core/config/revenium-config.js.map +0 -1
- package/dist/esm/core/tracking/metering.js +0 -206
- package/dist/esm/core/tracking/metering.js.map +0 -1
- package/dist/esm/core/wrapper/perplexity-client.js +0 -180
- package/dist/esm/core/wrapper/perplexity-client.js.map +0 -1
- package/dist/esm/utils/logger.js +0 -20
- package/dist/esm/utils/logger.js.map +0 -1
- package/dist/types/constants.d.ts +0 -67
- package/dist/types/constants.d.ts.map +0 -1
- package/dist/types/core/config/perplexity-config.d.ts +0 -24
- package/dist/types/core/config/perplexity-config.d.ts.map +0 -1
- package/dist/types/core/config/revenium-config.d.ts +0 -37
- package/dist/types/core/config/revenium-config.d.ts.map +0 -1
- package/dist/types/core/tracking/metering.d.ts +0 -31
- package/dist/types/core/tracking/metering.d.ts.map +0 -1
- package/dist/types/core/wrapper/perplexity-client.d.ts +0 -32
- package/dist/types/core/wrapper/perplexity-client.d.ts.map +0 -1
- package/dist/types/utils/logger.d.ts +0 -10
- package/dist/types/utils/logger.d.ts.map +0 -1
- package/examples/advanced-features.ts +0 -148
- package/examples/chat.ts +0 -73
- package/examples/streaming.ts +0 -50
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Revenium Metering Module
|
|
3
|
-
* Handles tracking and sending metering data to Revenium
|
|
4
|
-
*/
|
|
5
|
-
import type { MeteringData, UsageMetadata } from "../../types";
|
|
6
|
-
/**
|
|
7
|
-
* Generate a unique transaction ID
|
|
8
|
-
*/
|
|
9
|
-
export declare function generateTransactionId(): string;
|
|
10
|
-
/**
|
|
11
|
-
* Build metering data from request information
|
|
12
|
-
*/
|
|
13
|
-
export declare function buildMeteringData(params: {
|
|
14
|
-
model: string;
|
|
15
|
-
startTime: Date;
|
|
16
|
-
endTime: Date;
|
|
17
|
-
inputTokens: number;
|
|
18
|
-
outputTokens: number;
|
|
19
|
-
totalTokens: number;
|
|
20
|
-
reasoningTokens?: number;
|
|
21
|
-
cachedTokens?: number;
|
|
22
|
-
transactionId: string;
|
|
23
|
-
isStreamed: boolean;
|
|
24
|
-
stopReason: string;
|
|
25
|
-
usageMetadata?: UsageMetadata;
|
|
26
|
-
}): MeteringData;
|
|
27
|
-
/**
|
|
28
|
-
* Send metering data to Revenium
|
|
29
|
-
*/
|
|
30
|
-
export declare function sendMeteringData(meteringData: MeteringData): Promise<void>;
|
|
31
|
-
//# sourceMappingURL=metering.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metering.d.ts","sourceRoot":"","sources":["../../../../src/core/tracking/metering.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG/D;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAsGD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,GAAG,YAAY,CA+Ff;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,IAAI,CAAC,CA0Cf"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Perplexity Client Wrapper
|
|
3
|
-
* Wraps Perplexity API calls with Revenium metering
|
|
4
|
-
*/
|
|
5
|
-
import type { PerplexityMessage, UsageMetadata, ChatCompletionResult, StreamingResult } from "../../types";
|
|
6
|
-
/**
|
|
7
|
-
* Create a chat completion
|
|
8
|
-
*/
|
|
9
|
-
export declare function createChatCompletion(params: {
|
|
10
|
-
messages: PerplexityMessage[];
|
|
11
|
-
model: string;
|
|
12
|
-
maxTokens?: number;
|
|
13
|
-
temperature?: number;
|
|
14
|
-
topP?: number;
|
|
15
|
-
presencePenalty?: number;
|
|
16
|
-
frequencyPenalty?: number;
|
|
17
|
-
usageMetadata?: UsageMetadata;
|
|
18
|
-
}): Promise<ChatCompletionResult>;
|
|
19
|
-
/**
|
|
20
|
-
* Create a streaming chat completion
|
|
21
|
-
*/
|
|
22
|
-
export declare function createStreamingChatCompletion(params: {
|
|
23
|
-
messages: PerplexityMessage[];
|
|
24
|
-
model: string;
|
|
25
|
-
maxTokens?: number;
|
|
26
|
-
temperature?: number;
|
|
27
|
-
topP?: number;
|
|
28
|
-
presencePenalty?: number;
|
|
29
|
-
frequencyPenalty?: number;
|
|
30
|
-
usageMetadata?: UsageMetadata;
|
|
31
|
-
}): Promise<StreamingResult>;
|
|
32
|
-
//# sourceMappingURL=perplexity-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"perplexity-client.d.ts","sourceRoot":"","sources":["../../../../src/core/wrapper/perplexity-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,KAAK,EACV,iBAAiB,EAGjB,aAAa,EACb,oBAAoB,EACpB,eAAe,EAChB,MAAM,aAAa,CAAC;AA2BrB;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAqEhC;AAED;;GAEG;AACH,wBAAsB,6BAA6B,CAAC,MAAM,EAAE;IAC1D,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,GAAG,OAAO,CAAC,eAAe,CAAC,CAyC3B"}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Advanced Features Example
|
|
3
|
-
*
|
|
4
|
-
* This example demonstrates advanced middleware features:
|
|
5
|
-
* - Streaming responses with real-time content
|
|
6
|
-
* - Comprehensive metadata for analytics
|
|
7
|
-
* - Multiple model types (search, reasoning, research)
|
|
8
|
-
* - Session and quality tracking
|
|
9
|
-
*
|
|
10
|
-
* For complete documentation, see:
|
|
11
|
-
* https://revenium.readme.io/reference/meter_ai_completion
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
import {
|
|
15
|
-
initializeReveniumFromEnv,
|
|
16
|
-
initializePerplexityFromEnv,
|
|
17
|
-
createChatCompletion,
|
|
18
|
-
createStreamingChatCompletion,
|
|
19
|
-
UsageMetadata,
|
|
20
|
-
} from "../src";
|
|
21
|
-
|
|
22
|
-
async function demonstrateStreaming() {
|
|
23
|
-
console.log("\n--- Streaming Responses ---");
|
|
24
|
-
const usageMetadata: UsageMetadata = {
|
|
25
|
-
subscriber: { id: "user-streaming-demo" },
|
|
26
|
-
traceId: "streaming-session-" + Date.now(),
|
|
27
|
-
taskType: "list-generation",
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
const result = await createStreamingChatCompletion({
|
|
31
|
-
messages: [
|
|
32
|
-
{
|
|
33
|
-
role: "user",
|
|
34
|
-
content: "List the first 3 planets in our solar system.",
|
|
35
|
-
},
|
|
36
|
-
],
|
|
37
|
-
model: "sonar-pro",
|
|
38
|
-
maxTokens: 400,
|
|
39
|
-
usageMetadata,
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
console.log(`Model: ${result.model}`);
|
|
43
|
-
console.log("Response: ");
|
|
44
|
-
|
|
45
|
-
let fullContent = "";
|
|
46
|
-
for await (const chunk of result.stream) {
|
|
47
|
-
const content = chunk.choices[0]?.delta?.content || "";
|
|
48
|
-
if (content) {
|
|
49
|
-
process.stdout.write(content);
|
|
50
|
-
fullContent += content;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
console.log("\n✓ Streaming completed\n");
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
async function demonstrateComprehensiveMetadata() {
|
|
58
|
-
console.log("\n--- Comprehensive Metadata Tracking ---");
|
|
59
|
-
|
|
60
|
-
const usageMetadata: UsageMetadata = {
|
|
61
|
-
traceId: "session-advanced-demo-" + Date.now(),
|
|
62
|
-
taskType: "educational-query",
|
|
63
|
-
subscriber: {
|
|
64
|
-
id: "user-456",
|
|
65
|
-
email: "advanced-user@example.com",
|
|
66
|
-
credential: {
|
|
67
|
-
name: "premium-api-key",
|
|
68
|
-
value: "key-premium-abc123",
|
|
69
|
-
},
|
|
70
|
-
},
|
|
71
|
-
organizationId: "org-enterprise-789",
|
|
72
|
-
subscriptionId: "sub-enterprise-2024",
|
|
73
|
-
productId: "learning-platform",
|
|
74
|
-
agent: "educational-assistant-v2",
|
|
75
|
-
responseQualityScore: 0.92,
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
const result = await createChatCompletion({
|
|
79
|
-
messages: [
|
|
80
|
-
{
|
|
81
|
-
role: "user",
|
|
82
|
-
content: "What is machine learning?",
|
|
83
|
-
},
|
|
84
|
-
],
|
|
85
|
-
model: "sonar-pro",
|
|
86
|
-
maxTokens: 400,
|
|
87
|
-
usageMetadata,
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
console.log(`Response: ${result.content.substring(0, 100)}...`);
|
|
91
|
-
console.log(`✓ Metadata tracked successfully\n`);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
async function demonstrateMultipleModels() {
|
|
95
|
-
console.log("\n--- Multiple Model Types ---");
|
|
96
|
-
|
|
97
|
-
const usageMetadata: UsageMetadata = {
|
|
98
|
-
subscriber: { id: "model-comparison-user" },
|
|
99
|
-
taskType: "weather-search",
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
// Search model
|
|
103
|
-
console.log("Using sonar (lightweight search)...");
|
|
104
|
-
const searchResult = await createChatCompletion({
|
|
105
|
-
messages: [{ role: "user", content: "Current weather in Tokyo" }],
|
|
106
|
-
model: "sonar-pro",
|
|
107
|
-
maxTokens: 400,
|
|
108
|
-
usageMetadata,
|
|
109
|
-
});
|
|
110
|
-
console.log(`Response: ${searchResult.content.substring(0, 80)}...`);
|
|
111
|
-
|
|
112
|
-
// Reasoning model
|
|
113
|
-
console.log("\nUsing sonar-reasoning (real-time reasoning)...");
|
|
114
|
-
const reasoningResult = await createChatCompletion({
|
|
115
|
-
messages: [
|
|
116
|
-
{ role: "user", content: "Why is the sky blue? Explain briefly." },
|
|
117
|
-
],
|
|
118
|
-
model: "sonar-reasoning",
|
|
119
|
-
maxTokens: 400,
|
|
120
|
-
usageMetadata: {
|
|
121
|
-
...usageMetadata,
|
|
122
|
-
taskType: "reasoning-query",
|
|
123
|
-
},
|
|
124
|
-
});
|
|
125
|
-
console.log(`Response: ${reasoningResult.content.substring(0, 80)}...`);
|
|
126
|
-
|
|
127
|
-
console.log("\n✓ Multiple models demonstrated\n");
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
async function main() {
|
|
131
|
-
console.log("\n=== Advanced Features Example ===");
|
|
132
|
-
|
|
133
|
-
// Initialize configurations
|
|
134
|
-
initializeReveniumFromEnv();
|
|
135
|
-
initializePerplexityFromEnv();
|
|
136
|
-
|
|
137
|
-
// Demonstrate features
|
|
138
|
-
await demonstrateStreaming();
|
|
139
|
-
await demonstrateComprehensiveMetadata();
|
|
140
|
-
await demonstrateMultipleModels();
|
|
141
|
-
|
|
142
|
-
console.log("=== All Advanced Features Demonstrated ===\n");
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
main().catch((error) => {
|
|
146
|
-
console.error("\nError:", error.message);
|
|
147
|
-
process.exit(1);
|
|
148
|
-
});
|
package/examples/chat.ts
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Multi-turn Chat Example
|
|
3
|
-
*
|
|
4
|
-
* This example demonstrates how to have a multi-turn conversation
|
|
5
|
-
* with the Perplexity middleware.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import {
|
|
9
|
-
initializeReveniumFromEnv,
|
|
10
|
-
initializePerplexityFromEnv,
|
|
11
|
-
createChatCompletion,
|
|
12
|
-
type PerplexityMessage,
|
|
13
|
-
} from "../src";
|
|
14
|
-
|
|
15
|
-
async function main() {
|
|
16
|
-
// Initialize configurations from environment variables
|
|
17
|
-
initializeReveniumFromEnv();
|
|
18
|
-
initializePerplexityFromEnv();
|
|
19
|
-
|
|
20
|
-
// Start a conversation
|
|
21
|
-
const messages: PerplexityMessage[] = [
|
|
22
|
-
{
|
|
23
|
-
role: "system",
|
|
24
|
-
content: "You are a helpful assistant that provides concise answers.",
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
role: "user",
|
|
28
|
-
content: "What is the capital of France?",
|
|
29
|
-
},
|
|
30
|
-
];
|
|
31
|
-
|
|
32
|
-
console.log("\n--- Turn 1 ---");
|
|
33
|
-
console.log("User: What is the capital of France?");
|
|
34
|
-
|
|
35
|
-
const response1 = await createChatCompletion({
|
|
36
|
-
messages,
|
|
37
|
-
model: "sonar",
|
|
38
|
-
maxTokens: 100,
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
console.log(`Assistant: ${response1.content}`);
|
|
42
|
-
|
|
43
|
-
// Continue the conversation
|
|
44
|
-
messages.push({
|
|
45
|
-
role: "assistant",
|
|
46
|
-
content: response1.content,
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
messages.push({
|
|
50
|
-
role: "user",
|
|
51
|
-
content: "What is its population?",
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
console.log("\n--- Turn 2 ---");
|
|
55
|
-
console.log("User: What is its population?");
|
|
56
|
-
|
|
57
|
-
const response2 = await createChatCompletion({
|
|
58
|
-
messages,
|
|
59
|
-
model: "sonar-pro",
|
|
60
|
-
maxTokens: 500,
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
console.log(`Assistant: ${response2.content}`);
|
|
64
|
-
|
|
65
|
-
// Summary
|
|
66
|
-
const totalTokens = response1.usage.totalTokens + response2.usage.totalTokens;
|
|
67
|
-
console.log(`\n✓ Chat completed - Total tokens used: ${totalTokens}`);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
main().catch((error) => {
|
|
71
|
-
console.error("Error:", error.message);
|
|
72
|
-
process.exit(1);
|
|
73
|
-
});
|
package/examples/streaming.ts
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Streaming Chat Completion Example
|
|
3
|
-
*
|
|
4
|
-
* This example demonstrates how to use streaming responses
|
|
5
|
-
* with the Perplexity middleware and Revenium metering.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import {
|
|
9
|
-
initializeReveniumFromEnv,
|
|
10
|
-
initializePerplexityFromEnv,
|
|
11
|
-
createStreamingChatCompletion,
|
|
12
|
-
} from "../src";
|
|
13
|
-
|
|
14
|
-
async function main() {
|
|
15
|
-
// Initialize configurations from environment variables
|
|
16
|
-
initializeReveniumFromEnv();
|
|
17
|
-
initializePerplexityFromEnv();
|
|
18
|
-
|
|
19
|
-
// Create a streaming chat completion
|
|
20
|
-
const result = await createStreamingChatCompletion({
|
|
21
|
-
messages: [
|
|
22
|
-
{
|
|
23
|
-
role: "user",
|
|
24
|
-
content: "Count from 1 to 5 slowly, one number per line.",
|
|
25
|
-
},
|
|
26
|
-
],
|
|
27
|
-
model: "sonar-pro",
|
|
28
|
-
maxTokens: 200,
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
console.log(`\nModel: ${result.model}`);
|
|
32
|
-
console.log("Streaming response:\n");
|
|
33
|
-
|
|
34
|
-
// Process the stream
|
|
35
|
-
let fullContent = "";
|
|
36
|
-
for await (const chunk of result.stream) {
|
|
37
|
-
const content = chunk.choices[0]?.delta?.content || "";
|
|
38
|
-
if (content) {
|
|
39
|
-
process.stdout.write(content);
|
|
40
|
-
fullContent += content;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
console.log("\n\n✓ Streaming completed");
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
main().catch((error) => {
|
|
48
|
-
console.error("Error:", error.message);
|
|
49
|
-
process.exit(1);
|
|
50
|
-
});
|