Hi,
I’m getting a weird bug from chat.completions.create() when called through vercel SDK
Here is my server side code (stream-chat.js)
// Import OpenAI from the 'openai' package as per the documentation
import OpenAI from 'openai';
import { OpenAIStream, StreamingTextResponse } from 'ai';
// Hardcoded OpenAI API client configuration for testing
const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY, // Ensure to replace with your actual API key
});
// IMPORTANT! Set the runtime to edge
export const runtime = 'edge';
// Handler function for the API route
export default async function handler(req, res) {
console.log('Handler invoked with method:', req.method);
if (req.method === 'POST') {
console.log('Handling POST request');
const { messages } = req.body; // Get messages from the request body
console.log('Message received from client:', messages); // Log the message received from client
try {
console.log('Creating chat completion');
const response = await openai.chat.completions.create({
model: 'gpt-3.5-turbo',
stream: true,
messages: messages,
});
console.log('Response from OpenAI:', response); // Log the response from OpenAI
console.log(response.choices[0].message);
for await (const part of stream) {
console.log(part.choices[0].delta);}
console.log('Chat completion created, streaming response');
const stream = OpenAIStream(response);
console.log('Streaming response:', stream); // Log the streaming response
// Send the stream as the response
res.status(200).send(new StreamingTextResponse(stream));
console.log('Response sent');
} catch (error) {
console.error('Error encountered:', error); // Log detailed error
res.status(500).json({ error: error.message });
}
} else {
console.log('Non-POST request received, method:', req.method);
res.setHeader('Allow', ['POST']);
res.status(405).end(`Method ${req.method} Not Allowed`);
}
}
I got 200 OK in vercel but the logs say
Handler invoked with method: POST
Handling POST request
Message received from client: [ { role: ‘user’, content: ‘Is AI good or bad to Humanity?’ } ]
Creating chat completion
Response from OpenAI: Stream {
iterator: [AsyncGeneratorFunction: iterator],
controller: AbortController { signal: AbortSignal { aborted: false } }
}
Chat completion created, streaming response
Streaming response: ReadableStream { locked: false, state: ‘readable’, supportsBYOB: false }
Response sent
I intentionally gave a wrong API key to check if the issue is pre-authentication or post-authentication. It gave same error even with the wrong API key, so it looks like the issue is pre-authentication.
Does anyone know what this error is and how to fix it?
Thanks a ton!