MCPcopy
hub / github.com/zgsm-ai/costrict / RequestyHandler

Class RequestyHandler

src/api/providers/requesty.ts:52–221  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

50}
51
52export class RequestyHandler extends BaseProvider implements SingleCompletionHandler {
53 protected options: ApiHandlerOptions
54 protected models: ModelRecord = {}
55 private client: OpenAI
56 private baseURL: string
57 private readonly providerName = "Requesty"
58
59 constructor(options: ApiHandlerOptions) {
60 super()
61
62 this.options = options
63 this.baseURL = toRequestyServiceUrl(options.requestyBaseUrl)
64
65 const apiKey = this.options.requestyApiKey ?? "not-provided"
66
67 this.client = new OpenAI({
68 baseURL: this.baseURL,
69 apiKey: apiKey,
70 defaultHeaders: DEFAULT_HEADERS,
71 })
72 }
73
74 public async fetchModel() {
75 this.models = await getModels({ provider: "requesty", baseUrl: this.baseURL })
76 return this.getModel()
77 }
78
79 override getModel() {
80 const id = this.options.requestyModelId ?? requestyDefaultModelId
81 const cachedInfo = this.models[id] ?? requestyDefaultModelInfo
82 let info: ModelInfo = cachedInfo
83
84 // Apply tool preferences for models accessed through routers (OpenAI, Gemini)
85 info = applyRouterToolPreferences(id, info)
86
87 const params = getModelParams({
88 format: "anthropic",
89 modelId: id,
90 model: info,
91 settings: this.options,
92 defaultTemperature: 0,
93 })
94
95 return { id, info, ...params }
96 }
97
98 protected processUsageMetrics(usage: any, modelInfo?: ModelInfo): ApiStreamUsageChunk {
99 const requestyUsage = usage as RequestyUsage
100 const inputTokens = requestyUsage?.prompt_tokens || 0
101 const outputTokens = requestyUsage?.completion_tokens || 0
102 const cacheWriteTokens = requestyUsage?.prompt_tokens_details?.caching_tokens || 0
103 const cacheReadTokens = requestyUsage?.prompt_tokens_details?.cached_tokens || 0
104 const { totalCost } = modelInfo
105 ? calculateApiCostOpenAI(modelInfo, inputTokens, outputTokens, cacheWriteTokens, cacheReadTokens)
106 : { totalCost: 0 }
107
108 return {
109 type: "usage",

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected