@@ -6,6 +6,8 @@ import Anthropic from "@anthropic-ai/sdk"
66import { BaseProvider } from "./base-provider"
77import { SingleCompletionHandler } from "../"
88import { OpenRouterHandler } from "./openrouter"
9+ import { GeminiHandler } from "./gemini"
10+ import { OpenAiHandler } from "./openai"
911
1012interface PearAiModelsResponse {
1113 models : {
@@ -18,7 +20,7 @@ interface PearAiModelsResponse {
1820}
1921
2022export class PearAiHandler extends BaseProvider implements SingleCompletionHandler {
21- private handler ! : AnthropicHandler | DeepSeekHandler | OpenRouterHandler
23+ private handler ! : AnthropicHandler | OpenAiHandler
2224
2325 constructor ( options : ApiHandlerOptions ) {
2426 super ( )
@@ -39,11 +41,11 @@ export class PearAiHandler extends BaseProvider implements SingleCompletionHandl
3941 vscode . commands . executeCommand ( "pearai.checkPearAITokens" , undefined )
4042 }
4143
42- this . handler = new OpenRouterHandler ( {
44+ this . handler = new OpenAiHandler ( {
4345 ...options ,
44- openRouterBaseUrl : PEARAI_URL ,
45- openRouterApiKey : options . pearaiApiKey ,
46- openRouterModelId : "deepseek/deepseek-chat-v3-0324 " ,
46+ openAiBaseUrl : PEARAI_URL ,
47+ openAiApiKey : options . pearaiApiKey ,
48+ openAiModelId : "deepseek/deepseek-chat" ,
4749 } )
4850
4951 // Then try to initialize the correct handler asynchronously
@@ -63,21 +65,21 @@ export class PearAiHandler extends BaseProvider implements SingleCompletionHandl
6365 }
6466 const data = ( await response . json ( ) ) as PearAiModelsResponse
6567 const underlyingModel = data . models [ modelId ] ?. underlyingModelUpdated || "claude-3-5-sonnet-20241022"
66- if ( underlyingModel . startsWith ( "deepseek" ) ) {
67- this . handler = new OpenRouterHandler ( {
68- ...options ,
69- openRouterBaseUrl : PEARAI_URL ,
70- openRouterApiKey : options . pearaiApiKey ,
71- openRouterModelId : underlyingModel ,
72- } )
73- } else {
68+ if ( underlyingModel . startsWith ( "claude" ) ) {
7469 // Default to Claude
7570 this . handler = new AnthropicHandler ( {
7671 ...options ,
7772 apiKey : options . pearaiApiKey ,
7873 anthropicBaseUrl : PEARAI_URL ,
7974 apiModelId : underlyingModel ,
8075 } )
76+ } else {
77+ this . handler = new OpenAiHandler ( {
78+ ...options ,
79+ openAiBaseUrl : PEARAI_URL ,
80+ openAiApiKey : options . pearaiApiKey ,
81+ openAiModelId : underlyingModel ,
82+ } )
8183 }
8284 } catch ( error ) {
8385 console . error ( "Error fetching PearAI models:" , error )
@@ -96,11 +98,11 @@ export class PearAiHandler extends BaseProvider implements SingleCompletionHandl
9698 anthropicBaseUrl : PEARAI_URL ,
9799 } )
98100 } else {
99- this . handler = new OpenRouterHandler ( {
101+ this . handler = new OpenAiHandler ( {
100102 ...options ,
101- openRouterBaseUrl : PEARAI_URL ,
102- openRouterApiKey : options . pearaiApiKey ,
103- openRouterModelId : modelId ,
103+ openAiBaseUrl : PEARAI_URL ,
104+ openAiApiKey : options . pearaiApiKey ,
105+ openAiModelId : modelId ,
104106 } )
105107 }
106108 }
@@ -116,11 +118,10 @@ export class PearAiHandler extends BaseProvider implements SingleCompletionHandl
116118 supportsImages : baseModel . info . supportsImages ,
117119 supportsComputerUse : baseModel . info . supportsComputerUse ,
118120 supportsPromptCache : baseModel . info . supportsPromptCache ,
119- // Apply PearAI's price markup
120- inputPrice : ( baseModel . info . inputPrice || 0 ) * 1.03 ,
121- outputPrice : ( baseModel . info . outputPrice || 0 ) * 1.03 ,
122- cacheWritesPrice : baseModel . info . cacheWritesPrice ? baseModel . info . cacheWritesPrice * 1.03 : undefined ,
123- cacheReadsPrice : baseModel . info . cacheReadsPrice ? baseModel . info . cacheReadsPrice * 1.03 : undefined ,
121+ inputPrice : baseModel . info . inputPrice || 0 ,
122+ outputPrice : baseModel . info . outputPrice || 0 ,
123+ cacheWritesPrice : baseModel . info . cacheWritesPrice ? baseModel . info . cacheWritesPrice : undefined ,
124+ cacheReadsPrice : baseModel . info . cacheReadsPrice ? baseModel . info . cacheReadsPrice : undefined ,
124125 } ,
125126 }
126127 }
0 commit comments