Skip to content

Commit 08f7fec

Browse files
authored
fix (provider/perplexity): increase resilience against null values (#5214)
1 parent e462d10 commit 08f7fec

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

.changeset/curvy-clouds-happen.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@ai-sdk/perplexity': patch
3+
---
4+
5+
fix (provider/perplexity): increase resilience against null values

packages/perplexity/src/perplexity-language-model.ts

+8-8
Original file line numberDiff line numberDiff line change
@@ -176,15 +176,15 @@ export class PerplexityLanguageModel implements LanguageModelV1 {
176176
toolCalls: [],
177177
finishReason: mapPerplexityFinishReason(choice.finish_reason),
178178
usage: {
179-
promptTokens: response.usage.prompt_tokens,
180-
completionTokens: response.usage.completion_tokens,
179+
promptTokens: response.usage?.prompt_tokens ?? Number.NaN,
180+
completionTokens: response.usage?.completion_tokens ?? Number.NaN,
181181
},
182182
rawCall: { rawPrompt, rawSettings },
183183
rawResponse: { headers: responseHeaders, body: rawResponse },
184184
request: { body: JSON.stringify(args) },
185185
response: getResponseMetadata(response),
186186
warnings,
187-
sources: response.citations.map(url => ({
187+
sources: response.citations?.map(url => ({
188188
sourceType: 'url',
189189
id: this.config.generateId(),
190190
url,
@@ -199,8 +199,8 @@ export class PerplexityLanguageModel implements LanguageModelV1 {
199199
width: image.width,
200200
})) ?? null,
201201
usage: {
202-
citationTokens: response.usage.citation_tokens ?? null,
203-
numSearchQueries: response.usage.num_search_queries ?? null,
202+
citationTokens: response.usage?.citation_tokens ?? null,
203+
numSearchQueries: response.usage?.num_search_queries ?? null,
204204
},
205205
},
206206
},
@@ -397,12 +397,12 @@ const perplexityResponseSchema = z.object({
397397
role: z.literal('assistant'),
398398
content: z.string(),
399399
}),
400-
finish_reason: z.string(),
400+
finish_reason: z.string().nullish(),
401401
}),
402402
),
403-
citations: z.array(z.string()),
403+
citations: z.array(z.string()).nullish(),
404404
images: z.array(perplexityImageSchema).nullish(),
405-
usage: perplexityUsageSchema,
405+
usage: perplexityUsageSchema.nullish(),
406406
});
407407

408408
// limited version of the schema, focussed on what is needed for the implementation

0 commit comments

Comments
 (0)