@ai-sdk/perplexity 3.0.48 → 3.0.50
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 +13 -0
- package/dist/index.d.mts +22 -3
- package/dist/index.d.ts +22 -3
- package/dist/index.js +193 -60
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +198 -56
- package/dist/index.mjs.map +1 -1
- package/docs/70-perplexity.mdx +73 -0
- package/package.json +2 -2
- package/src/index.ts +4 -0
- package/src/perplexity-embedding-model-options.ts +28 -0
- package/src/perplexity-embedding-model.ts +165 -0
- package/src/perplexity-provider.ts +30 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @ai-sdk/perplexity
|
|
2
2
|
|
|
3
|
+
## 3.0.50
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [ee2bf30]
|
|
8
|
+
- @ai-sdk/provider-utils@4.0.42
|
|
9
|
+
|
|
10
|
+
## 3.0.49
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- cbd0fe3: feat (provider/perplexity): add embedding model support
|
|
15
|
+
|
|
3
16
|
## 3.0.48
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
|
-
import { ProviderV3, LanguageModelV3 } from '@ai-sdk/provider';
|
|
1
|
+
import { ProviderV3, LanguageModelV3, EmbeddingModelV3 } from '@ai-sdk/provider';
|
|
2
2
|
import { FetchFunction } from '@ai-sdk/provider-utils';
|
|
3
|
+
import { z } from 'zod/v4';
|
|
4
|
+
|
|
5
|
+
type PerplexityEmbeddingModelId = 'pplx-embed-v1-0.6b' | 'pplx-embed-v1-4b' | (string & {});
|
|
6
|
+
declare const perplexityEmbeddingModelOptions: z.ZodObject<{
|
|
7
|
+
dimensions: z.ZodOptional<z.ZodNumber>;
|
|
8
|
+
encodingFormat: z.ZodOptional<z.ZodEnum<{
|
|
9
|
+
base64_int8: "base64_int8";
|
|
10
|
+
base64_binary: "base64_binary";
|
|
11
|
+
}>>;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
type PerplexityEmbeddingModelOptions = z.infer<typeof perplexityEmbeddingModelOptions>;
|
|
3
14
|
|
|
4
15
|
type PerplexityLanguageModelId = 'sonar-deep-research' | 'sonar-reasoning-pro' | 'sonar-reasoning' | 'sonar-pro' | 'sonar' | (string & {});
|
|
5
16
|
|
|
@@ -12,10 +23,18 @@ interface PerplexityProvider extends ProviderV3 {
|
|
|
12
23
|
* Creates an Perplexity language model for text generation.
|
|
13
24
|
*/
|
|
14
25
|
languageModel(modelId: PerplexityLanguageModelId): LanguageModelV3;
|
|
26
|
+
/**
|
|
27
|
+
* Creates a Perplexity model for text embeddings.
|
|
28
|
+
*/
|
|
29
|
+
embedding(modelId: PerplexityEmbeddingModelId): EmbeddingModelV3;
|
|
30
|
+
/**
|
|
31
|
+
* Creates a Perplexity model for text embeddings.
|
|
32
|
+
*/
|
|
33
|
+
embeddingModel(modelId: PerplexityEmbeddingModelId): EmbeddingModelV3;
|
|
15
34
|
/**
|
|
16
35
|
* @deprecated Use `embeddingModel` instead.
|
|
17
36
|
*/
|
|
18
|
-
textEmbeddingModel(modelId:
|
|
37
|
+
textEmbeddingModel(modelId: PerplexityEmbeddingModelId): EmbeddingModelV3;
|
|
19
38
|
}
|
|
20
39
|
interface PerplexityProviderSettings {
|
|
21
40
|
/**
|
|
@@ -41,4 +60,4 @@ declare const perplexity: PerplexityProvider;
|
|
|
41
60
|
|
|
42
61
|
declare const VERSION: string;
|
|
43
62
|
|
|
44
|
-
export { type PerplexityProvider, type PerplexityProviderSettings, VERSION, createPerplexity, perplexity };
|
|
63
|
+
export { type PerplexityEmbeddingModelId, type PerplexityEmbeddingModelOptions, type PerplexityProvider, type PerplexityProviderSettings, VERSION, createPerplexity, perplexity };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
|
-
import { ProviderV3, LanguageModelV3 } from '@ai-sdk/provider';
|
|
1
|
+
import { ProviderV3, LanguageModelV3, EmbeddingModelV3 } from '@ai-sdk/provider';
|
|
2
2
|
import { FetchFunction } from '@ai-sdk/provider-utils';
|
|
3
|
+
import { z } from 'zod/v4';
|
|
4
|
+
|
|
5
|
+
type PerplexityEmbeddingModelId = 'pplx-embed-v1-0.6b' | 'pplx-embed-v1-4b' | (string & {});
|
|
6
|
+
declare const perplexityEmbeddingModelOptions: z.ZodObject<{
|
|
7
|
+
dimensions: z.ZodOptional<z.ZodNumber>;
|
|
8
|
+
encodingFormat: z.ZodOptional<z.ZodEnum<{
|
|
9
|
+
base64_int8: "base64_int8";
|
|
10
|
+
base64_binary: "base64_binary";
|
|
11
|
+
}>>;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
type PerplexityEmbeddingModelOptions = z.infer<typeof perplexityEmbeddingModelOptions>;
|
|
3
14
|
|
|
4
15
|
type PerplexityLanguageModelId = 'sonar-deep-research' | 'sonar-reasoning-pro' | 'sonar-reasoning' | 'sonar-pro' | 'sonar' | (string & {});
|
|
5
16
|
|
|
@@ -12,10 +23,18 @@ interface PerplexityProvider extends ProviderV3 {
|
|
|
12
23
|
* Creates an Perplexity language model for text generation.
|
|
13
24
|
*/
|
|
14
25
|
languageModel(modelId: PerplexityLanguageModelId): LanguageModelV3;
|
|
26
|
+
/**
|
|
27
|
+
* Creates a Perplexity model for text embeddings.
|
|
28
|
+
*/
|
|
29
|
+
embedding(modelId: PerplexityEmbeddingModelId): EmbeddingModelV3;
|
|
30
|
+
/**
|
|
31
|
+
* Creates a Perplexity model for text embeddings.
|
|
32
|
+
*/
|
|
33
|
+
embeddingModel(modelId: PerplexityEmbeddingModelId): EmbeddingModelV3;
|
|
15
34
|
/**
|
|
16
35
|
* @deprecated Use `embeddingModel` instead.
|
|
17
36
|
*/
|
|
18
|
-
textEmbeddingModel(modelId:
|
|
37
|
+
textEmbeddingModel(modelId: PerplexityEmbeddingModelId): EmbeddingModelV3;
|
|
19
38
|
}
|
|
20
39
|
interface PerplexityProviderSettings {
|
|
21
40
|
/**
|
|
@@ -41,4 +60,4 @@ declare const perplexity: PerplexityProvider;
|
|
|
41
60
|
|
|
42
61
|
declare const VERSION: string;
|
|
43
62
|
|
|
44
|
-
export { type PerplexityProvider, type PerplexityProviderSettings, VERSION, createPerplexity, perplexity };
|
|
63
|
+
export { type PerplexityEmbeddingModelId, type PerplexityEmbeddingModelOptions, type PerplexityProvider, type PerplexityProviderSettings, VERSION, createPerplexity, perplexity };
|
package/dist/index.js
CHANGED
|
@@ -27,12 +27,35 @@ __export(index_exports, {
|
|
|
27
27
|
module.exports = __toCommonJS(index_exports);
|
|
28
28
|
|
|
29
29
|
// src/perplexity-provider.ts
|
|
30
|
+
var import_provider3 = require("@ai-sdk/provider");
|
|
31
|
+
var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
|
32
|
+
|
|
33
|
+
// src/perplexity-embedding-model.ts
|
|
30
34
|
var import_provider2 = require("@ai-sdk/provider");
|
|
31
35
|
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
|
36
|
+
var import_v43 = require("zod/v4");
|
|
37
|
+
|
|
38
|
+
// src/perplexity-embedding-model-options.ts
|
|
39
|
+
var import_v4 = require("zod/v4");
|
|
40
|
+
var perplexityEmbeddingModelOptions = import_v4.z.object({
|
|
41
|
+
/**
|
|
42
|
+
* The number of dimensions the resulting output embeddings should have
|
|
43
|
+
* (Matryoshka truncation). Ranges from 128 up to the model's full size
|
|
44
|
+
* (1024 for 0.6b models, 2560 for 4b models).
|
|
45
|
+
*/
|
|
46
|
+
dimensions: import_v4.z.number().int().positive().optional(),
|
|
47
|
+
/**
|
|
48
|
+
* The quantized encoding format returned by the API. Perplexity does not
|
|
49
|
+
* return floating point embeddings; values are decoded to numbers:
|
|
50
|
+
* - `base64_int8` (default): signed int8 values, compare via cosine similarity.
|
|
51
|
+
* - `base64_binary`: packed bits per byte (0-255), compare via Hamming distance.
|
|
52
|
+
*/
|
|
53
|
+
encodingFormat: import_v4.z.enum(["base64_int8", "base64_binary"]).optional()
|
|
54
|
+
});
|
|
32
55
|
|
|
33
56
|
// src/perplexity-language-model.ts
|
|
34
57
|
var import_provider_utils2 = require("@ai-sdk/provider-utils");
|
|
35
|
-
var
|
|
58
|
+
var import_v42 = require("zod/v4");
|
|
36
59
|
|
|
37
60
|
// src/convert-perplexity-usage.ts
|
|
38
61
|
function convertPerplexityUsage(usage) {
|
|
@@ -472,66 +495,66 @@ function getResponseMetadata({
|
|
|
472
495
|
timestamp: new Date(created * 1e3)
|
|
473
496
|
};
|
|
474
497
|
}
|
|
475
|
-
var perplexityCostSchema =
|
|
476
|
-
input_tokens_cost:
|
|
477
|
-
output_tokens_cost:
|
|
478
|
-
request_cost:
|
|
479
|
-
total_cost:
|
|
498
|
+
var perplexityCostSchema = import_v42.z.object({
|
|
499
|
+
input_tokens_cost: import_v42.z.number().nullish(),
|
|
500
|
+
output_tokens_cost: import_v42.z.number().nullish(),
|
|
501
|
+
request_cost: import_v42.z.number().nullish(),
|
|
502
|
+
total_cost: import_v42.z.number().nullish()
|
|
480
503
|
});
|
|
481
|
-
var perplexityUsageSchema =
|
|
482
|
-
prompt_tokens:
|
|
483
|
-
completion_tokens:
|
|
484
|
-
total_tokens:
|
|
485
|
-
citation_tokens:
|
|
486
|
-
num_search_queries:
|
|
487
|
-
reasoning_tokens:
|
|
504
|
+
var perplexityUsageSchema = import_v42.z.object({
|
|
505
|
+
prompt_tokens: import_v42.z.number(),
|
|
506
|
+
completion_tokens: import_v42.z.number(),
|
|
507
|
+
total_tokens: import_v42.z.number().nullish(),
|
|
508
|
+
citation_tokens: import_v42.z.number().nullish(),
|
|
509
|
+
num_search_queries: import_v42.z.number().nullish(),
|
|
510
|
+
reasoning_tokens: import_v42.z.number().nullish(),
|
|
488
511
|
cost: perplexityCostSchema.nullish()
|
|
489
512
|
});
|
|
490
|
-
var perplexityImageSchema =
|
|
491
|
-
image_url:
|
|
492
|
-
origin_url:
|
|
493
|
-
height:
|
|
494
|
-
width:
|
|
513
|
+
var perplexityImageSchema = import_v42.z.object({
|
|
514
|
+
image_url: import_v42.z.string(),
|
|
515
|
+
origin_url: import_v42.z.string(),
|
|
516
|
+
height: import_v42.z.number(),
|
|
517
|
+
width: import_v42.z.number()
|
|
495
518
|
});
|
|
496
|
-
var perplexityResponseSchema =
|
|
497
|
-
id:
|
|
498
|
-
created:
|
|
499
|
-
model:
|
|
500
|
-
choices:
|
|
501
|
-
|
|
502
|
-
message:
|
|
503
|
-
role:
|
|
504
|
-
content:
|
|
519
|
+
var perplexityResponseSchema = import_v42.z.object({
|
|
520
|
+
id: import_v42.z.string(),
|
|
521
|
+
created: import_v42.z.number(),
|
|
522
|
+
model: import_v42.z.string(),
|
|
523
|
+
choices: import_v42.z.array(
|
|
524
|
+
import_v42.z.object({
|
|
525
|
+
message: import_v42.z.object({
|
|
526
|
+
role: import_v42.z.literal("assistant"),
|
|
527
|
+
content: import_v42.z.string()
|
|
505
528
|
}),
|
|
506
|
-
finish_reason:
|
|
529
|
+
finish_reason: import_v42.z.string().nullish()
|
|
507
530
|
})
|
|
508
531
|
),
|
|
509
|
-
citations:
|
|
510
|
-
images:
|
|
532
|
+
citations: import_v42.z.array(import_v42.z.string()).nullish(),
|
|
533
|
+
images: import_v42.z.array(perplexityImageSchema).nullish(),
|
|
511
534
|
usage: perplexityUsageSchema.nullish()
|
|
512
535
|
});
|
|
513
|
-
var perplexityChunkSchema =
|
|
514
|
-
id:
|
|
515
|
-
created:
|
|
516
|
-
model:
|
|
517
|
-
choices:
|
|
518
|
-
|
|
519
|
-
delta:
|
|
520
|
-
role:
|
|
521
|
-
content:
|
|
536
|
+
var perplexityChunkSchema = import_v42.z.object({
|
|
537
|
+
id: import_v42.z.string(),
|
|
538
|
+
created: import_v42.z.number(),
|
|
539
|
+
model: import_v42.z.string(),
|
|
540
|
+
choices: import_v42.z.array(
|
|
541
|
+
import_v42.z.object({
|
|
542
|
+
delta: import_v42.z.object({
|
|
543
|
+
role: import_v42.z.literal("assistant").optional(),
|
|
544
|
+
content: import_v42.z.string().nullish()
|
|
522
545
|
}),
|
|
523
|
-
finish_reason:
|
|
546
|
+
finish_reason: import_v42.z.string().nullish()
|
|
524
547
|
})
|
|
525
548
|
),
|
|
526
|
-
citations:
|
|
527
|
-
images:
|
|
549
|
+
citations: import_v42.z.array(import_v42.z.string()).nullish(),
|
|
550
|
+
images: import_v42.z.array(perplexityImageSchema).nullish(),
|
|
528
551
|
usage: perplexityUsageSchema.nullish()
|
|
529
552
|
});
|
|
530
|
-
var perplexityErrorSchema =
|
|
531
|
-
error:
|
|
532
|
-
code:
|
|
533
|
-
message:
|
|
534
|
-
type:
|
|
553
|
+
var perplexityErrorSchema = import_v42.z.object({
|
|
554
|
+
error: import_v42.z.object({
|
|
555
|
+
code: import_v42.z.number(),
|
|
556
|
+
message: import_v42.z.string().nullish(),
|
|
557
|
+
type: import_v42.z.string().nullish()
|
|
535
558
|
})
|
|
536
559
|
});
|
|
537
560
|
var errorToMessage = (data) => {
|
|
@@ -539,14 +562,119 @@ var errorToMessage = (data) => {
|
|
|
539
562
|
return (_b = (_a = data.error.message) != null ? _a : data.error.type) != null ? _b : "unknown error";
|
|
540
563
|
};
|
|
541
564
|
|
|
565
|
+
// src/perplexity-embedding-model.ts
|
|
566
|
+
var PerplexityEmbeddingModel = class {
|
|
567
|
+
constructor(modelId, config) {
|
|
568
|
+
this.specificationVersion = "v3";
|
|
569
|
+
// https://docs.perplexity.ai/docs/embeddings/standard-embeddings
|
|
570
|
+
this.maxEmbeddingsPerCall = 512;
|
|
571
|
+
this.supportsParallelCalls = true;
|
|
572
|
+
this.modelId = modelId;
|
|
573
|
+
this.config = config;
|
|
574
|
+
}
|
|
575
|
+
get provider() {
|
|
576
|
+
return this.config.provider;
|
|
577
|
+
}
|
|
578
|
+
async doEmbed({
|
|
579
|
+
values,
|
|
580
|
+
abortSignal,
|
|
581
|
+
headers,
|
|
582
|
+
providerOptions
|
|
583
|
+
}) {
|
|
584
|
+
var _a, _b, _c, _d, _e, _f;
|
|
585
|
+
if (values.length > this.maxEmbeddingsPerCall) {
|
|
586
|
+
throw new import_provider2.TooManyEmbeddingValuesForCallError({
|
|
587
|
+
provider: this.provider,
|
|
588
|
+
modelId: this.modelId,
|
|
589
|
+
maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,
|
|
590
|
+
values
|
|
591
|
+
});
|
|
592
|
+
}
|
|
593
|
+
const perplexityOptions = (_a = await (0, import_provider_utils3.parseProviderOptions)({
|
|
594
|
+
provider: "perplexity",
|
|
595
|
+
providerOptions,
|
|
596
|
+
schema: perplexityEmbeddingModelOptions
|
|
597
|
+
})) != null ? _a : {};
|
|
598
|
+
const encodingFormat = (_b = perplexityOptions.encodingFormat) != null ? _b : "base64_int8";
|
|
599
|
+
const {
|
|
600
|
+
responseHeaders,
|
|
601
|
+
value: response,
|
|
602
|
+
rawValue
|
|
603
|
+
} = await (0, import_provider_utils3.postJsonToApi)({
|
|
604
|
+
url: `${this.config.baseURL}/v1/embeddings`,
|
|
605
|
+
headers: (0, import_provider_utils3.combineHeaders)(this.config.headers(), headers),
|
|
606
|
+
body: {
|
|
607
|
+
model: this.modelId,
|
|
608
|
+
input: values,
|
|
609
|
+
dimensions: perplexityOptions.dimensions,
|
|
610
|
+
encoding_format: encodingFormat
|
|
611
|
+
},
|
|
612
|
+
failedResponseHandler: (0, import_provider_utils3.createJsonErrorResponseHandler)({
|
|
613
|
+
errorSchema: perplexityErrorSchema,
|
|
614
|
+
errorToMessage: (data) => {
|
|
615
|
+
var _a2;
|
|
616
|
+
return (_a2 = data.error.message) != null ? _a2 : "Unknown error";
|
|
617
|
+
}
|
|
618
|
+
}),
|
|
619
|
+
successfulResponseHandler: (0, import_provider_utils3.createJsonResponseHandler)(
|
|
620
|
+
perplexityEmbeddingResponseSchema
|
|
621
|
+
),
|
|
622
|
+
abortSignal,
|
|
623
|
+
fetch: this.config.fetch
|
|
624
|
+
});
|
|
625
|
+
const cost = (_c = response.usage) == null ? void 0 : _c.cost;
|
|
626
|
+
return {
|
|
627
|
+
embeddings: response.data.map(
|
|
628
|
+
(item) => decodeEmbedding(item.embedding, encodingFormat)
|
|
629
|
+
),
|
|
630
|
+
usage: response.usage ? { tokens: response.usage.prompt_tokens } : void 0,
|
|
631
|
+
providerMetadata: cost ? {
|
|
632
|
+
perplexity: {
|
|
633
|
+
cost: {
|
|
634
|
+
inputCost: (_d = cost.input_cost) != null ? _d : null,
|
|
635
|
+
totalCost: (_e = cost.total_cost) != null ? _e : null,
|
|
636
|
+
currency: (_f = cost.currency) != null ? _f : null
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
} : void 0,
|
|
640
|
+
response: { headers: responseHeaders, body: rawValue },
|
|
641
|
+
warnings: []
|
|
642
|
+
};
|
|
643
|
+
}
|
|
644
|
+
};
|
|
645
|
+
function decodeEmbedding(base64, encodingFormat) {
|
|
646
|
+
const bytes = (0, import_provider_utils3.convertBase64ToUint8Array)(base64);
|
|
647
|
+
if (encodingFormat === "base64_int8") {
|
|
648
|
+
const int8 = new Int8Array(
|
|
649
|
+
bytes.buffer,
|
|
650
|
+
bytes.byteOffset,
|
|
651
|
+
bytes.byteLength
|
|
652
|
+
);
|
|
653
|
+
return Array.from(int8);
|
|
654
|
+
}
|
|
655
|
+
return Array.from(bytes);
|
|
656
|
+
}
|
|
657
|
+
var perplexityEmbeddingResponseSchema = import_v43.z.object({
|
|
658
|
+
data: import_v43.z.array(import_v43.z.object({ embedding: import_v43.z.string() })),
|
|
659
|
+
usage: import_v43.z.object({
|
|
660
|
+
prompt_tokens: import_v43.z.number(),
|
|
661
|
+
cost: import_v43.z.object({
|
|
662
|
+
input_cost: import_v43.z.number().nullish(),
|
|
663
|
+
total_cost: import_v43.z.number().nullish(),
|
|
664
|
+
currency: import_v43.z.string().nullish()
|
|
665
|
+
}).nullish()
|
|
666
|
+
}).nullish()
|
|
667
|
+
});
|
|
668
|
+
|
|
542
669
|
// src/version.ts
|
|
543
|
-
var VERSION = true ? "3.0.
|
|
670
|
+
var VERSION = true ? "3.0.50" : "0.0.0-test";
|
|
544
671
|
|
|
545
672
|
// src/perplexity-provider.ts
|
|
546
673
|
function createPerplexity(options = {}) {
|
|
547
|
-
|
|
674
|
+
var _a;
|
|
675
|
+
const getHeaders = () => (0, import_provider_utils4.withUserAgentSuffix)(
|
|
548
676
|
{
|
|
549
|
-
Authorization: `Bearer ${(0,
|
|
677
|
+
Authorization: `Bearer ${(0, import_provider_utils4.loadApiKey)({
|
|
550
678
|
apiKey: options.apiKey,
|
|
551
679
|
environmentVariableName: "PERPLEXITY_API_KEY",
|
|
552
680
|
description: "Perplexity"
|
|
@@ -555,26 +683,31 @@ function createPerplexity(options = {}) {
|
|
|
555
683
|
},
|
|
556
684
|
`ai-sdk/perplexity/${VERSION}`
|
|
557
685
|
);
|
|
686
|
+
const baseURL = (0, import_provider_utils4.withoutTrailingSlash)(
|
|
687
|
+
(_a = options.baseURL) != null ? _a : "https://api.perplexity.ai"
|
|
688
|
+
);
|
|
558
689
|
const createLanguageModel = (modelId) => {
|
|
559
|
-
var _a;
|
|
560
690
|
return new PerplexityLanguageModel(modelId, {
|
|
561
|
-
baseURL
|
|
562
|
-
(_a = options.baseURL) != null ? _a : "https://api.perplexity.ai"
|
|
563
|
-
),
|
|
691
|
+
baseURL,
|
|
564
692
|
headers: getHeaders,
|
|
565
|
-
generateId:
|
|
693
|
+
generateId: import_provider_utils4.generateId,
|
|
566
694
|
fetch: options.fetch
|
|
567
695
|
});
|
|
568
696
|
};
|
|
697
|
+
const createEmbeddingModel = (modelId) => new PerplexityEmbeddingModel(modelId, {
|
|
698
|
+
provider: "perplexity.embedding",
|
|
699
|
+
baseURL,
|
|
700
|
+
headers: getHeaders,
|
|
701
|
+
fetch: options.fetch
|
|
702
|
+
});
|
|
569
703
|
const provider = (modelId) => createLanguageModel(modelId);
|
|
570
704
|
provider.specificationVersion = "v3";
|
|
571
705
|
provider.languageModel = createLanguageModel;
|
|
572
|
-
provider.
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
provider.textEmbeddingModel = provider.embeddingModel;
|
|
706
|
+
provider.embedding = createEmbeddingModel;
|
|
707
|
+
provider.embeddingModel = createEmbeddingModel;
|
|
708
|
+
provider.textEmbeddingModel = createEmbeddingModel;
|
|
576
709
|
provider.imageModel = (modelId) => {
|
|
577
|
-
throw new
|
|
710
|
+
throw new import_provider3.NoSuchModelError({ modelId, modelType: "imageModel" });
|
|
578
711
|
};
|
|
579
712
|
return provider;
|
|
580
713
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/perplexity-provider.ts","../src/perplexity-language-model.ts","../src/convert-perplexity-usage.ts","../src/convert-to-perplexity-messages.ts","../src/map-perplexity-finish-reason.ts","../src/version.ts"],"sourcesContent":["export { createPerplexity, perplexity } from './perplexity-provider';\nexport type {\n PerplexityProvider,\n PerplexityProviderSettings,\n} from './perplexity-provider';\nexport { VERSION } from './version';\n","import {\n NoSuchModelError,\n type LanguageModelV3,\n type ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { PerplexityLanguageModel } from './perplexity-language-model';\nimport type { PerplexityLanguageModelId } from './perplexity-language-model-options';\nimport { VERSION } from './version';\n\nexport interface PerplexityProvider extends ProviderV3 {\n /**\n * Creates an Perplexity chat model for text generation.\n */\n (modelId: PerplexityLanguageModelId): LanguageModelV3;\n\n /**\n * Creates an Perplexity language model for text generation.\n */\n languageModel(modelId: PerplexityLanguageModelId): LanguageModelV3;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport interface PerplexityProviderSettings {\n /**\n * Base URL for the perplexity API calls.\n */\n baseURL?: string;\n\n /**\n * API key for authenticating requests.\n */\n apiKey?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport function createPerplexity(\n options: PerplexityProviderSettings = {},\n): PerplexityProvider {\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'PERPLEXITY_API_KEY',\n description: 'Perplexity',\n })}`,\n ...options.headers,\n },\n `ai-sdk/perplexity/${VERSION}`,\n );\n\n const createLanguageModel = (modelId: PerplexityLanguageModelId) => {\n return new PerplexityLanguageModel(modelId, {\n baseURL: withoutTrailingSlash(\n options.baseURL ?? 'https://api.perplexity.ai',\n )!,\n headers: getHeaders,\n generateId,\n fetch: options.fetch,\n });\n };\n\n const provider = (modelId: PerplexityLanguageModelId) =>\n createLanguageModel(modelId);\n\n provider.specificationVersion = 'v3' as const;\n provider.languageModel = createLanguageModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const perplexity = createPerplexity();\n","import type {\n LanguageModelV3,\n LanguageModelV3CallOptions,\n LanguageModelV3Content,\n LanguageModelV3FinishReason,\n LanguageModelV3GenerateResult,\n LanguageModelV3StreamPart,\n LanguageModelV3StreamResult,\n SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n type FetchFunction,\n type ParseResult,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertPerplexityUsage } from './convert-perplexity-usage';\nimport { convertToPerplexityMessages } from './convert-to-perplexity-messages';\nimport { mapPerplexityFinishReason } from './map-perplexity-finish-reason';\nimport type { PerplexityLanguageModelId } from './perplexity-language-model-options';\n\ntype PerplexityChatConfig = {\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nexport class PerplexityLanguageModel implements LanguageModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider = 'perplexity';\n\n readonly modelId: PerplexityLanguageModelId;\n\n private readonly config: PerplexityChatConfig;\n\n constructor(\n modelId: PerplexityLanguageModelId,\n config: PerplexityChatConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n // No URLs are supported.\n };\n\n private getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n providerOptions,\n }: LanguageModelV3CallOptions) {\n const warnings: SharedV3Warning[] = [];\n\n if (topK != null) {\n warnings.push({ type: 'unsupported', feature: 'topK' });\n }\n\n if (stopSequences != null) {\n warnings.push({ type: 'unsupported', feature: 'stopSequences' });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported', feature: 'seed' });\n }\n\n return {\n args: {\n // model id:\n model: this.modelId,\n\n // standardized settings:\n frequency_penalty: frequencyPenalty,\n max_tokens: maxOutputTokens,\n presence_penalty: presencePenalty,\n temperature,\n top_k: topK,\n top_p: topP,\n\n // response format:\n response_format:\n responseFormat?.type === 'json'\n ? {\n type: 'json_schema',\n json_schema: { schema: responseFormat.schema },\n }\n : undefined,\n\n // provider extensions\n ...(providerOptions?.perplexity ?? {}),\n\n // messages:\n messages: convertToPerplexityMessages(prompt),\n },\n warnings,\n };\n }\n\n async doGenerate(\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3GenerateResult> {\n const { args: body, warnings } = this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: perplexityErrorSchema,\n errorToMessage,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n perplexityResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n const content: Array<LanguageModelV3Content> = [];\n\n // text content:\n const text = choice.message.content;\n if (text.length > 0) {\n content.push({ type: 'text', text });\n }\n\n // sources:\n if (response.citations != null) {\n for (const url of response.citations) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId(),\n url,\n });\n }\n }\n\n return {\n content,\n finishReason: {\n unified: mapPerplexityFinishReason(choice.finish_reason),\n raw: choice.finish_reason ?? undefined,\n },\n usage: convertPerplexityUsage(response.usage),\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n providerMetadata: {\n perplexity: {\n images:\n response.images?.map(image => ({\n imageUrl: image.image_url,\n originUrl: image.origin_url,\n height: image.height,\n width: image.width,\n })) ?? null,\n usage: {\n citationTokens: response.usage?.citation_tokens ?? null,\n numSearchQueries: response.usage?.num_search_queries ?? null,\n },\n cost: response.usage?.cost\n ? {\n inputTokensCost: response.usage.cost.input_tokens_cost ?? null,\n outputTokensCost:\n response.usage.cost.output_tokens_cost ?? null,\n requestCost: response.usage.cost.request_cost ?? null,\n totalCost: response.usage.cost.total_cost ?? null,\n }\n : null,\n },\n },\n };\n }\n\n async doStream(\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3StreamResult> {\n const { args, warnings } = this.getArgs(options);\n\n const body = { ...args, stream: true };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: perplexityErrorSchema,\n errorToMessage,\n }),\n successfulResponseHandler: createEventSourceResponseHandler(\n perplexityChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV3FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n let usage:\n | {\n prompt_tokens: number | undefined;\n completion_tokens: number | undefined;\n reasoning_tokens?: number | null | undefined;\n }\n | undefined = undefined;\n\n const providerMetadata: {\n perplexity: {\n usage: {\n citationTokens: number | null;\n numSearchQueries: number | null;\n };\n cost: {\n inputTokensCost: number | null;\n outputTokensCost: number | null;\n requestCost: number | null;\n totalCost: number | null;\n } | null;\n images: Array<{\n imageUrl: string;\n originUrl: string;\n height: number;\n width: number;\n }> | null;\n };\n } = {\n perplexity: {\n usage: {\n citationTokens: null,\n numSearchQueries: null,\n },\n cost: null,\n images: null,\n },\n };\n let isFirstChunk = true;\n let isActive = false;\n\n const self = this;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof perplexityChunkSchema>>,\n LanguageModelV3StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n if (isFirstChunk) {\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n\n value.citations?.forEach(url => {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url,\n });\n });\n\n isFirstChunk = false;\n }\n\n if (value.usage != null) {\n usage = value.usage;\n\n providerMetadata.perplexity.usage = {\n citationTokens: value.usage.citation_tokens ?? null,\n numSearchQueries: value.usage.num_search_queries ?? null,\n };\n\n providerMetadata.perplexity.cost = value.usage.cost\n ? {\n inputTokensCost: value.usage.cost.input_tokens_cost ?? null,\n outputTokensCost:\n value.usage.cost.output_tokens_cost ?? null,\n requestCost: value.usage.cost.request_cost ?? null,\n totalCost: value.usage.cost.total_cost ?? null,\n }\n : null;\n }\n\n if (value.images != null) {\n providerMetadata.perplexity.images = value.images.map(image => ({\n imageUrl: image.image_url,\n originUrl: image.origin_url,\n height: image.height,\n width: image.width,\n }));\n }\n\n const choice = value.choices[0];\n if (choice?.finish_reason != null) {\n finishReason = {\n unified: mapPerplexityFinishReason(choice.finish_reason),\n raw: choice.finish_reason,\n };\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n const textContent = delta.content;\n\n if (textContent != null) {\n if (!isActive) {\n controller.enqueue({ type: 'text-start', id: '0' });\n isActive = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: '0',\n delta: textContent,\n });\n }\n },\n\n flush(controller) {\n if (isActive) {\n controller.enqueue({ type: 'text-end', id: '0' });\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: convertPerplexityUsage(usage),\n providerMetadata,\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nfunction getResponseMetadata({\n id,\n model,\n created,\n}: {\n id: string;\n created: number;\n model: string;\n}) {\n return {\n id,\n modelId: model,\n timestamp: new Date(created * 1000),\n };\n}\n\nconst perplexityCostSchema = z.object({\n input_tokens_cost: z.number().nullish(),\n output_tokens_cost: z.number().nullish(),\n request_cost: z.number().nullish(),\n total_cost: z.number().nullish(),\n});\n\nconst perplexityUsageSchema = z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number().nullish(),\n citation_tokens: z.number().nullish(),\n num_search_queries: z.number().nullish(),\n reasoning_tokens: z.number().nullish(),\n cost: perplexityCostSchema.nullish(),\n});\n\nexport const perplexityImageSchema = z.object({\n image_url: z.string(),\n origin_url: z.string(),\n height: z.number(),\n width: z.number(),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst perplexityResponseSchema = z.object({\n id: z.string(),\n created: z.number(),\n model: z.string(),\n choices: z.array(\n z.object({\n message: z.object({\n role: z.literal('assistant'),\n content: z.string(),\n }),\n finish_reason: z.string().nullish(),\n }),\n ),\n citations: z.array(z.string()).nullish(),\n images: z.array(perplexityImageSchema).nullish(),\n usage: perplexityUsageSchema.nullish(),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst perplexityChunkSchema = z.object({\n id: z.string(),\n created: z.number(),\n model: z.string(),\n choices: z.array(\n z.object({\n delta: z.object({\n role: z.literal('assistant').optional(),\n content: z.string().nullish(),\n }),\n finish_reason: z.string().nullish(),\n }),\n ),\n citations: z.array(z.string()).nullish(),\n images: z.array(perplexityImageSchema).nullish(),\n usage: perplexityUsageSchema.nullish(),\n});\n\nexport const perplexityErrorSchema = z.object({\n error: z.object({\n code: z.number(),\n message: z.string().nullish(),\n type: z.string().nullish(),\n }),\n});\n\nexport type PerplexityErrorData = z.infer<typeof perplexityErrorSchema>;\n\nconst errorToMessage = (data: PerplexityErrorData) => {\n return data.error.message ?? data.error.type ?? 'unknown error';\n};\n","import type { LanguageModelV3Usage } from '@ai-sdk/provider';\n\nexport function convertPerplexityUsage(\n usage:\n | {\n prompt_tokens?: number | null | undefined;\n completion_tokens?: number | null | undefined;\n reasoning_tokens?: number | null | undefined;\n }\n | undefined\n | null,\n): LanguageModelV3Usage {\n if (usage == null) {\n return {\n inputTokens: {\n total: undefined,\n noCache: undefined,\n cacheRead: undefined,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: undefined,\n text: undefined,\n reasoning: undefined,\n },\n raw: undefined,\n };\n }\n\n const promptTokens = usage.prompt_tokens ?? 0;\n const completionTokens = usage.completion_tokens ?? 0;\n const reasoningTokens = usage.reasoning_tokens ?? 0;\n\n return {\n inputTokens: {\n total: promptTokens,\n noCache: promptTokens,\n cacheRead: undefined,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: completionTokens,\n text: completionTokens - reasoningTokens,\n reasoning: reasoningTokens,\n },\n raw: usage,\n };\n}\n","import {\n UnsupportedFunctionalityError,\n type LanguageModelV3Prompt,\n} from '@ai-sdk/provider';\nimport type {\n PerplexityMessageContent,\n PerplexityPrompt,\n} from './perplexity-language-model-prompt';\nimport {\n convertBase64ToUint8Array,\n convertUint8ArrayToBase64,\n} from '@ai-sdk/provider-utils';\n\nexport function convertToPerplexityMessages(\n prompt: LanguageModelV3Prompt,\n): PerplexityPrompt {\n const messages: PerplexityPrompt = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user':\n case 'assistant': {\n const hasMultipartContent = content.some(\n part =>\n (part.type === 'file' && part.mediaType.startsWith('image/')) ||\n (part.type === 'file' &&\n getTopLevelMediaType(part.mediaType) === 'application'),\n );\n\n const messageContent = content\n .map((part, index) => {\n switch (part.type) {\n case 'text': {\n return {\n type: 'text',\n text: part.text,\n };\n }\n case 'file': {\n if (getTopLevelMediaType(part.mediaType) === 'application') {\n const fullMediaType = resolveApplicationMediaType(part);\n\n if (fullMediaType !== 'application/pdf') {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${fullMediaType}`,\n });\n }\n\n return part.data instanceof URL\n ? {\n type: 'file_url',\n file_url: {\n url: part.data.toString(),\n },\n file_name: part.filename,\n }\n : {\n type: 'file_url',\n file_url: {\n url:\n typeof part.data === 'string'\n ? part.data\n : convertUint8ArrayToBase64(part.data),\n },\n file_name: part.filename || `document-${index}.pdf`,\n };\n } else if (part.mediaType.startsWith('image/')) {\n return part.data instanceof URL\n ? {\n type: 'image_url',\n image_url: {\n url: part.data.toString(),\n },\n }\n : {\n type: 'image_url',\n image_url: {\n url: `data:${part.mediaType ?? 'image/jpeg'};base64,${\n typeof part.data === 'string'\n ? part.data\n : convertUint8ArrayToBase64(part.data)\n }`,\n },\n };\n }\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n })\n .filter(Boolean) as PerplexityMessageContent[];\n messages.push({\n role,\n content: hasMultipartContent\n ? messageContent\n : messageContent\n .filter(part => part.type === 'text')\n .map(part => part.text)\n .join(''),\n });\n break;\n }\n case 'tool': {\n throw new UnsupportedFunctionalityError({\n functionality: 'Tool messages',\n });\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return messages;\n}\n\nfunction getTopLevelMediaType(mediaType: string): string {\n const slashIndex = mediaType.indexOf('/');\n return slashIndex === -1 ? mediaType : mediaType.substring(0, slashIndex);\n}\n\nfunction isFullMediaType(mediaType: string): boolean {\n const slashIndex = mediaType.indexOf('/');\n if (slashIndex === -1) {\n return false;\n }\n const subtype = mediaType.substring(slashIndex + 1);\n return subtype.length > 0 && subtype !== '*';\n}\n\nfunction resolveApplicationMediaType(part: {\n mediaType: string;\n data: Uint8Array | string | URL;\n}): string {\n if (isFullMediaType(part.mediaType)) {\n return part.mediaType;\n }\n\n if (part.data instanceof URL) {\n throw new UnsupportedFunctionalityError({\n functionality: `file of media type \"${part.mediaType}\" must specify subtype since it is not passed as inline bytes`,\n });\n }\n\n if (isPdfData(part.data)) {\n return 'application/pdf';\n }\n\n throw new UnsupportedFunctionalityError({\n functionality: `file of media type \"${part.mediaType}\" must specify subtype since it could not be auto-detected`,\n });\n}\n\nfunction isPdfData(data: Uint8Array | string): boolean {\n const bytes =\n typeof data === 'string'\n ? convertBase64ToUint8Array(data.substring(0, Math.min(data.length, 8)))\n : data;\n\n return (\n bytes.length >= 4 &&\n bytes[0] === 0x25 &&\n bytes[1] === 0x50 &&\n bytes[2] === 0x44 &&\n bytes[3] === 0x46\n );\n}\n","import type { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapPerplexityFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV3FinishReason['unified'] {\n switch (finishReason) {\n case 'stop':\n case 'length':\n return finishReason;\n default:\n return 'other';\n }\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["import_provider","import_provider_utils","import_provider_utils"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/perplexity-provider.ts","../src/perplexity-embedding-model.ts","../src/perplexity-embedding-model-options.ts","../src/perplexity-language-model.ts","../src/convert-perplexity-usage.ts","../src/convert-to-perplexity-messages.ts","../src/map-perplexity-finish-reason.ts","../src/version.ts"],"sourcesContent":["export { createPerplexity, perplexity } from './perplexity-provider';\nexport type {\n PerplexityProvider,\n PerplexityProviderSettings,\n} from './perplexity-provider';\nexport type {\n PerplexityEmbeddingModelId,\n PerplexityEmbeddingModelOptions,\n} from './perplexity-embedding-model-options';\nexport { VERSION } from './version';\n","import {\n NoSuchModelError,\n type LanguageModelV3,\n type EmbeddingModelV3,\n type ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { PerplexityEmbeddingModel } from './perplexity-embedding-model';\nimport type { PerplexityEmbeddingModelId } from './perplexity-embedding-model-options';\nimport { PerplexityLanguageModel } from './perplexity-language-model';\nimport type { PerplexityLanguageModelId } from './perplexity-language-model-options';\nimport { VERSION } from './version';\n\nexport interface PerplexityProvider extends ProviderV3 {\n /**\n * Creates an Perplexity chat model for text generation.\n */\n (modelId: PerplexityLanguageModelId): LanguageModelV3;\n\n /**\n * Creates an Perplexity language model for text generation.\n */\n languageModel(modelId: PerplexityLanguageModelId): LanguageModelV3;\n\n /**\n * Creates a Perplexity model for text embeddings.\n */\n embedding(modelId: PerplexityEmbeddingModelId): EmbeddingModelV3;\n\n /**\n * Creates a Perplexity model for text embeddings.\n */\n embeddingModel(modelId: PerplexityEmbeddingModelId): EmbeddingModelV3;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: PerplexityEmbeddingModelId): EmbeddingModelV3;\n}\n\nexport interface PerplexityProviderSettings {\n /**\n * Base URL for the perplexity API calls.\n */\n baseURL?: string;\n\n /**\n * API key for authenticating requests.\n */\n apiKey?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport function createPerplexity(\n options: PerplexityProviderSettings = {},\n): PerplexityProvider {\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'PERPLEXITY_API_KEY',\n description: 'Perplexity',\n })}`,\n ...options.headers,\n },\n `ai-sdk/perplexity/${VERSION}`,\n );\n\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.perplexity.ai',\n )!;\n\n const createLanguageModel = (modelId: PerplexityLanguageModelId) => {\n return new PerplexityLanguageModel(modelId, {\n baseURL,\n headers: getHeaders,\n generateId,\n fetch: options.fetch,\n });\n };\n\n const createEmbeddingModel = (modelId: PerplexityEmbeddingModelId) =>\n new PerplexityEmbeddingModel(modelId, {\n provider: 'perplexity.embedding',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = (modelId: PerplexityLanguageModelId) =>\n createLanguageModel(modelId);\n\n provider.specificationVersion = 'v3' as const;\n provider.languageModel = createLanguageModel;\n\n provider.embedding = createEmbeddingModel;\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const perplexity = createPerplexity();\n","import {\n TooManyEmbeddingValuesForCallError,\n type EmbeddingModelV3,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n perplexityEmbeddingModelOptions,\n type PerplexityEmbeddingModelId,\n} from './perplexity-embedding-model-options';\nimport { perplexityErrorSchema } from './perplexity-language-model';\n\ntype PerplexityEmbeddingConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class PerplexityEmbeddingModel implements EmbeddingModelV3 {\n readonly specificationVersion = 'v3';\n readonly modelId: PerplexityEmbeddingModelId;\n // https://docs.perplexity.ai/docs/embeddings/standard-embeddings\n readonly maxEmbeddingsPerCall = 512;\n readonly supportsParallelCalls = true;\n\n private readonly config: PerplexityEmbeddingConfig;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n modelId: PerplexityEmbeddingModelId,\n config: PerplexityEmbeddingConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n async doEmbed({\n values,\n abortSignal,\n headers,\n providerOptions,\n }: Parameters<EmbeddingModelV3['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>\n > {\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n const perplexityOptions =\n (await parseProviderOptions({\n provider: 'perplexity',\n providerOptions,\n schema: perplexityEmbeddingModelOptions,\n })) ?? {};\n\n // Perplexity only returns quantized (base64-encoded) embeddings.\n const encodingFormat = perplexityOptions.encodingFormat ?? 'base64_int8';\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/v1/embeddings`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n input: values,\n dimensions: perplexityOptions.dimensions,\n encoding_format: encodingFormat,\n },\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: perplexityErrorSchema,\n errorToMessage: data => data.error.message ?? 'Unknown error',\n }),\n successfulResponseHandler: createJsonResponseHandler(\n perplexityEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n const cost = response.usage?.cost;\n\n return {\n embeddings: response.data.map(item =>\n decodeEmbedding(item.embedding, encodingFormat),\n ),\n usage: response.usage\n ? { tokens: response.usage.prompt_tokens }\n : undefined,\n providerMetadata: cost\n ? {\n perplexity: {\n cost: {\n inputCost: cost.input_cost ?? null,\n totalCost: cost.total_cost ?? null,\n currency: cost.currency ?? null,\n },\n },\n }\n : undefined,\n response: { headers: responseHeaders, body: rawValue },\n warnings: [],\n };\n }\n}\n\n/**\n * Decodes a base64-encoded Perplexity embedding into a numeric vector.\n * For `base64_int8` the bytes are reinterpreted as signed int8 values;\n * for `base64_binary` the raw unsigned bytes (packed bits) are returned.\n */\nfunction decodeEmbedding(\n base64: string,\n encodingFormat: 'base64_int8' | 'base64_binary',\n): number[] {\n const bytes = convertBase64ToUint8Array(base64);\n\n if (encodingFormat === 'base64_int8') {\n const int8 = new Int8Array(\n bytes.buffer,\n bytes.byteOffset,\n bytes.byteLength,\n );\n return Array.from(int8);\n }\n\n return Array.from(bytes);\n}\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst perplexityEmbeddingResponseSchema = z.object({\n data: z.array(z.object({ embedding: z.string() })),\n usage: z\n .object({\n prompt_tokens: z.number(),\n cost: z\n .object({\n input_cost: z.number().nullish(),\n total_cost: z.number().nullish(),\n currency: z.string().nullish(),\n })\n .nullish(),\n })\n .nullish(),\n});\n","import { z } from 'zod/v4';\n\n// https://docs.perplexity.ai/docs/embeddings/quickstart\nexport type PerplexityEmbeddingModelId =\n | 'pplx-embed-v1-0.6b'\n | 'pplx-embed-v1-4b'\n | (string & {});\n\nexport const perplexityEmbeddingModelOptions = z.object({\n /**\n * The number of dimensions the resulting output embeddings should have\n * (Matryoshka truncation). Ranges from 128 up to the model's full size\n * (1024 for 0.6b models, 2560 for 4b models).\n */\n dimensions: z.number().int().positive().optional(),\n\n /**\n * The quantized encoding format returned by the API. Perplexity does not\n * return floating point embeddings; values are decoded to numbers:\n * - `base64_int8` (default): signed int8 values, compare via cosine similarity.\n * - `base64_binary`: packed bits per byte (0-255), compare via Hamming distance.\n */\n encodingFormat: z.enum(['base64_int8', 'base64_binary']).optional(),\n});\n\nexport type PerplexityEmbeddingModelOptions = z.infer<\n typeof perplexityEmbeddingModelOptions\n>;\n","import type {\n LanguageModelV3,\n LanguageModelV3CallOptions,\n LanguageModelV3Content,\n LanguageModelV3FinishReason,\n LanguageModelV3GenerateResult,\n LanguageModelV3StreamPart,\n LanguageModelV3StreamResult,\n SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n type FetchFunction,\n type ParseResult,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertPerplexityUsage } from './convert-perplexity-usage';\nimport { convertToPerplexityMessages } from './convert-to-perplexity-messages';\nimport { mapPerplexityFinishReason } from './map-perplexity-finish-reason';\nimport type { PerplexityLanguageModelId } from './perplexity-language-model-options';\n\ntype PerplexityChatConfig = {\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nexport class PerplexityLanguageModel implements LanguageModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider = 'perplexity';\n\n readonly modelId: PerplexityLanguageModelId;\n\n private readonly config: PerplexityChatConfig;\n\n constructor(\n modelId: PerplexityLanguageModelId,\n config: PerplexityChatConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n // No URLs are supported.\n };\n\n private getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n providerOptions,\n }: LanguageModelV3CallOptions) {\n const warnings: SharedV3Warning[] = [];\n\n if (topK != null) {\n warnings.push({ type: 'unsupported', feature: 'topK' });\n }\n\n if (stopSequences != null) {\n warnings.push({ type: 'unsupported', feature: 'stopSequences' });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported', feature: 'seed' });\n }\n\n return {\n args: {\n // model id:\n model: this.modelId,\n\n // standardized settings:\n frequency_penalty: frequencyPenalty,\n max_tokens: maxOutputTokens,\n presence_penalty: presencePenalty,\n temperature,\n top_k: topK,\n top_p: topP,\n\n // response format:\n response_format:\n responseFormat?.type === 'json'\n ? {\n type: 'json_schema',\n json_schema: { schema: responseFormat.schema },\n }\n : undefined,\n\n // provider extensions\n ...(providerOptions?.perplexity ?? {}),\n\n // messages:\n messages: convertToPerplexityMessages(prompt),\n },\n warnings,\n };\n }\n\n async doGenerate(\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3GenerateResult> {\n const { args: body, warnings } = this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: perplexityErrorSchema,\n errorToMessage,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n perplexityResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n const content: Array<LanguageModelV3Content> = [];\n\n // text content:\n const text = choice.message.content;\n if (text.length > 0) {\n content.push({ type: 'text', text });\n }\n\n // sources:\n if (response.citations != null) {\n for (const url of response.citations) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId(),\n url,\n });\n }\n }\n\n return {\n content,\n finishReason: {\n unified: mapPerplexityFinishReason(choice.finish_reason),\n raw: choice.finish_reason ?? undefined,\n },\n usage: convertPerplexityUsage(response.usage),\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n providerMetadata: {\n perplexity: {\n images:\n response.images?.map(image => ({\n imageUrl: image.image_url,\n originUrl: image.origin_url,\n height: image.height,\n width: image.width,\n })) ?? null,\n usage: {\n citationTokens: response.usage?.citation_tokens ?? null,\n numSearchQueries: response.usage?.num_search_queries ?? null,\n },\n cost: response.usage?.cost\n ? {\n inputTokensCost: response.usage.cost.input_tokens_cost ?? null,\n outputTokensCost:\n response.usage.cost.output_tokens_cost ?? null,\n requestCost: response.usage.cost.request_cost ?? null,\n totalCost: response.usage.cost.total_cost ?? null,\n }\n : null,\n },\n },\n };\n }\n\n async doStream(\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3StreamResult> {\n const { args, warnings } = this.getArgs(options);\n\n const body = { ...args, stream: true };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: perplexityErrorSchema,\n errorToMessage,\n }),\n successfulResponseHandler: createEventSourceResponseHandler(\n perplexityChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV3FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n let usage:\n | {\n prompt_tokens: number | undefined;\n completion_tokens: number | undefined;\n reasoning_tokens?: number | null | undefined;\n }\n | undefined = undefined;\n\n const providerMetadata: {\n perplexity: {\n usage: {\n citationTokens: number | null;\n numSearchQueries: number | null;\n };\n cost: {\n inputTokensCost: number | null;\n outputTokensCost: number | null;\n requestCost: number | null;\n totalCost: number | null;\n } | null;\n images: Array<{\n imageUrl: string;\n originUrl: string;\n height: number;\n width: number;\n }> | null;\n };\n } = {\n perplexity: {\n usage: {\n citationTokens: null,\n numSearchQueries: null,\n },\n cost: null,\n images: null,\n },\n };\n let isFirstChunk = true;\n let isActive = false;\n\n const self = this;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof perplexityChunkSchema>>,\n LanguageModelV3StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n if (isFirstChunk) {\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n\n value.citations?.forEach(url => {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url,\n });\n });\n\n isFirstChunk = false;\n }\n\n if (value.usage != null) {\n usage = value.usage;\n\n providerMetadata.perplexity.usage = {\n citationTokens: value.usage.citation_tokens ?? null,\n numSearchQueries: value.usage.num_search_queries ?? null,\n };\n\n providerMetadata.perplexity.cost = value.usage.cost\n ? {\n inputTokensCost: value.usage.cost.input_tokens_cost ?? null,\n outputTokensCost:\n value.usage.cost.output_tokens_cost ?? null,\n requestCost: value.usage.cost.request_cost ?? null,\n totalCost: value.usage.cost.total_cost ?? null,\n }\n : null;\n }\n\n if (value.images != null) {\n providerMetadata.perplexity.images = value.images.map(image => ({\n imageUrl: image.image_url,\n originUrl: image.origin_url,\n height: image.height,\n width: image.width,\n }));\n }\n\n const choice = value.choices[0];\n if (choice?.finish_reason != null) {\n finishReason = {\n unified: mapPerplexityFinishReason(choice.finish_reason),\n raw: choice.finish_reason,\n };\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n const textContent = delta.content;\n\n if (textContent != null) {\n if (!isActive) {\n controller.enqueue({ type: 'text-start', id: '0' });\n isActive = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: '0',\n delta: textContent,\n });\n }\n },\n\n flush(controller) {\n if (isActive) {\n controller.enqueue({ type: 'text-end', id: '0' });\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: convertPerplexityUsage(usage),\n providerMetadata,\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nfunction getResponseMetadata({\n id,\n model,\n created,\n}: {\n id: string;\n created: number;\n model: string;\n}) {\n return {\n id,\n modelId: model,\n timestamp: new Date(created * 1000),\n };\n}\n\nconst perplexityCostSchema = z.object({\n input_tokens_cost: z.number().nullish(),\n output_tokens_cost: z.number().nullish(),\n request_cost: z.number().nullish(),\n total_cost: z.number().nullish(),\n});\n\nconst perplexityUsageSchema = z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number().nullish(),\n citation_tokens: z.number().nullish(),\n num_search_queries: z.number().nullish(),\n reasoning_tokens: z.number().nullish(),\n cost: perplexityCostSchema.nullish(),\n});\n\nexport const perplexityImageSchema = z.object({\n image_url: z.string(),\n origin_url: z.string(),\n height: z.number(),\n width: z.number(),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst perplexityResponseSchema = z.object({\n id: z.string(),\n created: z.number(),\n model: z.string(),\n choices: z.array(\n z.object({\n message: z.object({\n role: z.literal('assistant'),\n content: z.string(),\n }),\n finish_reason: z.string().nullish(),\n }),\n ),\n citations: z.array(z.string()).nullish(),\n images: z.array(perplexityImageSchema).nullish(),\n usage: perplexityUsageSchema.nullish(),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst perplexityChunkSchema = z.object({\n id: z.string(),\n created: z.number(),\n model: z.string(),\n choices: z.array(\n z.object({\n delta: z.object({\n role: z.literal('assistant').optional(),\n content: z.string().nullish(),\n }),\n finish_reason: z.string().nullish(),\n }),\n ),\n citations: z.array(z.string()).nullish(),\n images: z.array(perplexityImageSchema).nullish(),\n usage: perplexityUsageSchema.nullish(),\n});\n\nexport const perplexityErrorSchema = z.object({\n error: z.object({\n code: z.number(),\n message: z.string().nullish(),\n type: z.string().nullish(),\n }),\n});\n\nexport type PerplexityErrorData = z.infer<typeof perplexityErrorSchema>;\n\nconst errorToMessage = (data: PerplexityErrorData) => {\n return data.error.message ?? data.error.type ?? 'unknown error';\n};\n","import type { LanguageModelV3Usage } from '@ai-sdk/provider';\n\nexport function convertPerplexityUsage(\n usage:\n | {\n prompt_tokens?: number | null | undefined;\n completion_tokens?: number | null | undefined;\n reasoning_tokens?: number | null | undefined;\n }\n | undefined\n | null,\n): LanguageModelV3Usage {\n if (usage == null) {\n return {\n inputTokens: {\n total: undefined,\n noCache: undefined,\n cacheRead: undefined,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: undefined,\n text: undefined,\n reasoning: undefined,\n },\n raw: undefined,\n };\n }\n\n const promptTokens = usage.prompt_tokens ?? 0;\n const completionTokens = usage.completion_tokens ?? 0;\n const reasoningTokens = usage.reasoning_tokens ?? 0;\n\n return {\n inputTokens: {\n total: promptTokens,\n noCache: promptTokens,\n cacheRead: undefined,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: completionTokens,\n text: completionTokens - reasoningTokens,\n reasoning: reasoningTokens,\n },\n raw: usage,\n };\n}\n","import {\n UnsupportedFunctionalityError,\n type LanguageModelV3Prompt,\n} from '@ai-sdk/provider';\nimport type {\n PerplexityMessageContent,\n PerplexityPrompt,\n} from './perplexity-language-model-prompt';\nimport {\n convertBase64ToUint8Array,\n convertUint8ArrayToBase64,\n} from '@ai-sdk/provider-utils';\n\nexport function convertToPerplexityMessages(\n prompt: LanguageModelV3Prompt,\n): PerplexityPrompt {\n const messages: PerplexityPrompt = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user':\n case 'assistant': {\n const hasMultipartContent = content.some(\n part =>\n (part.type === 'file' && part.mediaType.startsWith('image/')) ||\n (part.type === 'file' &&\n getTopLevelMediaType(part.mediaType) === 'application'),\n );\n\n const messageContent = content\n .map((part, index) => {\n switch (part.type) {\n case 'text': {\n return {\n type: 'text',\n text: part.text,\n };\n }\n case 'file': {\n if (getTopLevelMediaType(part.mediaType) === 'application') {\n const fullMediaType = resolveApplicationMediaType(part);\n\n if (fullMediaType !== 'application/pdf') {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${fullMediaType}`,\n });\n }\n\n return part.data instanceof URL\n ? {\n type: 'file_url',\n file_url: {\n url: part.data.toString(),\n },\n file_name: part.filename,\n }\n : {\n type: 'file_url',\n file_url: {\n url:\n typeof part.data === 'string'\n ? part.data\n : convertUint8ArrayToBase64(part.data),\n },\n file_name: part.filename || `document-${index}.pdf`,\n };\n } else if (part.mediaType.startsWith('image/')) {\n return part.data instanceof URL\n ? {\n type: 'image_url',\n image_url: {\n url: part.data.toString(),\n },\n }\n : {\n type: 'image_url',\n image_url: {\n url: `data:${part.mediaType ?? 'image/jpeg'};base64,${\n typeof part.data === 'string'\n ? part.data\n : convertUint8ArrayToBase64(part.data)\n }`,\n },\n };\n }\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n })\n .filter(Boolean) as PerplexityMessageContent[];\n messages.push({\n role,\n content: hasMultipartContent\n ? messageContent\n : messageContent\n .filter(part => part.type === 'text')\n .map(part => part.text)\n .join(''),\n });\n break;\n }\n case 'tool': {\n throw new UnsupportedFunctionalityError({\n functionality: 'Tool messages',\n });\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return messages;\n}\n\nfunction getTopLevelMediaType(mediaType: string): string {\n const slashIndex = mediaType.indexOf('/');\n return slashIndex === -1 ? mediaType : mediaType.substring(0, slashIndex);\n}\n\nfunction isFullMediaType(mediaType: string): boolean {\n const slashIndex = mediaType.indexOf('/');\n if (slashIndex === -1) {\n return false;\n }\n const subtype = mediaType.substring(slashIndex + 1);\n return subtype.length > 0 && subtype !== '*';\n}\n\nfunction resolveApplicationMediaType(part: {\n mediaType: string;\n data: Uint8Array | string | URL;\n}): string {\n if (isFullMediaType(part.mediaType)) {\n return part.mediaType;\n }\n\n if (part.data instanceof URL) {\n throw new UnsupportedFunctionalityError({\n functionality: `file of media type \"${part.mediaType}\" must specify subtype since it is not passed as inline bytes`,\n });\n }\n\n if (isPdfData(part.data)) {\n return 'application/pdf';\n }\n\n throw new UnsupportedFunctionalityError({\n functionality: `file of media type \"${part.mediaType}\" must specify subtype since it could not be auto-detected`,\n });\n}\n\nfunction isPdfData(data: Uint8Array | string): boolean {\n const bytes =\n typeof data === 'string'\n ? convertBase64ToUint8Array(data.substring(0, Math.min(data.length, 8)))\n : data;\n\n return (\n bytes.length >= 4 &&\n bytes[0] === 0x25 &&\n bytes[1] === 0x50 &&\n bytes[2] === 0x44 &&\n bytes[3] === 0x46\n );\n}\n","import type { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapPerplexityFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV3FinishReason['unified'] {\n switch (finishReason) {\n case 'stop':\n case 'length':\n return finishReason;\n default:\n return 'other';\n }\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["import_provider","import_provider_utils","import_provider","import_provider_utils","import_v4","import_provider_utils","import_v4","_a"]}
|