| | |
| | |
| | |
| | |
| | |
| |
|
| | export function convertResponseToChatCompletion(resp) {
|
| | if (!resp || typeof resp !== 'object') {
|
| | throw new Error('Invalid response object')
|
| | }
|
| |
|
| | const outputMsg = (resp.output || []).find(o => o.type === 'message')
|
| | const textBlocks = outputMsg?.content?.filter(c => c.type === 'output_text') || []
|
| | const content = textBlocks.map(c => c.text).join('')
|
| |
|
| | const chatCompletion = {
|
| | id: resp.id ? resp.id.replace(/^resp_/, 'chatcmpl-') : `chatcmpl-${Date.now()}`,
|
| | object: 'chat.completion',
|
| | created: resp.created_at || Math.floor(Date.now() / 1000),
|
| | model: resp.model || 'unknown-model',
|
| | choices: [
|
| | {
|
| | index: 0,
|
| | message: {
|
| | role: outputMsg?.role || 'assistant',
|
| | content: content || ''
|
| | },
|
| | finish_reason: resp.status === 'completed' ? 'stop' : 'unknown'
|
| | }
|
| | ],
|
| | usage: {
|
| | prompt_tokens: resp.usage?.input_tokens ?? 0,
|
| | completion_tokens: resp.usage?.output_tokens ?? 0,
|
| | total_tokens: resp.usage?.total_tokens ?? 0
|
| | }
|
| | }
|
| |
|
| | return chatCompletion
|
| | }
|
| |
|
| |
|