Initial commit
This commit is contained in:
73
templates/chat-completion-nodejs.ts
Normal file
73
templates/chat-completion-nodejs.ts
Normal file
@@ -0,0 +1,73 @@
|
||||
// Complete Chat Completion Example (Node.js SDK)
|
||||
// Shows multi-turn conversation, GPT-5 parameters, and error handling
|
||||
|
||||
import OpenAI from 'openai';
|
||||
|
||||
const openai = new OpenAI({
|
||||
apiKey: process.env.OPENAI_API_KEY,
|
||||
});
|
||||
|
||||
async function chatWithGPT5() {
|
||||
try {
|
||||
// Multi-turn conversation
|
||||
const messages: OpenAI.Chat.ChatCompletionMessageParam[] = [
|
||||
{
|
||||
role: 'system',
|
||||
content: 'You are a helpful assistant that explains complex topics simply.'
|
||||
},
|
||||
{
|
||||
role: 'user',
|
||||
content: 'Explain quantum computing to a 10-year-old'
|
||||
}
|
||||
];
|
||||
|
||||
// First turn with GPT-5 specific parameters
|
||||
const completion1 = await openai.chat.completions.create({
|
||||
model: 'gpt-5',
|
||||
messages: messages,
|
||||
reasoning_effort: 'medium', // GPT-5 parameter
|
||||
verbosity: 'high', // GPT-5 parameter
|
||||
max_tokens: 500,
|
||||
});
|
||||
|
||||
const assistantMessage = completion1.choices[0].message;
|
||||
console.log('Assistant:', assistantMessage.content);
|
||||
|
||||
// Add assistant response to conversation
|
||||
messages.push(assistantMessage);
|
||||
|
||||
// Follow-up question
|
||||
messages.push({
|
||||
role: 'user',
|
||||
content: 'Can you give me an example?'
|
||||
});
|
||||
|
||||
// Second turn
|
||||
const completion2 = await openai.chat.completions.create({
|
||||
model: 'gpt-5',
|
||||
messages: messages,
|
||||
reasoning_effort: 'medium',
|
||||
verbosity: 'medium',
|
||||
max_tokens: 300,
|
||||
});
|
||||
|
||||
console.log('Assistant:', completion2.choices[0].message.content);
|
||||
|
||||
// Token usage
|
||||
console.log('\nToken usage:');
|
||||
console.log('- Prompt tokens:', completion2.usage?.prompt_tokens);
|
||||
console.log('- Completion tokens:', completion2.usage?.completion_tokens);
|
||||
console.log('- Total tokens:', completion2.usage?.total_tokens);
|
||||
|
||||
} catch (error: any) {
|
||||
if (error.status === 401) {
|
||||
console.error('Invalid API key. Check OPENAI_API_KEY environment variable.');
|
||||
} else if (error.status === 429) {
|
||||
console.error('Rate limit exceeded. Please wait and try again.');
|
||||
} else {
|
||||
console.error('Error:', error.message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
chatWithGPT5();
|
||||
Reference in New Issue
Block a user