Skip to content

Commit ace85e6

Browse files
Add Perplexity reasoning pro. Add Groq Llama 70b R1 distill
1 parent d6223be commit ace85e6

File tree

3 files changed

+22
-29
lines changed

3 files changed

+22
-29
lines changed

src/functions/web/perplexity.ts

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,13 @@ export class Perplexity {
4141

4242
// Valid model ids are at https://docs.perplexity.ai/guides/model-cards
4343
response = await perplexity.chat.completions.create({
44-
model: 'sonar-pro',
45-
max_tokens: 4096,
44+
model: 'sonar-reasoning-pro',
4645
messages: [{ role: 'user', content: researchQuery }],
4746
stream: false,
4847
});
4948
const content = response.choices[0].message?.content;
5049

51-
if (!content) {
52-
throw new Error('Perplexity API returned empty content');
53-
}
50+
if (!content) throw new Error('Perplexity API returned empty content');
5451

5552
// Cost calculation based on Perplexity API pricing (as of the last update)
5653
// Source: https://docs.perplexity.ai/docs/pricing
@@ -59,9 +56,9 @@ export class Perplexity {
5956
const completionTokens = response.usage.completion_tokens;
6057
const totalTokens = response.usage.total_tokens;
6158

62-
const costPerPromptToken = 0.000001; // $1 per million tokens
63-
const costPerCompletionToken = 0.000001; // $1 per million tokens
64-
const onlineCost = 0.005; // $5 per 1000 requests
59+
const costPerPromptToken = 0.000002; // $1 per million tokens
60+
const costPerCompletionToken = 0.000008; // $1 per million tokens
61+
const onlineCost = 0.015; // $5 per 1000 requests. 3 requests
6562

6663
const cost = Number((promptTokens * costPerPromptToken + completionTokens * costPerCompletionToken + onlineCost).toFixed(6));
6764
addCost(cost);
@@ -72,7 +69,7 @@ export class Perplexity {
7269
if (saveToMemory) {
7370
const summary = await llms().easy.generateText(
7471
`<query>${researchQuery}</query>\nGenerate a summarised version of the research key in one short sentence at most, with only alphanumeric with underscores for spaces. Answer concisely with only the summary.`,
75-
{ id: 'summarisePerplexityQuery' },
72+
{ id: 'Summarise Perplexity search' },
7673
);
7774
const key = `Perplexity-${summary}`;
7875
agentContext().memory[key] = content;

src/llm/services/groq.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export const GROQ_SERVICE = 'groq';
99
export function groqLLMRegistry(): Record<string, () => LLM> {
1010
return {
1111
'groq:llama-3.3-70b-versatile': groqLlama3_3_70B,
12+
'groq:deepseek-r1-distill-llama-70b': groqLlama3_3_70B_R1_Distill,
1213
};
1314
}
1415

@@ -20,6 +21,10 @@ export function groqLlama3_3_70B(): LLM {
2021
return new GroqLLM('Llama3.3 70b (Groq)', 'llama-3.3-70b-versatile', 131_072, perMilTokens(0.59), perMilTokens(0.79));
2122
}
2223

24+
export function groqLlama3_3_70B_R1_Distill(): LLM {
25+
return new GroqLLM('Llama3.3 70b R1 Distill (Groq)', 'deepseek-r1-distill-llama-70b', 1280_000, perMilTokens(0.59), perMilTokens(0.79));
26+
}
27+
2328
/**
2429
* https://wow.groq.com/
2530
*/

src/llm/services/perplexity-llm.ts

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,17 @@ export const PERPLEXITY_SERVICE = 'perplexity';
1515

1616
/*
1717
https://docs.perplexity.ai/guides/pricing
18-
Model Price per 1000 requests Price per 1M tokens
19-
llama-3.1-sonar-large-128k-online $5 $1
20-
llama-3.1-sonar-huge-128k-online $5 $5
18+
Model Input Tokens (Per Million Tokens) Output Tokens (Per Million Tokens) Price per 1000 searches
19+
sonar-reasoning-pro $2 $8 $5
20+
sonar-reasoning $1 $5 $5
21+
sonar-pro $3 $15 $5
22+
sonar $1 $1 $5
2123
*/
2224

2325
export function perplexityLLMRegistry(): Record<string, () => LLM> {
2426
return {
2527
[`${PERPLEXITY_SERVICE}:sonar`]: perplexityLLM,
26-
[`${PERPLEXITY_SERVICE}:sonar-pro`]: perplexityProLLM,
28+
[`${PERPLEXITY_SERVICE}:sonar-reasoning-pro`]: perplexityReasoningProLLM,
2729
};
2830
}
2931

@@ -38,24 +40,13 @@ export function perplexityLLM(): LLM {
3840
);
3941
}
4042

41-
export function perplexityProLLM(): LLM {
43+
export function perplexityReasoningProLLM(): LLM {
4244
return new PerplexityLLM(
43-
'Perplexity Pro',
44-
'sonar-pro',
45-
200_000, // maxTokens
46-
0.000005, // costPerPromptToken ($5 per million tokens)
47-
0.000005, // costPerCompletionToken
48-
0.015, // 3 searches ($5 per 1000 requests)
49-
);
50-
}
51-
52-
export function perplexityReasoningLLM(): LLM {
53-
return new PerplexityLLM(
54-
'Perplexity Reasoning',
55-
'sonar-reasoning',
45+
'Perplexity Reasoning Pro',
46+
'sonar-reasoning-pro',
5647
127_000, // maxTokens
57-
0.000001, // costPerPromptToken ($1 per million tokens)
58-
0.000005, // costPerCompletionToken
48+
0.000002, // costPerPromptToken ($1 per million tokens)
49+
0.000008, // costPerCompletionToken
5950
0.005, // 1 search ($5 per 1000 requests)
6051
);
6152
}

0 commit comments

Comments
 (0)