({
systemPrompt = asSystemPrompt([]),
userPrompt,
outputFormat,
signal,
options,
}: {
systemPrompt: SystemPrompt
userPrompt: string
outputFormat?: BetaJSONOutputFormat
signal: AbortSignal
options: HaikuOptions
})
| 3239 | type HaikuOptions = Omit<Options, 'model' | 'getToolPermissionContext'> |
| 3240 | |
| 3241 | export async function queryHaiku({ |
| 3242 | systemPrompt = asSystemPrompt([]), |
| 3243 | userPrompt, |
| 3244 | outputFormat, |
| 3245 | signal, |
| 3246 | options, |
| 3247 | }: { |
| 3248 | systemPrompt: SystemPrompt |
| 3249 | userPrompt: string |
| 3250 | outputFormat?: BetaJSONOutputFormat |
| 3251 | signal: AbortSignal |
| 3252 | options: HaikuOptions |
| 3253 | }): Promise<AssistantMessage> { |
| 3254 | const result = await withVCR( |
| 3255 | [ |
| 3256 | createUserMessage({ |
| 3257 | content: systemPrompt.map(text => ({ type: 'text', text })), |
| 3258 | }), |
| 3259 | createUserMessage({ |
| 3260 | content: userPrompt, |
| 3261 | }), |
| 3262 | ], |
| 3263 | async () => { |
| 3264 | const messages = [ |
| 3265 | createUserMessage({ |
| 3266 | content: userPrompt, |
| 3267 | }), |
| 3268 | ] |
| 3269 | |
| 3270 | const result = await queryModelWithoutStreaming({ |
| 3271 | messages, |
| 3272 | systemPrompt, |
| 3273 | thinkingConfig: { type: 'disabled' }, |
| 3274 | tools: [], |
| 3275 | signal, |
| 3276 | options: { |
| 3277 | ...options, |
| 3278 | model: getSmallFastModel(), |
| 3279 | enablePromptCaching: options.enablePromptCaching ?? false, |
| 3280 | outputFormat, |
| 3281 | async getToolPermissionContext() { |
| 3282 | return getEmptyToolPermissionContext() |
| 3283 | }, |
| 3284 | }, |
| 3285 | }) |
| 3286 | return [result] |
| 3287 | }, |
| 3288 | ) |
| 3289 | // We don't use streaming for Haiku so this is safe |
| 3290 | return result[0]! as AssistantMessage |
| 3291 | } |
| 3292 | |
| 3293 | type QueryWithModelOptions = Omit<Options, 'getToolPermissionContext'> |
| 3294 |
no test coverage detected