Claude: console.log system before messages
| @@ -107,6 +107,7 @@ async function sendClaudeRequest(request, response) { | |||
| 107 | } | 107 | } |
| 108 | 108 | ||
| 109 | const requestBody = { | 109 | const requestBody = { |
| 110 | /** @type {any} */ system: '', | ||
| 110 | messages: convertedPrompt.messages, | 111 | messages: convertedPrompt.messages, |
| 111 | model: request.body.model, | 112 | model: request.body.model, |
| 112 | max_tokens: request.body.max_tokens, | 113 | max_tokens: request.body.max_tokens, |
| @@ -120,6 +121,8 @@ async function sendClaudeRequest(request, response) { | |||
| 120 | requestBody.system = enableSystemPromptCache | 121 | requestBody.system = enableSystemPromptCache |
| 121 | ? [{ type: 'text', text: convertedPrompt.systemPrompt, cache_control: { type: 'ephemeral' } }] | 122 | ? [{ type: 'text', text: convertedPrompt.systemPrompt, cache_control: { type: 'ephemeral' } }] |
| 122 | : convertedPrompt.systemPrompt; | 123 | : convertedPrompt.systemPrompt; |
| 124 | } else { | ||
| 125 | delete requestBody.system; | ||
| 123 | } | 126 | } |
| 124 | if (Array.isArray(request.body.tools) && request.body.tools.length > 0) { | 127 | if (Array.isArray(request.body.tools) && request.body.tools.length > 0) { |
| 125 | // Claude doesn't do prefills on function calls, and doesn't allow empty messages | 128 | // Claude doesn't do prefills on function calls, and doesn't allow empty messages |
| @@ -156,12 +159,13 @@ async function sendClaudeRequest(request, response) { | |||
| 156 | forwardFetchResponse(generateResponse, response); | 159 | forwardFetchResponse(generateResponse, response); |
| 157 | } else { | 160 | } else { |
| 158 | if (!generateResponse.ok) { | 161 | if (!generateResponse.ok) { |
| 159 | console.log(color.red(`Claude API returned error: ${generateResponse.status} ${generateResponse.statusText}\n${await generateResponse.text()}\n${divider}`)); | 162 | const generateResponseText = await generateResponse.text(); |
| 163 | console.log(color.red(`Claude API returned error: ${generateResponse.status} ${generateResponse.statusText}\n${generateResponseText}\n${divider}`)); | ||
| 160 | return response.status(generateResponse.status).send({ error: true }); | 164 | return response.status(generateResponse.status).send({ error: true }); |
| 161 | } | 165 | } |
| 162 | 166 | ||
| 163 | const generateResponseJson = await generateResponse.json(); | 167 | const generateResponseJson = await generateResponse.json(); |
| 164 | const responseText = generateResponseJson.content[0].text; | 168 | const responseText = generateResponseJson?.content?.[0]?.text || ''; |
| 165 | console.log('Claude response:', generateResponseJson); | 169 | console.log('Claude response:', generateResponseJson); |
| 166 | 170 | ||
| 167 | // Wrap it back to OAI format + save the original content | 171 | // Wrap it back to OAI format + save the original content |