Skip to content

Commit 289796e

Browse files
committed
Requesty: Use correct default model info
1 parent 0b5e178 commit 289796e

File tree

3 files changed

+53
-26
lines changed

3 files changed

+53
-26
lines changed

src/api/providers/__tests__/requesty.test.ts

Lines changed: 50 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Anthropic } from "@anthropic-ai/sdk"
22
import OpenAI from "openai"
3-
import { ApiHandlerOptions, ModelInfo, requestyModelInfoSaneDefaults } from "../../../shared/api"
3+
import { ApiHandlerOptions, ModelInfo, requestyDefaultModelInfo } from "../../../shared/api"
44
import { RequestyHandler } from "../requesty"
55
import { convertToOpenAiMessages } from "../../transform/openai-format"
66
import { convertToR1Format } from "../../transform/r1-format"
@@ -18,14 +18,17 @@ describe("RequestyHandler", () => {
1818
requestyApiKey: "test-key",
1919
requestyModelId: "test-model",
2020
requestyModelInfo: {
21-
maxTokens: 1000,
22-
contextWindow: 4000,
23-
supportsPromptCache: false,
21+
maxTokens: 8192,
22+
contextWindow: 200_000,
2423
supportsImages: true,
25-
inputPrice: 1,
26-
outputPrice: 10,
27-
cacheReadsPrice: 0.1,
28-
cacheWritesPrice: 1.5,
24+
supportsComputerUse: true,
25+
supportsPromptCache: true,
26+
inputPrice: 3.0,
27+
outputPrice: 15.0,
28+
cacheWritesPrice: 3.75,
29+
cacheReadsPrice: 0.3,
30+
description:
31+
"Claude 3.7 Sonnet is an advanced large language model with improved reasoning, coding, and problem-solving capabilities. It introduces a hybrid reasoning approach, allowing users to choose between rapid responses and extended, step-by-step processing for complex tasks. The model demonstrates notable improvements in coding, particularly in front-end development and full-stack updates, and excels in agentic workflows, where it can autonomously navigate multi-step processes. Claude 3.7 Sonnet maintains performance parity with its predecessor in standard mode while offering an extended reasoning mode for enhanced accuracy in math, coding, and instruction-following tasks. Read more at the [blog post here](https://www.anthropic.com/news/claude-3-7-sonnet)",
2932
},
3033
openAiStreamingEnabled: true,
3134
includeMaxTokens: true, // Add this to match the implementation
@@ -115,16 +118,38 @@ describe("RequestyHandler", () => {
115118
outputTokens: 10,
116119
cacheWriteTokens: 5,
117120
cacheReadTokens: 15,
118-
totalCost: 0.000119, // (10 * 1 / 1,000,000) + (5 * 1.5 / 1,000,000) + (15 * 0.1 / 1,000,000) + (10 * 10 / 1,000,000)
121+
totalCost: 0.00020325000000000003, // (10 * 3 / 1,000,000) + (5 * 3.75 / 1,000,000) + (15 * 0.3 / 1,000,000) + (10 * 15 / 1,000,000) (the ...0 is a fp skew)
119122
},
120123
])
121124

122125
expect(mockCreate).toHaveBeenCalledWith({
123126
model: defaultOptions.requestyModelId,
124127
temperature: 0,
125128
messages: [
126-
{ role: "system", content: systemPrompt },
127-
{ role: "user", content: "Hello" },
129+
{
130+
role: "system",
131+
content: [
132+
{
133+
cache_control: {
134+
type: "ephemeral",
135+
},
136+
text: systemPrompt,
137+
type: "text",
138+
},
139+
],
140+
},
141+
{
142+
role: "user",
143+
content: [
144+
{
145+
cache_control: {
146+
type: "ephemeral",
147+
},
148+
text: "Hello",
149+
type: "text",
150+
},
151+
],
152+
},
128153
],
129154
stream: true,
130155
stream_options: { include_usage: true },
@@ -191,15 +216,26 @@ describe("RequestyHandler", () => {
191216
outputTokens: 5,
192217
cacheWriteTokens: 0,
193218
cacheReadTokens: 0,
194-
totalCost: 0.00006, // (10 * 1 / 1,000,000) + (5 * 10 / 1,000,000)
219+
totalCost: 0.000105, // (10 * 3 / 1,000,000) + (5 * 15 / 1,000,000)
195220
},
196221
])
197222

198223
expect(mockCreate).toHaveBeenCalledWith({
199224
model: defaultOptions.requestyModelId,
200225
messages: [
201226
{ role: "user", content: systemPrompt },
202-
{ role: "user", content: "Hello" },
227+
{
228+
role: "user",
229+
content: [
230+
{
231+
cache_control: {
232+
type: "ephemeral",
233+
},
234+
text: "Hello",
235+
type: "text",
236+
},
237+
],
238+
},
203239
],
204240
})
205241
})
@@ -224,7 +260,7 @@ describe("RequestyHandler", () => {
224260
const result = handler.getModel()
225261
expect(result).toEqual({
226262
id: defaultOptions.requestyModelId,
227-
info: requestyModelInfoSaneDefaults,
263+
info: defaultOptions.requestyModelInfo,
228264
})
229265
})
230266
})

src/api/providers/requesty.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import axios from "axios"
22

3-
import { ModelInfo, requestyModelInfoSaneDefaults, requestyDefaultModelId } from "../../shared/api"
3+
import { ModelInfo, requestyDefaultModelInfo, requestyDefaultModelId } from "../../shared/api"
44
import { calculateApiCostOpenAI, parseApiPrice } from "../../utils/cost"
55
import { ApiStreamUsageChunk } from "../transform/stream"
66
import { OpenAiHandler, OpenAiHandlerOptions } from "./openai"
@@ -26,15 +26,15 @@ export class RequestyHandler extends OpenAiHandler {
2626
openAiApiKey: options.requestyApiKey,
2727
openAiModelId: options.requestyModelId ?? requestyDefaultModelId,
2828
openAiBaseUrl: "https://router.requesty.ai/v1",
29-
openAiCustomModelInfo: options.requestyModelInfo ?? requestyModelInfoSaneDefaults,
29+
openAiCustomModelInfo: options.requestyModelInfo ?? requestyDefaultModelInfo,
3030
})
3131
}
3232

3333
override getModel(): { id: string; info: ModelInfo } {
3434
const modelId = this.options.requestyModelId ?? requestyDefaultModelId
3535
return {
3636
id: modelId,
37-
info: this.options.requestyModelInfo ?? requestyModelInfoSaneDefaults,
37+
info: this.options.requestyModelInfo ?? requestyDefaultModelInfo,
3838
}
3939
}
4040

src/shared/api.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -740,15 +740,6 @@ export const openAiModelInfoSaneDefaults: ModelInfo = {
740740
outputPrice: 0,
741741
}
742742

743-
export const requestyModelInfoSaneDefaults: ModelInfo = {
744-
maxTokens: -1,
745-
contextWindow: 128_000,
746-
supportsImages: true,
747-
supportsPromptCache: false,
748-
inputPrice: 0,
749-
outputPrice: 0,
750-
}
751-
752743
// Gemini
753744
// https://ai.google.dev/gemini-api/docs/models/gemini
754745
export type GeminiModelId = keyof typeof geminiModels

0 commit comments

Comments
 (0)