@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.
Files changed (200) hide show
  1. package/CHANGELOG.md +113 -98
  2. package/LICENSE +21 -21
  3. package/README.md +292 -271
  4. package/SECURITY.md +34 -0
  5. package/dist/cjs/core/client/index.js +13 -0
  6. package/dist/cjs/core/client/index.js.map +1 -0
  7. package/dist/cjs/core/client/manager.js +88 -0
  8. package/dist/cjs/core/client/manager.js.map +1 -0
  9. package/dist/cjs/core/config/index.js +21 -0
  10. package/dist/cjs/core/config/index.js.map +1 -0
  11. package/dist/cjs/core/config/loader.js +48 -0
  12. package/dist/cjs/core/config/loader.js.map +1 -0
  13. package/dist/cjs/core/config/manager.js +77 -0
  14. package/dist/cjs/core/config/manager.js.map +1 -0
  15. package/dist/cjs/core/config/validator.js +47 -0
  16. package/dist/cjs/core/config/validator.js.map +1 -0
  17. package/dist/cjs/core/middleware/index.js +14 -0
  18. package/dist/cjs/core/middleware/index.js.map +1 -0
  19. package/dist/cjs/core/middleware/interfaces.js +94 -0
  20. package/dist/cjs/core/middleware/interfaces.js.map +1 -0
  21. package/dist/cjs/core/middleware/revenium-client.js +44 -0
  22. package/dist/cjs/core/middleware/revenium-client.js.map +1 -0
  23. package/dist/cjs/core/middleware/streaming-wrapper.js +80 -0
  24. package/dist/cjs/core/middleware/streaming-wrapper.js.map +1 -0
  25. package/dist/cjs/core/providers/detector.js +38 -0
  26. package/dist/cjs/core/providers/detector.js.map +1 -0
  27. package/dist/cjs/core/providers/index.js +14 -0
  28. package/dist/cjs/core/providers/index.js.map +1 -0
  29. package/dist/cjs/core/tracking/api-client.js +67 -0
  30. package/dist/cjs/core/tracking/api-client.js.map +1 -0
  31. package/dist/cjs/core/tracking/index.js +21 -0
  32. package/dist/cjs/core/tracking/index.js.map +1 -0
  33. package/dist/cjs/core/tracking/payload-builder.js +95 -0
  34. package/dist/cjs/core/tracking/payload-builder.js.map +1 -0
  35. package/dist/cjs/core/tracking/usage-tracker.js +83 -0
  36. package/dist/cjs/core/tracking/usage-tracker.js.map +1 -0
  37. package/dist/cjs/index.js +55 -59
  38. package/dist/cjs/index.js.map +1 -1
  39. package/dist/cjs/types/function-parameters.js +14 -0
  40. package/dist/cjs/types/function-parameters.js.map +1 -0
  41. package/dist/cjs/types/index.js +20 -1
  42. package/dist/cjs/types/index.js.map +1 -1
  43. package/dist/cjs/utils/constants.js +20 -0
  44. package/dist/cjs/utils/constants.js.map +1 -0
  45. package/dist/cjs/utils/error-handler.js +194 -0
  46. package/dist/cjs/utils/error-handler.js.map +1 -0
  47. package/dist/cjs/utils/metadata-builder.js +191 -0
  48. package/dist/cjs/utils/metadata-builder.js.map +1 -0
  49. package/dist/cjs/utils/stop-reason-mapper.js +74 -0
  50. package/dist/cjs/utils/stop-reason-mapper.js.map +1 -0
  51. package/dist/cjs/utils/transaction-id.js +19 -0
  52. package/dist/cjs/utils/transaction-id.js.map +1 -0
  53. package/dist/cjs/utils/url-builder.js +57 -0
  54. package/dist/cjs/utils/url-builder.js.map +1 -0
  55. package/dist/esm/core/client/index.js +5 -0
  56. package/dist/esm/core/client/index.js.map +1 -0
  57. package/dist/esm/core/client/manager.js +81 -0
  58. package/dist/esm/core/client/manager.js.map +1 -0
  59. package/dist/esm/core/config/index.js +11 -0
  60. package/dist/esm/core/config/index.js.map +1 -0
  61. package/dist/esm/core/config/loader.js +45 -0
  62. package/dist/esm/core/config/loader.js.map +1 -0
  63. package/dist/esm/core/config/manager.js +70 -0
  64. package/dist/esm/core/config/manager.js.map +1 -0
  65. package/dist/esm/core/config/validator.js +44 -0
  66. package/dist/esm/core/config/validator.js.map +1 -0
  67. package/dist/esm/core/middleware/index.js +7 -0
  68. package/dist/esm/core/middleware/index.js.map +1 -0
  69. package/dist/esm/core/middleware/interfaces.js +89 -0
  70. package/dist/esm/core/middleware/interfaces.js.map +1 -0
  71. package/dist/esm/core/middleware/revenium-client.js +37 -0
  72. package/dist/esm/core/middleware/revenium-client.js.map +1 -0
  73. package/dist/esm/core/middleware/streaming-wrapper.js +76 -0
  74. package/dist/esm/core/middleware/streaming-wrapper.js.map +1 -0
  75. package/dist/esm/core/providers/detector.js +34 -0
  76. package/dist/esm/core/providers/detector.js.map +1 -0
  77. package/dist/esm/core/providers/index.js +9 -0
  78. package/dist/esm/core/providers/index.js.map +1 -0
  79. package/dist/esm/core/tracking/api-client.js +64 -0
  80. package/dist/esm/core/tracking/api-client.js.map +1 -0
  81. package/dist/esm/core/tracking/index.js +13 -0
  82. package/dist/esm/core/tracking/index.js.map +1 -0
  83. package/dist/esm/core/tracking/payload-builder.js +92 -0
  84. package/dist/esm/core/tracking/payload-builder.js.map +1 -0
  85. package/dist/esm/core/tracking/usage-tracker.js +79 -0
  86. package/dist/esm/core/tracking/usage-tracker.js.map +1 -0
  87. package/dist/esm/index.js +42 -39
  88. package/dist/esm/index.js.map +1 -1
  89. package/dist/esm/types/function-parameters.js +13 -0
  90. package/dist/esm/types/function-parameters.js.map +1 -0
  91. package/dist/esm/types/index.js +6 -2
  92. package/dist/esm/types/index.js.map +1 -1
  93. package/dist/esm/utils/constants.js +17 -0
  94. package/dist/esm/utils/constants.js.map +1 -0
  95. package/dist/esm/utils/error-handler.js +182 -0
  96. package/dist/esm/utils/error-handler.js.map +1 -0
  97. package/dist/esm/utils/metadata-builder.js +183 -0
  98. package/dist/esm/utils/metadata-builder.js.map +1 -0
  99. package/dist/esm/utils/stop-reason-mapper.js +69 -0
  100. package/dist/esm/utils/stop-reason-mapper.js.map +1 -0
  101. package/dist/esm/utils/transaction-id.js +16 -0
  102. package/dist/esm/utils/transaction-id.js.map +1 -0
  103. package/dist/esm/utils/url-builder.js +53 -0
  104. package/dist/esm/utils/url-builder.js.map +1 -0
  105. package/dist/types/core/client/index.d.ts +5 -0
  106. package/dist/types/core/client/index.d.ts.map +1 -0
  107. package/dist/types/core/client/manager.d.ts +44 -0
  108. package/dist/types/core/client/manager.d.ts.map +1 -0
  109. package/dist/types/core/config/index.d.ts +10 -0
  110. package/dist/types/core/config/index.d.ts.map +1 -0
  111. package/dist/types/core/config/loader.d.ts +13 -0
  112. package/dist/types/core/config/loader.d.ts.map +1 -0
  113. package/dist/types/core/config/manager.d.ts +28 -0
  114. package/dist/types/core/config/manager.d.ts.map +1 -0
  115. package/dist/types/core/config/validator.d.ts +12 -0
  116. package/dist/types/core/config/validator.d.ts.map +1 -0
  117. package/dist/types/core/middleware/index.d.ts +7 -0
  118. package/dist/types/core/middleware/index.d.ts.map +1 -0
  119. package/dist/types/core/middleware/interfaces.d.ts +35 -0
  120. package/dist/types/core/middleware/interfaces.d.ts.map +1 -0
  121. package/dist/types/core/middleware/revenium-client.d.ts +25 -0
  122. package/dist/types/core/middleware/revenium-client.d.ts.map +1 -0
  123. package/dist/types/core/middleware/streaming-wrapper.d.ts +21 -0
  124. package/dist/types/core/middleware/streaming-wrapper.d.ts.map +1 -0
  125. package/dist/types/core/providers/detector.d.ts +24 -0
  126. package/dist/types/core/providers/detector.d.ts.map +1 -0
  127. package/dist/types/core/providers/index.d.ts +8 -0
  128. package/dist/types/core/providers/index.d.ts.map +1 -0
  129. package/dist/types/core/tracking/api-client.d.ts +17 -0
  130. package/dist/types/core/tracking/api-client.d.ts.map +1 -0
  131. package/dist/types/core/tracking/index.d.ts +11 -0
  132. package/dist/types/core/tracking/index.d.ts.map +1 -0
  133. package/dist/types/core/tracking/payload-builder.d.ts +24 -0
  134. package/dist/types/core/tracking/payload-builder.d.ts.map +1 -0
  135. package/dist/types/core/tracking/usage-tracker.d.ts +30 -0
  136. package/dist/types/core/tracking/usage-tracker.d.ts.map +1 -0
  137. package/dist/types/index.d.ts +50 -26
  138. package/dist/types/index.d.ts.map +1 -1
  139. package/dist/types/types/function-parameters.d.ts +185 -0
  140. package/dist/types/types/function-parameters.d.ts.map +1 -0
  141. package/dist/types/types/index.d.ts +108 -129
  142. package/dist/types/types/index.d.ts.map +1 -1
  143. package/dist/types/utils/constants.d.ts +9 -0
  144. package/dist/types/utils/constants.d.ts.map +1 -0
  145. package/dist/types/utils/error-handler.d.ts +95 -0
  146. package/dist/types/utils/error-handler.d.ts.map +1 -0
  147. package/dist/types/utils/metadata-builder.d.ts +65 -0
  148. package/dist/types/utils/metadata-builder.d.ts.map +1 -0
  149. package/dist/types/utils/stop-reason-mapper.d.ts +29 -0
  150. package/dist/types/utils/stop-reason-mapper.d.ts.map +1 -0
  151. package/dist/types/utils/transaction-id.d.ts +14 -0
  152. package/dist/types/utils/transaction-id.d.ts.map +1 -0
  153. package/dist/types/utils/url-builder.d.ts +22 -0
  154. package/dist/types/utils/url-builder.d.ts.map +1 -0
  155. package/examples/README.md +226 -322
  156. package/examples/advanced.ts +123 -0
  157. package/examples/basic.ts +45 -50
  158. package/examples/getting_started.ts +41 -64
  159. package/examples/metadata.ts +68 -65
  160. package/examples/stream.ts +53 -0
  161. package/package.json +72 -72
  162. package/dist/cjs/constants.js +0 -70
  163. package/dist/cjs/constants.js.map +0 -1
  164. package/dist/cjs/core/config/perplexity-config.js +0 -45
  165. package/dist/cjs/core/config/perplexity-config.js.map +0 -1
  166. package/dist/cjs/core/config/revenium-config.js +0 -80
  167. package/dist/cjs/core/config/revenium-config.js.map +0 -1
  168. package/dist/cjs/core/tracking/metering.js +0 -211
  169. package/dist/cjs/core/tracking/metering.js.map +0 -1
  170. package/dist/cjs/core/wrapper/perplexity-client.js +0 -187
  171. package/dist/cjs/core/wrapper/perplexity-client.js.map +0 -1
  172. package/dist/cjs/utils/logger.js +0 -23
  173. package/dist/cjs/utils/logger.js.map +0 -1
  174. package/dist/esm/constants.js +0 -67
  175. package/dist/esm/constants.js.map +0 -1
  176. package/dist/esm/core/config/perplexity-config.js +0 -40
  177. package/dist/esm/core/config/perplexity-config.js.map +0 -1
  178. package/dist/esm/core/config/revenium-config.js +0 -72
  179. package/dist/esm/core/config/revenium-config.js.map +0 -1
  180. package/dist/esm/core/tracking/metering.js +0 -206
  181. package/dist/esm/core/tracking/metering.js.map +0 -1
  182. package/dist/esm/core/wrapper/perplexity-client.js +0 -180
  183. package/dist/esm/core/wrapper/perplexity-client.js.map +0 -1
  184. package/dist/esm/utils/logger.js +0 -20
  185. package/dist/esm/utils/logger.js.map +0 -1
  186. package/dist/types/constants.d.ts +0 -67
  187. package/dist/types/constants.d.ts.map +0 -1
  188. package/dist/types/core/config/perplexity-config.d.ts +0 -24
  189. package/dist/types/core/config/perplexity-config.d.ts.map +0 -1
  190. package/dist/types/core/config/revenium-config.d.ts +0 -37
  191. package/dist/types/core/config/revenium-config.d.ts.map +0 -1
  192. package/dist/types/core/tracking/metering.d.ts +0 -31
  193. package/dist/types/core/tracking/metering.d.ts.map +0 -1
  194. package/dist/types/core/wrapper/perplexity-client.d.ts +0 -32
  195. package/dist/types/core/wrapper/perplexity-client.d.ts.map +0 -1
  196. package/dist/types/utils/logger.d.ts +0 -10
  197. package/dist/types/utils/logger.d.ts.map +0 -1
  198. package/examples/advanced-features.ts +0 -148
  199. package/examples/chat.ts +0 -73
  200. 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,10 +0,0 @@
1
- /**
2
- * Simple logger utility
3
- */
4
- export declare const logger: {
5
- info: (...args: any[]) => void;
6
- warn: (...args: any[]) => void;
7
- error: (...args: any[]) => void;
8
- debug: (...args: any[]) => void;
9
- };
10
- //# sourceMappingURL=logger.d.ts.map
@@ -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
- });
@@ -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
- });