MCPcopy Index your code
hub / github.com/CodebuffAI/codebuff / countTokensViaOpenAI

Function countTokensViaOpenAI

web/src/app/api/v1/token-count/_post.ts:128–170  ·  view source on GitHub ↗
(params: {
  messages: TokenCountRequest['messages']
  system: string | undefined
  model: string
  fetch: typeof globalThis.fetch
  logger: Logger
})

Source from the content-addressed store, hash-verified

126const NON_ANTHROPIC_TOKEN_BUFFER = 0.3
127
128export async function countTokensViaOpenAI(params: {
129 messages: TokenCountRequest['messages']
130 system: string | undefined
131 model: string
132 fetch: typeof globalThis.fetch
133 logger: Logger
134}): Promise<number> {
135 const { messages, system, model, fetch, logger } = params
136
137 const openaiModelId = model.startsWith('openai/')
138 ? model.slice('openai/'.length)
139 : model
140
141 const input = convertToResponsesApiInput(messages)
142
143 const response = await fetch(
144 'https://api.openai.com/v1/responses/input_tokens',
145 {
146 method: 'POST',
147 headers: {
148 Authorization: `Bearer ${env.OPENAI_API_KEY}`,
149 'Content-Type': 'application/json',
150 },
151 body: JSON.stringify({
152 model: openaiModelId,
153 input,
154 ...(system && { instructions: system }),
155 }),
156 },
157 )
158
159 if (!response.ok) {
160 const errorText = await response.text()
161 logger.error(
162 { status: response.status, errorText, model },
163 'OpenAI token count API error',
164 )
165 throw new Error(`OpenAI API error: ${response.status} - ${errorText}`)
166 }
167
168 const data = await response.json()
169 return data.input_tokens
170}
171
172export type ResponsesApiContentPart =
173 | { type: 'input_text'; text: string }

Callers 2

postTokenCountFunction · 0.85

Calls 2

fetchFunction · 0.50

Tested by

no test coverage detected