evwiki/scripts/openai-examples.js
2025-05-20 07:52:46 +02:00

116 lines
3.7 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

require('dotenv').config();
const { OpenAI } = require('openai');
// Initialize the OpenAI client
// In a real application, the API key should be loaded from environment variables
const client = new OpenAI({
apiKey: process.env.OPENAI_API_KEY || 'sk-your-api-key-here',
});
// Function to get a completion
async function exampleCompletion() {
try {
console.log('Running Completion Example...');
const completion = await client.completions.create({
model: 'gpt-3.5-turbo-instruct',
prompt: 'Tell me about electric vehicles in 50 words or less.',
max_tokens: 100,
});
console.log('\nCompletion Response:');
console.log(completion.choices[0].text.trim());
} catch (error) {
console.error('Error in completion example:', error.message);
}
}
// Function to get a chat completion
async function exampleChatCompletion() {
try {
console.log('\nRunning Chat Completion Example...');
const chatCompletion = await client.chat.completions.create({
model: 'gpt-3.5-turbo',
messages: [
{ role: 'system', content: 'You are a helpful assistant that specializes in electric vehicles.' },
{ role: 'user', content: 'Tell me about electric vehicles in 50 words or less.' }
],
max_tokens: 100,
});
console.log('\nChat Completion Response:');
console.log(chatCompletion.choices[0].message.content.trim());
} catch (error) {
console.error('Error in chat completion example:', error.message);
}
}
// Function to demonstrate streaming
async function exampleStreamingCompletion() {
try {
console.log('\nRunning Streaming Completion Example...');
const stream = await client.chat.completions.create({
model: 'gpt-3.5-turbo',
messages: [
{ role: 'system', content: 'You are a helpful assistant that specializes in electric vehicles.' },
{ role: 'user', content: 'List 5 benefits of electric vehicles.' }
],
stream: true,
});
console.log('\nStreaming Response:');
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || '');
}
console.log('\n\n--- Stream complete ---');
} catch (error) {
console.error('Error in streaming example:', error.message);
}
}
// Function to generate embeddings
async function exampleEmbedding() {
try {
console.log('\nRunning Embedding Example...');
const text = 'Electric vehicles are powered by electricity stored in batteries.';
const embedding = await client.embeddings.create({
model: 'text-embedding-ada-002',
input: text,
});
console.log('\nEmbedding Response:');
console.log('First 5 dimensions:', embedding.data[0].embedding.slice(0, 5));
console.log(`Total dimensions: ${embedding.data[0].embedding.length}`);
} catch (error) {
console.error('Error in embedding example:', error.message);
}
}
// Run all examples
async function runExamples() {
console.log('=== OPENAI API EXAMPLES ===\n');
try {
// Check if API key is properly set
if (!process.env.OPENAI_API_KEY || process.env.OPENAI_API_KEY === 'sk-your-api-key-here') {
console.warn('\n⚠ WARNING: No valid OpenAI API key found in environment variables.');
console.warn(' Some examples may fail. Set the OPENAI_API_KEY environment variable to run these examples.');
console.warn(' Example: OPENAI_API_KEY=sk-your-key npm run openai-examples\n');
}
await exampleCompletion();
await exampleChatCompletion();
await exampleStreamingCompletion();
await exampleEmbedding();
console.log('\n=== ALL EXAMPLES COMPLETE ===');
} catch (error) {
console.error('Error running examples:', error);
process.exit(1);
}
}
// Run the examples
runExamples();