@ai-sdk/perplexity 4.0.38 → 4.0.39
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 +6 -0
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/perplexity-language-model.ts +24 -16
package/CHANGELOG.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -607,18 +607,22 @@ var PerplexityLanguageModel = class _PerplexityLanguageModel {
|
|
|
607
607
|
var perplexityCostSchema = z3.object({
|
|
608
608
|
input_tokens_cost: z3.number().nullish(),
|
|
609
609
|
output_tokens_cost: z3.number().nullish(),
|
|
610
|
+
reasoning_tokens_cost: z3.number().nullish(),
|
|
610
611
|
request_cost: z3.number().nullish(),
|
|
612
|
+
citation_tokens_cost: z3.number().nullish(),
|
|
613
|
+
search_queries_cost: z3.number().nullish(),
|
|
611
614
|
total_cost: z3.number().nullish()
|
|
612
|
-
});
|
|
615
|
+
}).catchall(z3.json());
|
|
613
616
|
var perplexityUsageSchema = z3.object({
|
|
614
617
|
prompt_tokens: z3.number(),
|
|
615
618
|
completion_tokens: z3.number(),
|
|
616
619
|
total_tokens: z3.number().nullish(),
|
|
620
|
+
search_context_size: z3.enum(["low", "medium", "high"]).nullish(),
|
|
617
621
|
citation_tokens: z3.number().nullish(),
|
|
618
622
|
num_search_queries: z3.number().nullish(),
|
|
619
623
|
reasoning_tokens: z3.number().nullish(),
|
|
620
624
|
cost: perplexityCostSchema.nullish()
|
|
621
|
-
});
|
|
625
|
+
}).catchall(z3.json());
|
|
622
626
|
var perplexityImageSchema = z3.object({
|
|
623
627
|
image_url: z3.string(),
|
|
624
628
|
origin_url: z3.string(),
|
|
@@ -785,7 +789,7 @@ var perplexityEmbeddingResponseSchema = z4.object({
|
|
|
785
789
|
});
|
|
786
790
|
|
|
787
791
|
// src/version.ts
|
|
788
|
-
var VERSION = true ? "4.0.
|
|
792
|
+
var VERSION = true ? "4.0.39" : "0.0.0-test";
|
|
789
793
|
|
|
790
794
|
// src/perplexity-provider.ts
|
|
791
795
|
function createPerplexity(options = {}) {
|
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.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 { 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","_a","_b","z","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","postJsonToApi","combineHeaders","createJsonErrorResponseHandler","_a","createJsonResponseHandler","z"]}
|
package/package.json
CHANGED
|
@@ -418,22 +418,30 @@ export class PerplexityLanguageModel implements LanguageModelV4 {
|
|
|
418
418
|
}
|
|
419
419
|
}
|
|
420
420
|
|
|
421
|
-
const perplexityCostSchema = z
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
421
|
+
const perplexityCostSchema = z
|
|
422
|
+
.object({
|
|
423
|
+
input_tokens_cost: z.number().nullish(),
|
|
424
|
+
output_tokens_cost: z.number().nullish(),
|
|
425
|
+
reasoning_tokens_cost: z.number().nullish(),
|
|
426
|
+
request_cost: z.number().nullish(),
|
|
427
|
+
citation_tokens_cost: z.number().nullish(),
|
|
428
|
+
search_queries_cost: z.number().nullish(),
|
|
429
|
+
total_cost: z.number().nullish(),
|
|
430
|
+
})
|
|
431
|
+
.catchall(z.json());
|
|
432
|
+
|
|
433
|
+
const perplexityUsageSchema = z
|
|
434
|
+
.object({
|
|
435
|
+
prompt_tokens: z.number(),
|
|
436
|
+
completion_tokens: z.number(),
|
|
437
|
+
total_tokens: z.number().nullish(),
|
|
438
|
+
search_context_size: z.enum(['low', 'medium', 'high']).nullish(),
|
|
439
|
+
citation_tokens: z.number().nullish(),
|
|
440
|
+
num_search_queries: z.number().nullish(),
|
|
441
|
+
reasoning_tokens: z.number().nullish(),
|
|
442
|
+
cost: perplexityCostSchema.nullish(),
|
|
443
|
+
})
|
|
444
|
+
.catchall(z.json());
|
|
437
445
|
|
|
438
446
|
export const perplexityImageSchema = z.object({
|
|
439
447
|
image_url: z.string(),
|