@ai-sdk/perplexity 4.0.50 → 4.0.52
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 +15 -0
- package/dist/index.js +38 -49
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @ai-sdk/perplexity
|
|
2
2
|
|
|
3
|
+
## 4.0.52
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [af9597b]
|
|
8
|
+
- Updated dependencies [bc49f78]
|
|
9
|
+
- @ai-sdk/provider-utils@5.0.49
|
|
10
|
+
|
|
11
|
+
## 4.0.51
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- Updated dependencies [be877ff]
|
|
16
|
+
- @ai-sdk/provider-utils@5.0.48
|
|
17
|
+
|
|
3
18
|
## 4.0.50
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
package/dist/index.js
CHANGED
|
@@ -63,13 +63,12 @@ import { z as z3 } from "zod/v4";
|
|
|
63
63
|
// src/convert-perplexity-usage.ts
|
|
64
64
|
import { createNullLanguageModelUsage } from "@ai-sdk/provider-utils";
|
|
65
65
|
function convertPerplexityUsage(usage) {
|
|
66
|
-
var _a, _b, _c;
|
|
67
66
|
if (usage == null) {
|
|
68
67
|
return createNullLanguageModelUsage();
|
|
69
68
|
}
|
|
70
|
-
const promptTokens =
|
|
71
|
-
const completionTokens =
|
|
72
|
-
const reasoningTokens =
|
|
69
|
+
const promptTokens = usage.prompt_tokens ?? 0;
|
|
70
|
+
const completionTokens = usage.completion_tokens ?? 0;
|
|
71
|
+
const reasoningTokens = usage.reasoning_tokens ?? 0;
|
|
73
72
|
return {
|
|
74
73
|
inputTokens: {
|
|
75
74
|
total: promptTokens,
|
|
@@ -354,13 +353,12 @@ var PerplexityLanguageModel = class _PerplexityLanguageModel {
|
|
|
354
353
|
seed,
|
|
355
354
|
providerOptions
|
|
356
355
|
}) {
|
|
357
|
-
var _a;
|
|
358
356
|
const warnings = [];
|
|
359
|
-
const perplexityOptions =
|
|
357
|
+
const perplexityOptions = await parseProviderOptions({
|
|
360
358
|
provider: "perplexity",
|
|
361
359
|
providerOptions,
|
|
362
360
|
schema: perplexityLanguageModelOptions
|
|
363
|
-
})
|
|
361
|
+
}) ?? {};
|
|
364
362
|
if (topK != null) {
|
|
365
363
|
warnings.push({ type: "unsupported", feature: "topK" });
|
|
366
364
|
}
|
|
@@ -389,7 +387,7 @@ var PerplexityLanguageModel = class _PerplexityLanguageModel {
|
|
|
389
387
|
top_k: topK,
|
|
390
388
|
top_p: topP,
|
|
391
389
|
// response format:
|
|
392
|
-
response_format:
|
|
390
|
+
response_format: responseFormat?.type === "json" ? {
|
|
393
391
|
type: "json_schema",
|
|
394
392
|
json_schema: { schema: responseFormat.schema }
|
|
395
393
|
} : void 0,
|
|
@@ -402,7 +400,6 @@ var PerplexityLanguageModel = class _PerplexityLanguageModel {
|
|
|
402
400
|
};
|
|
403
401
|
}
|
|
404
402
|
async doGenerate(options) {
|
|
405
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
|
|
406
403
|
const { args: body, warnings } = await this.getArgs(options);
|
|
407
404
|
const {
|
|
408
405
|
responseHeaders,
|
|
@@ -410,7 +407,7 @@ var PerplexityLanguageModel = class _PerplexityLanguageModel {
|
|
|
410
407
|
rawValue: rawResponse
|
|
411
408
|
} = await postJsonToApi({
|
|
412
409
|
url: `${this.config.baseURL}/chat/completions`,
|
|
413
|
-
headers: combineHeaders(
|
|
410
|
+
headers: combineHeaders(this.config.headers?.(), options.headers),
|
|
414
411
|
body,
|
|
415
412
|
failedResponseHandler: createJsonErrorResponseHandler({
|
|
416
413
|
errorSchema: perplexityErrorSchema,
|
|
@@ -442,7 +439,7 @@ var PerplexityLanguageModel = class _PerplexityLanguageModel {
|
|
|
442
439
|
content,
|
|
443
440
|
finishReason: {
|
|
444
441
|
unified: mapPerplexityFinishReason(choice.finish_reason),
|
|
445
|
-
raw:
|
|
442
|
+
raw: choice.finish_reason ?? void 0
|
|
446
443
|
},
|
|
447
444
|
usage: convertPerplexityUsage(response.usage),
|
|
448
445
|
request: { body },
|
|
@@ -454,33 +451,32 @@ var PerplexityLanguageModel = class _PerplexityLanguageModel {
|
|
|
454
451
|
warnings,
|
|
455
452
|
providerMetadata: {
|
|
456
453
|
perplexity: {
|
|
457
|
-
images:
|
|
454
|
+
images: response.images?.map((image) => ({
|
|
458
455
|
imageUrl: image.image_url,
|
|
459
456
|
originUrl: image.origin_url,
|
|
460
457
|
height: image.height,
|
|
461
458
|
width: image.width
|
|
462
|
-
}))
|
|
459
|
+
})) ?? null,
|
|
463
460
|
usage: {
|
|
464
|
-
citationTokens:
|
|
465
|
-
numSearchQueries:
|
|
461
|
+
citationTokens: response.usage?.citation_tokens ?? null,
|
|
462
|
+
numSearchQueries: response.usage?.num_search_queries ?? null
|
|
466
463
|
},
|
|
467
|
-
cost:
|
|
468
|
-
inputTokensCost:
|
|
469
|
-
outputTokensCost:
|
|
470
|
-
requestCost:
|
|
471
|
-
totalCost:
|
|
464
|
+
cost: response.usage?.cost ? {
|
|
465
|
+
inputTokensCost: response.usage.cost.input_tokens_cost ?? null,
|
|
466
|
+
outputTokensCost: response.usage.cost.output_tokens_cost ?? null,
|
|
467
|
+
requestCost: response.usage.cost.request_cost ?? null,
|
|
468
|
+
totalCost: response.usage.cost.total_cost ?? null
|
|
472
469
|
} : null
|
|
473
470
|
}
|
|
474
471
|
}
|
|
475
472
|
};
|
|
476
473
|
}
|
|
477
474
|
async doStream(options) {
|
|
478
|
-
var _a, _b;
|
|
479
475
|
const { args, warnings } = await this.getArgs(options);
|
|
480
476
|
const body = { ...args, stream: true };
|
|
481
477
|
const { responseHeaders, value: response } = await postJsonToApi({
|
|
482
478
|
url: `${this.config.baseURL}/chat/completions`,
|
|
483
|
-
headers: combineHeaders(
|
|
479
|
+
headers: combineHeaders(this.config.headers?.(), options.headers),
|
|
484
480
|
body,
|
|
485
481
|
failedResponseHandler: createJsonErrorResponseHandler({
|
|
486
482
|
errorSchema: perplexityErrorSchema,
|
|
@@ -517,7 +513,6 @@ var PerplexityLanguageModel = class _PerplexityLanguageModel {
|
|
|
517
513
|
controller.enqueue({ type: "stream-start", warnings });
|
|
518
514
|
},
|
|
519
515
|
transform(chunk, controller) {
|
|
520
|
-
var _a2, _b2, _c, _d, _e, _f, _g;
|
|
521
516
|
if (options.includeRawChunks) {
|
|
522
517
|
controller.enqueue({ type: "raw", rawValue: chunk.rawValue });
|
|
523
518
|
}
|
|
@@ -531,7 +526,7 @@ var PerplexityLanguageModel = class _PerplexityLanguageModel {
|
|
|
531
526
|
type: "response-metadata",
|
|
532
527
|
...getResponseMetadata(value)
|
|
533
528
|
});
|
|
534
|
-
|
|
529
|
+
value.citations?.forEach((url) => {
|
|
535
530
|
controller.enqueue({
|
|
536
531
|
type: "source",
|
|
537
532
|
sourceType: "url",
|
|
@@ -544,14 +539,14 @@ var PerplexityLanguageModel = class _PerplexityLanguageModel {
|
|
|
544
539
|
if (value.usage != null) {
|
|
545
540
|
usage = value.usage;
|
|
546
541
|
providerMetadata.perplexity.usage = {
|
|
547
|
-
citationTokens:
|
|
548
|
-
numSearchQueries:
|
|
542
|
+
citationTokens: value.usage.citation_tokens ?? null,
|
|
543
|
+
numSearchQueries: value.usage.num_search_queries ?? null
|
|
549
544
|
};
|
|
550
545
|
providerMetadata.perplexity.cost = value.usage.cost ? {
|
|
551
|
-
inputTokensCost:
|
|
552
|
-
outputTokensCost:
|
|
553
|
-
requestCost:
|
|
554
|
-
totalCost:
|
|
546
|
+
inputTokensCost: value.usage.cost.input_tokens_cost ?? null,
|
|
547
|
+
outputTokensCost: value.usage.cost.output_tokens_cost ?? null,
|
|
548
|
+
requestCost: value.usage.cost.request_cost ?? null,
|
|
549
|
+
totalCost: value.usage.cost.total_cost ?? null
|
|
555
550
|
} : null;
|
|
556
551
|
}
|
|
557
552
|
if (value.images != null) {
|
|
@@ -563,13 +558,13 @@ var PerplexityLanguageModel = class _PerplexityLanguageModel {
|
|
|
563
558
|
}));
|
|
564
559
|
}
|
|
565
560
|
const choice = value.choices[0];
|
|
566
|
-
if (
|
|
561
|
+
if (choice?.finish_reason != null) {
|
|
567
562
|
finishReason = {
|
|
568
563
|
unified: mapPerplexityFinishReason(choice.finish_reason),
|
|
569
564
|
raw: choice.finish_reason
|
|
570
565
|
};
|
|
571
566
|
}
|
|
572
|
-
if (
|
|
567
|
+
if (choice?.delta == null) {
|
|
573
568
|
return;
|
|
574
569
|
}
|
|
575
570
|
const delta = choice.delta;
|
|
@@ -671,8 +666,7 @@ var perplexityErrorSchema = z3.object({
|
|
|
671
666
|
})
|
|
672
667
|
});
|
|
673
668
|
var errorToMessage = (data) => {
|
|
674
|
-
|
|
675
|
-
return (_b = (_a = data.error.message) != null ? _a : data.error.type) != null ? _b : "unknown error";
|
|
669
|
+
return data.error.message ?? data.error.type ?? "unknown error";
|
|
676
670
|
};
|
|
677
671
|
|
|
678
672
|
// src/perplexity-embedding-model.ts
|
|
@@ -703,7 +697,6 @@ var PerplexityEmbeddingModel = class _PerplexityEmbeddingModel {
|
|
|
703
697
|
headers,
|
|
704
698
|
providerOptions
|
|
705
699
|
}) {
|
|
706
|
-
var _a, _b, _c, _d, _e, _f;
|
|
707
700
|
if (values.length > this.maxEmbeddingsPerCall) {
|
|
708
701
|
throw new TooManyEmbeddingValuesForCallError({
|
|
709
702
|
provider: this.provider,
|
|
@@ -712,12 +705,12 @@ var PerplexityEmbeddingModel = class _PerplexityEmbeddingModel {
|
|
|
712
705
|
values
|
|
713
706
|
});
|
|
714
707
|
}
|
|
715
|
-
const perplexityOptions =
|
|
708
|
+
const perplexityOptions = await parseProviderOptions2({
|
|
716
709
|
provider: "perplexity",
|
|
717
710
|
providerOptions,
|
|
718
711
|
schema: perplexityEmbeddingModelOptions
|
|
719
|
-
})
|
|
720
|
-
const encodingFormat =
|
|
712
|
+
}) ?? {};
|
|
713
|
+
const encodingFormat = perplexityOptions.encodingFormat ?? "base64_int8";
|
|
721
714
|
const {
|
|
722
715
|
responseHeaders,
|
|
723
716
|
value: response,
|
|
@@ -733,10 +726,7 @@ var PerplexityEmbeddingModel = class _PerplexityEmbeddingModel {
|
|
|
733
726
|
},
|
|
734
727
|
failedResponseHandler: createJsonErrorResponseHandler2({
|
|
735
728
|
errorSchema: perplexityErrorSchema,
|
|
736
|
-
errorToMessage: (data) =>
|
|
737
|
-
var _a2;
|
|
738
|
-
return (_a2 = data.error.message) != null ? _a2 : "Unknown error";
|
|
739
|
-
}
|
|
729
|
+
errorToMessage: (data) => data.error.message ?? "Unknown error"
|
|
740
730
|
}),
|
|
741
731
|
successfulResponseHandler: createJsonResponseHandler2(
|
|
742
732
|
perplexityEmbeddingResponseSchema
|
|
@@ -744,7 +734,7 @@ var PerplexityEmbeddingModel = class _PerplexityEmbeddingModel {
|
|
|
744
734
|
abortSignal,
|
|
745
735
|
fetch: this.config.fetch
|
|
746
736
|
});
|
|
747
|
-
const cost =
|
|
737
|
+
const cost = response.usage?.cost;
|
|
748
738
|
return {
|
|
749
739
|
embeddings: response.data.map(
|
|
750
740
|
(item) => decodeEmbedding(item.embedding, encodingFormat)
|
|
@@ -753,9 +743,9 @@ var PerplexityEmbeddingModel = class _PerplexityEmbeddingModel {
|
|
|
753
743
|
providerMetadata: cost ? {
|
|
754
744
|
perplexity: {
|
|
755
745
|
cost: {
|
|
756
|
-
inputCost:
|
|
757
|
-
totalCost:
|
|
758
|
-
currency:
|
|
746
|
+
inputCost: cost.input_cost ?? null,
|
|
747
|
+
totalCost: cost.total_cost ?? null,
|
|
748
|
+
currency: cost.currency ?? null
|
|
759
749
|
}
|
|
760
750
|
}
|
|
761
751
|
} : void 0,
|
|
@@ -789,11 +779,10 @@ var perplexityEmbeddingResponseSchema = z4.object({
|
|
|
789
779
|
});
|
|
790
780
|
|
|
791
781
|
// src/version.ts
|
|
792
|
-
var VERSION = true ? "4.0.
|
|
782
|
+
var VERSION = true ? "4.0.52" : "0.0.0-test";
|
|
793
783
|
|
|
794
784
|
// src/perplexity-provider.ts
|
|
795
785
|
function createPerplexity(options = {}) {
|
|
796
|
-
var _a;
|
|
797
786
|
const getHeaders = () => withUserAgentSuffix(
|
|
798
787
|
{
|
|
799
788
|
Authorization: `Bearer ${loadApiKey({
|
|
@@ -806,7 +795,7 @@ function createPerplexity(options = {}) {
|
|
|
806
795
|
`ai-sdk/perplexity/${VERSION}`
|
|
807
796
|
);
|
|
808
797
|
const baseURL = withoutTrailingSlash(
|
|
809
|
-
|
|
798
|
+
options.baseURL ?? "https://api.perplexity.ai"
|
|
810
799
|
);
|
|
811
800
|
const createLanguageModel = (modelId) => {
|
|
812
801
|
return new PerplexityLanguageModel(modelId, {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../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/perplexity-language-model-options.ts","../src/version.ts"],"sourcesContent":["import {\n NoSuchModelError,\n type LanguageModelV4,\n type EmbeddingModelV4,\n type ProviderV4,\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-options';\nimport { VERSION } from './version';\n\nexport interface PerplexityProvider extends ProviderV4 {\n /**\n * Creates an Perplexity chat model for text generation.\n */\n (modelId: PerplexityLanguageModelId): LanguageModelV4;\n\n /**\n * Creates an Perplexity language model for text generation.\n */\n languageModel(modelId: PerplexityLanguageModelId): LanguageModelV4;\n\n /**\n * Creates a Perplexity model for text embeddings.\n */\n embedding(modelId: PerplexityEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * Creates a Perplexity model for text embeddings.\n */\n embeddingModel(modelId: PerplexityEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: PerplexityEmbeddingModelId): EmbeddingModelV4;\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 = 'v4' 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 EmbeddingModelV4,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_DESERIALIZE,\n WORKFLOW_SERIALIZE,\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 EmbeddingModelV4 {\n readonly specificationVersion = 'v4';\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 static [WORKFLOW_SERIALIZE](model: PerplexityEmbeddingModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: PerplexityEmbeddingModelId;\n config: PerplexityEmbeddingConfig;\n }) {\n return new PerplexityEmbeddingModel(options.modelId, options.config);\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<EmbeddingModelV4['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV4['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 LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4Content,\n LanguageModelV4FinishReason,\n LanguageModelV4GenerateResult,\n LanguageModelV4StreamPart,\n LanguageModelV4StreamResult,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n createLanguageModelResponseMetadata as getResponseMetadata,\n isCustomReasoning,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\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 { perplexityLanguageModelOptions } from './perplexity-language-model-options';\nimport type { PerplexityLanguageModelId } from './perplexity-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 LanguageModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider = 'perplexity';\n\n readonly modelId: PerplexityLanguageModelId;\n\n private readonly config: PerplexityChatConfig;\n\n static [WORKFLOW_SERIALIZE](model: PerplexityLanguageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: PerplexityLanguageModelId;\n config: PerplexityChatConfig;\n }) {\n return new PerplexityLanguageModel(options.modelId, options.config);\n }\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 async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n reasoning,\n responseFormat,\n seed,\n providerOptions,\n }: LanguageModelV4CallOptions) {\n const warnings: SharedV4Warning[] = [];\n\n const perplexityOptions =\n (await parseProviderOptions({\n provider: 'perplexity',\n providerOptions,\n schema: perplexityLanguageModelOptions,\n })) ?? {};\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 if (isCustomReasoning(reasoning)) {\n warnings.push({\n type: 'unsupported',\n feature: 'reasoning',\n details: 'This provider does not support reasoning configuration.',\n });\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 ...perplexityOptions,\n\n // messages:\n messages: convertToPerplexityMessages(prompt),\n },\n warnings,\n };\n }\n\n async doGenerate(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4GenerateResult> {\n const { args: body, warnings } = await 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<LanguageModelV4Content> = [];\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: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4StreamResult> {\n const { args, warnings } = await 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: LanguageModelV4FinishReason = {\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 LanguageModelV4StreamPart\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\nconst perplexityCostSchema = z\n .object({\n input_tokens_cost: z.number().nullish(),\n output_tokens_cost: z.number().nullish(),\n reasoning_tokens_cost: z.number().nullish(),\n request_cost: z.number().nullish(),\n citation_tokens_cost: z.number().nullish(),\n search_queries_cost: z.number().nullish(),\n total_cost: z.number().nullish(),\n })\n .catchall(z.json());\n\nconst perplexityUsageSchema = z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number().nullish(),\n search_context_size: z.enum(['low', 'medium', 'high']).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 .catchall(z.json());\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 { LanguageModelV4Usage } from '@ai-sdk/provider';\nimport { createNullLanguageModelUsage } from '@ai-sdk/provider-utils';\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): LanguageModelV4Usage {\n if (usage == null) {\n return createNullLanguageModelUsage();\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 // Perplexity reports reasoning tokens separately from completion tokens.\n total: completionTokens + reasoningTokens,\n text: completionTokens,\n reasoning: reasoningTokens,\n },\n raw: usage,\n };\n}\n","import {\n UnsupportedFunctionalityError,\n type LanguageModelV4Prompt,\n} from '@ai-sdk/provider';\nimport type {\n PerplexityMessageContent,\n PerplexityPrompt,\n} from './perplexity-language-model-prompt';\nimport {\n convertUint8ArrayToBase64,\n getTopLevelMediaType,\n resolveFullMediaType,\n} from '@ai-sdk/provider-utils';\n\nexport function convertToPerplexityMessages(\n prompt: LanguageModelV4Prompt,\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' &&\n getTopLevelMediaType(part.mediaType) === '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 switch (part.data.type) {\n case 'reference': {\n throw new UnsupportedFunctionalityError({\n functionality: 'file parts with provider references',\n });\n }\n case 'text': {\n throw new UnsupportedFunctionalityError({\n functionality: 'text file parts',\n });\n }\n case 'url':\n case 'data': {\n const topLevelMediaType = getTopLevelMediaType(\n part.mediaType,\n );\n\n if (topLevelMediaType === 'application') {\n const fullMediaType = resolveFullMediaType({ 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.type === 'url'\n ? {\n type: 'file_url',\n file_url: {\n url: part.data.url.toString(),\n },\n file_name: part.filename,\n }\n : {\n type: 'file_url',\n file_url: {\n url:\n typeof part.data.data === 'string'\n ? part.data.data\n : convertUint8ArrayToBase64(part.data.data),\n },\n file_name: part.filename || `document-${index}.pdf`,\n };\n } else if (topLevelMediaType === 'image') {\n return part.data.type === 'url'\n ? {\n type: 'image_url',\n image_url: {\n url: part.data.url.toString(),\n },\n }\n : {\n type: 'image_url',\n image_url: {\n url: `data:${resolveFullMediaType({ part })};base64,${\n typeof part.data.data === 'string'\n ? part.data.data\n : convertUint8ArrayToBase64(part.data.data)\n }`,\n },\n };\n }\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\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","import type { LanguageModelV4FinishReason } from '@ai-sdk/provider';\n\nexport function mapPerplexityFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV4FinishReason['unified'] {\n switch (finishReason) {\n case 'stop':\n case 'length':\n return finishReason;\n default:\n return 'other';\n }\n}\n","import { z } from 'zod/v4';\n\nexport const perplexityLanguageModelOptions = z.looseObject({\n /**\n * Filters search results to those published within the specified time window.\n * Cannot be combined with other date filters.\n */\n search_recency_filter: z\n .enum(['hour', 'day', 'week', 'month', 'year'])\n .optional(),\n\n /**\n * Restrict web search results to specific domains or URLs.\n * Prefix a domain with \"-\" to exclude it.\n */\n search_domain_filter: z.array(z.string()).optional(),\n\n /**\n * Filter search results by language using ISO 639-1 codes.\n */\n search_language_filter: z.array(z.string()).optional(),\n\n /**\n * Return search results published after this date.\n */\n search_after_date_filter: z.string().optional(),\n\n /**\n * Return search results published before this date.\n */\n search_before_date_filter: z.string().optional(),\n\n /**\n * Return search results last updated after this date.\n */\n last_updated_after_filter: z.string().optional(),\n\n /**\n * Return search results last updated before this date.\n */\n last_updated_before_filter: z.string().optional(),\n\n /**\n * Source of search results.\n */\n search_mode: z.enum(['web', 'academic', 'sec']).optional(),\n\n /**\n * If true, the model decides whether web search is needed.\n */\n enable_search_classifier: z.boolean().optional(),\n\n /**\n * If true, disables web search.\n */\n disable_search: z.boolean().optional(),\n\n /**\n * If true, a list of related questions is included in the response.\n */\n return_related_questions: z.boolean().optional(),\n\n /**\n * If true, image search results are included in the response.\n */\n return_images: z.boolean().optional(),\n\n /**\n * Restrict image results to specific domains.\n * Prefix a domain with \"-\" to exclude it.\n */\n image_domain_filter: z.array(z.string()).optional(),\n\n /**\n * Restrict image results to specific file formats.\n */\n image_format_filter: z.array(z.string()).optional(),\n\n /**\n * Additional media response configuration.\n */\n media_response: z\n .looseObject({\n overrides: z\n .looseObject({\n /**\n * If true, video results are included in the response.\n */\n return_videos: z.boolean().optional(),\n })\n .optional(),\n })\n .optional(),\n\n /**\n * Controls the format of streaming events.\n */\n stream_mode: z.enum(['full', 'concise']).optional(),\n\n /**\n * Controls how much effort the model spends on reasoning.\n */\n reasoning_effort: z.enum(['minimal', 'low', 'medium', 'high']).optional(),\n\n /**\n * Preferred response language as an ISO 639-1 language code.\n */\n language_preference: z.string().optional(),\n\n /**\n * Additional web search configuration.\n */\n web_search_options: z\n .looseObject({\n /**\n * Controls the size of search context injected into the model.\n */\n search_context_size: z.enum(['low', 'medium', 'high']).optional(),\n\n /**\n * Controls whether to use fast search, pro search, or automatic routing.\n */\n search_type: z.enum(['fast', 'pro', 'auto']).optional(),\n\n /**\n * User location for search result personalization.\n */\n user_location: z\n .looseObject({\n latitude: z.number().optional(),\n longitude: z.number().optional(),\n country: z.string().optional(),\n city: z.string().optional(),\n region: z.string().optional(),\n })\n .optional(),\n\n /**\n * If true, applies enhanced relevance filtering to image results.\n */\n image_results_enhanced_relevance: z.boolean().optional(),\n })\n .optional(),\n});\n\nexport type PerplexityLanguageModelOptions = z.infer<\n typeof perplexityLanguageModelOptions\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":["combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","parseProviderOptions","postJsonToApi","serializeModelOptions","WORKFLOW_DESERIALIZE","WORKFLOW_SERIALIZE","z","z","z","_a","_b","z","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","postJsonToApi","combineHeaders","createJsonErrorResponseHandler","_a","createJsonResponseHandler","z"]}
|
|
1
|
+
{"version":3,"sources":["../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/perplexity-language-model-options.ts","../src/version.ts"],"sourcesContent":["import {\n NoSuchModelError,\n type LanguageModelV4,\n type EmbeddingModelV4,\n type ProviderV4,\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-options';\nimport { VERSION } from './version';\n\nexport interface PerplexityProvider extends ProviderV4 {\n /**\n * Creates an Perplexity chat model for text generation.\n */\n (modelId: PerplexityLanguageModelId): LanguageModelV4;\n\n /**\n * Creates an Perplexity language model for text generation.\n */\n languageModel(modelId: PerplexityLanguageModelId): LanguageModelV4;\n\n /**\n * Creates a Perplexity model for text embeddings.\n */\n embedding(modelId: PerplexityEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * Creates a Perplexity model for text embeddings.\n */\n embeddingModel(modelId: PerplexityEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: PerplexityEmbeddingModelId): EmbeddingModelV4;\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 = 'v4' 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 EmbeddingModelV4,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_DESERIALIZE,\n WORKFLOW_SERIALIZE,\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 EmbeddingModelV4 {\n readonly specificationVersion = 'v4';\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 static [WORKFLOW_SERIALIZE](model: PerplexityEmbeddingModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: PerplexityEmbeddingModelId;\n config: PerplexityEmbeddingConfig;\n }) {\n return new PerplexityEmbeddingModel(options.modelId, options.config);\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<EmbeddingModelV4['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV4['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 LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4Content,\n LanguageModelV4FinishReason,\n LanguageModelV4GenerateResult,\n LanguageModelV4StreamPart,\n LanguageModelV4StreamResult,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n createLanguageModelResponseMetadata as getResponseMetadata,\n isCustomReasoning,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\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 { perplexityLanguageModelOptions } from './perplexity-language-model-options';\nimport type { PerplexityLanguageModelId } from './perplexity-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 LanguageModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider = 'perplexity';\n\n readonly modelId: PerplexityLanguageModelId;\n\n private readonly config: PerplexityChatConfig;\n\n static [WORKFLOW_SERIALIZE](model: PerplexityLanguageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: PerplexityLanguageModelId;\n config: PerplexityChatConfig;\n }) {\n return new PerplexityLanguageModel(options.modelId, options.config);\n }\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 async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n reasoning,\n responseFormat,\n seed,\n providerOptions,\n }: LanguageModelV4CallOptions) {\n const warnings: SharedV4Warning[] = [];\n\n const perplexityOptions =\n (await parseProviderOptions({\n provider: 'perplexity',\n providerOptions,\n schema: perplexityLanguageModelOptions,\n })) ?? {};\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 if (isCustomReasoning(reasoning)) {\n warnings.push({\n type: 'unsupported',\n feature: 'reasoning',\n details: 'This provider does not support reasoning configuration.',\n });\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 ...perplexityOptions,\n\n // messages:\n messages: convertToPerplexityMessages(prompt),\n },\n warnings,\n };\n }\n\n async doGenerate(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4GenerateResult> {\n const { args: body, warnings } = await 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<LanguageModelV4Content> = [];\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: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4StreamResult> {\n const { args, warnings } = await 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: LanguageModelV4FinishReason = {\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 LanguageModelV4StreamPart\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\nconst perplexityCostSchema = z\n .object({\n input_tokens_cost: z.number().nullish(),\n output_tokens_cost: z.number().nullish(),\n reasoning_tokens_cost: z.number().nullish(),\n request_cost: z.number().nullish(),\n citation_tokens_cost: z.number().nullish(),\n search_queries_cost: z.number().nullish(),\n total_cost: z.number().nullish(),\n })\n .catchall(z.json());\n\nconst perplexityUsageSchema = z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number().nullish(),\n search_context_size: z.enum(['low', 'medium', 'high']).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 .catchall(z.json());\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 { LanguageModelV4Usage } from '@ai-sdk/provider';\nimport { createNullLanguageModelUsage } from '@ai-sdk/provider-utils';\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): LanguageModelV4Usage {\n if (usage == null) {\n return createNullLanguageModelUsage();\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 // Perplexity reports reasoning tokens separately from completion tokens.\n total: completionTokens + reasoningTokens,\n text: completionTokens,\n reasoning: reasoningTokens,\n },\n raw: usage,\n };\n}\n","import {\n UnsupportedFunctionalityError,\n type LanguageModelV4Prompt,\n} from '@ai-sdk/provider';\nimport type {\n PerplexityMessageContent,\n PerplexityPrompt,\n} from './perplexity-language-model-prompt';\nimport {\n convertUint8ArrayToBase64,\n getTopLevelMediaType,\n resolveFullMediaType,\n} from '@ai-sdk/provider-utils';\n\nexport function convertToPerplexityMessages(\n prompt: LanguageModelV4Prompt,\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' &&\n getTopLevelMediaType(part.mediaType) === '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 switch (part.data.type) {\n case 'reference': {\n throw new UnsupportedFunctionalityError({\n functionality: 'file parts with provider references',\n });\n }\n case 'text': {\n throw new UnsupportedFunctionalityError({\n functionality: 'text file parts',\n });\n }\n case 'url':\n case 'data': {\n const topLevelMediaType = getTopLevelMediaType(\n part.mediaType,\n );\n\n if (topLevelMediaType === 'application') {\n const fullMediaType = resolveFullMediaType({ 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.type === 'url'\n ? {\n type: 'file_url',\n file_url: {\n url: part.data.url.toString(),\n },\n file_name: part.filename,\n }\n : {\n type: 'file_url',\n file_url: {\n url:\n typeof part.data.data === 'string'\n ? part.data.data\n : convertUint8ArrayToBase64(part.data.data),\n },\n file_name: part.filename || `document-${index}.pdf`,\n };\n } else if (topLevelMediaType === 'image') {\n return part.data.type === 'url'\n ? {\n type: 'image_url',\n image_url: {\n url: part.data.url.toString(),\n },\n }\n : {\n type: 'image_url',\n image_url: {\n url: `data:${resolveFullMediaType({ part })};base64,${\n typeof part.data.data === 'string'\n ? part.data.data\n : convertUint8ArrayToBase64(part.data.data)\n }`,\n },\n };\n }\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\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","import type { LanguageModelV4FinishReason } from '@ai-sdk/provider';\n\nexport function mapPerplexityFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV4FinishReason['unified'] {\n switch (finishReason) {\n case 'stop':\n case 'length':\n return finishReason;\n default:\n return 'other';\n }\n}\n","import { z } from 'zod/v4';\n\nexport const perplexityLanguageModelOptions = z.looseObject({\n /**\n * Filters search results to those published within the specified time window.\n * Cannot be combined with other date filters.\n */\n search_recency_filter: z\n .enum(['hour', 'day', 'week', 'month', 'year'])\n .optional(),\n\n /**\n * Restrict web search results to specific domains or URLs.\n * Prefix a domain with \"-\" to exclude it.\n */\n search_domain_filter: z.array(z.string()).optional(),\n\n /**\n * Filter search results by language using ISO 639-1 codes.\n */\n search_language_filter: z.array(z.string()).optional(),\n\n /**\n * Return search results published after this date.\n */\n search_after_date_filter: z.string().optional(),\n\n /**\n * Return search results published before this date.\n */\n search_before_date_filter: z.string().optional(),\n\n /**\n * Return search results last updated after this date.\n */\n last_updated_after_filter: z.string().optional(),\n\n /**\n * Return search results last updated before this date.\n */\n last_updated_before_filter: z.string().optional(),\n\n /**\n * Source of search results.\n */\n search_mode: z.enum(['web', 'academic', 'sec']).optional(),\n\n /**\n * If true, the model decides whether web search is needed.\n */\n enable_search_classifier: z.boolean().optional(),\n\n /**\n * If true, disables web search.\n */\n disable_search: z.boolean().optional(),\n\n /**\n * If true, a list of related questions is included in the response.\n */\n return_related_questions: z.boolean().optional(),\n\n /**\n * If true, image search results are included in the response.\n */\n return_images: z.boolean().optional(),\n\n /**\n * Restrict image results to specific domains.\n * Prefix a domain with \"-\" to exclude it.\n */\n image_domain_filter: z.array(z.string()).optional(),\n\n /**\n * Restrict image results to specific file formats.\n */\n image_format_filter: z.array(z.string()).optional(),\n\n /**\n * Additional media response configuration.\n */\n media_response: z\n .looseObject({\n overrides: z\n .looseObject({\n /**\n * If true, video results are included in the response.\n */\n return_videos: z.boolean().optional(),\n })\n .optional(),\n })\n .optional(),\n\n /**\n * Controls the format of streaming events.\n */\n stream_mode: z.enum(['full', 'concise']).optional(),\n\n /**\n * Controls how much effort the model spends on reasoning.\n */\n reasoning_effort: z.enum(['minimal', 'low', 'medium', 'high']).optional(),\n\n /**\n * Preferred response language as an ISO 639-1 language code.\n */\n language_preference: z.string().optional(),\n\n /**\n * Additional web search configuration.\n */\n web_search_options: z\n .looseObject({\n /**\n * Controls the size of search context injected into the model.\n */\n search_context_size: z.enum(['low', 'medium', 'high']).optional(),\n\n /**\n * Controls whether to use fast search, pro search, or automatic routing.\n */\n search_type: z.enum(['fast', 'pro', 'auto']).optional(),\n\n /**\n * User location for search result personalization.\n */\n user_location: z\n .looseObject({\n latitude: z.number().optional(),\n longitude: z.number().optional(),\n country: z.string().optional(),\n city: z.string().optional(),\n region: z.string().optional(),\n })\n .optional(),\n\n /**\n * If true, applies enhanced relevance filtering to image results.\n */\n image_results_enhanced_relevance: z.boolean().optional(),\n })\n .optional(),\n});\n\nexport type PerplexityLanguageModelOptions = z.infer<\n typeof perplexityLanguageModelOptions\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":["combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","parseProviderOptions","postJsonToApi","serializeModelOptions","WORKFLOW_DESERIALIZE","WORKFLOW_SERIALIZE","z","z","z","z","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","postJsonToApi","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","z"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/perplexity",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.52",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -30,10 +30,10 @@
|
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@ai-sdk/provider": "4.0.18",
|
|
33
|
-
"@ai-sdk/provider-utils": "5.0.
|
|
33
|
+
"@ai-sdk/provider-utils": "5.0.49"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@ai-sdk/test-server": "2.0.
|
|
36
|
+
"@ai-sdk/test-server": "2.0.2",
|
|
37
37
|
"@types/node": "22.19.19",
|
|
38
38
|
"@vercel/ai-tsconfig": "0.0.0",
|
|
39
39
|
"tsup": "^8.5.1",
|