UNPKG

svector-sdk

Version:

Official JavaScript and TypeScript SDK for accessing SVECTOR APIs.

255 lines (254 loc) • 9.47 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.batchImageProcessing = batchImageProcessing; exports.confidenceScoring = confidenceScoring; exports.multiModalConversation = multiModalConversation; exports.socialMediaCaptions = socialMediaCaptions; exports.streamingVisionAnalysis = streamingVisionAnalysis; exports.svectorStyleBase64 = svectorStyleBase64; exports.svectorStyleFileID = svectorStyleFileID; exports.svectorStyleURL = svectorStyleURL; exports.technicalAnalysis = technicalAnalysis; const fs_1 = __importDefault(require("fs")); const index_1 = require("../src/index"); const client = new index_1.SVECTOR({ apiKey: process.env.SVECTOR_API_KEY, }); async function svectorStyleURL() { console.log('šŸ”— SVECTOR-style URL analysis...'); try { const response = await client.vision.createResponse({ model: "spec-3-turbo", input: [{ role: "user", content: [ { type: "input_text", text: "what's in this image?" }, { type: "input_image", image_url: "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg", }, ], }], }); console.log('Analysis:', response.output_text); } catch (error) { console.error('Error:', error); } } async function svectorStyleBase64() { console.log('šŸ“ SVECTOR-style base64 analysis...'); try { const imagePath = "./sample-image.jpg"; const base64Image = fs_1.default.readFileSync(imagePath, "base64"); const response = await client.vision.createResponse({ model: "spec-3-turbo", input: [ { role: "user", content: [ { type: "input_text", text: "what's in this image?" }, { type: "input_image", image_url: `data:image/jpeg;base64,${base64Image}`, }, ], }, ], }); console.log('Analysis:', response.output_text); } catch (error) { console.error('Error:', error); } } async function svectorStyleFileID() { console.log('šŸ“¤ SVECTOR-style file ID analysis...'); try { const fileContent = fs_1.default.createReadStream("./sample-image.jpg"); const fileResult = await client.files.create(fileContent, "default"); const fileId = fileResult.file_id; const response = await client.vision.createResponse({ model: "spec-3-turbo", input: [ { role: "user", content: [ { type: "input_text", text: "what's in this image?" }, { type: "input_image", file_id: fileId, }, ], }, ], }); console.log('File ID:', fileId); console.log('Analysis:', response.output_text); } catch (error) { console.error('Error:', error); } } async function batchImageProcessing() { console.log('šŸ“Š Batch image processing...'); try { const images = [ { image_url: 'https://example.com/product1.jpg', prompt: 'Describe this product and its key features' }, { image_url: 'https://example.com/product2.jpg', prompt: 'What is the main selling point of this product?' }, { image_url: 'https://example.com/product3.jpg', prompt: 'Who is the target audience for this product?' } ]; const results = await client.vision.batchAnalyze(images, { model: 'spec-3-turbo', max_tokens: 300, delay: 1500 }); results.forEach((result, index) => { if (result.error) { console.log(`Image ${index + 1}: Error - ${result.error}`); } else { console.log(`Image ${index + 1}: ${result.analysis}`); console.log(`Tokens used: ${result.usage?.total_tokens || 'N/A'}`); } console.log('---'); }); } catch (error) { console.error('Error in batch processing:', error); } } async function confidenceScoring() { console.log('šŸŽÆ Image analysis with confidence scoring...'); try { const result = await client.vision.analyzeWithConfidence({ image_url: 'https://example.com/medical-scan.jpg', prompt: 'Analyze this medical image and identify any abnormalities', model: 'spec-3-turbo' }); console.log('Analysis:', result.analysis); console.log('Confidence:', result.confidence ? `${result.confidence}%` : 'Not provided'); } catch (error) { console.error('Error:', error); } } async function socialMediaCaptions() { console.log('šŸ“± Social media caption generation...'); try { const imageUrl = 'https://example.com/vacation-photo.jpg'; const professional = await client.vision.generateCaption({ image_url: imageUrl }, 'professional'); const casual = await client.vision.generateCaption({ image_url: imageUrl }, 'casual'); const funny = await client.vision.generateCaption({ image_url: imageUrl }, 'funny'); console.log('Professional:', professional.analysis); console.log('Casual:', casual.analysis); console.log('Funny:', funny.analysis); } catch (error) { console.error('Error:', error); } } async function streamingVisionAnalysis() { console.log('🌊 Streaming vision analysis...'); try { const stream = await client.conversations.createStream({ model: 'spec-3-turbo', instructions: 'You are an expert art critic and historian. Provide detailed analysis.', input: 'Analyze this artwork in detail, including style, composition, historical context, and artistic techniques.', stream: true, max_tokens: 1500 }); console.log('Art analysis: '); for await (const chunk of stream) { if (!chunk.done) { process.stdout.write(chunk.content); } } console.log('\nāœ… Analysis complete'); } catch (error) { console.error('Error in streaming analysis:', error); } } async function technicalAnalysis() { console.log('šŸ”¬ Technical image analysis...'); try { const result = await client.vision.analyzeFromUrl('https://example.com/circuit-board.jpg', 'Provide a technical analysis of this electronic circuit board. Identify components, trace paths, and assess the overall design.', { model: 'spec-3-turbo', max_tokens: 1200, temperature: 0.1, detail: 'high' }); console.log('Technical analysis:', result.analysis); console.log('Token usage:', result.usage); } catch (error) { console.error('Error:', error); } } async function multiModalConversation() { console.log('šŸ’¬ Multi-modal conversation...'); try { const initialAnalysis = await client.conversations.create({ model: 'spec-3-turbo', instructions: 'You are a helpful assistant that can analyze images and maintain conversation context.', input: 'What do you see in this image?', }); console.log('Initial analysis:', initialAnalysis.output); const followUp = await client.conversations.create({ model: 'spec-3-turbo', instructions: 'You are a helpful assistant. Remember the previous image analysis.', input: 'Based on what you saw in that image, what time of day do you think it was taken?', context: [ 'What do you see in this image?', initialAnalysis.output ] }); console.log('Follow-up response:', followUp.output); } catch (error) { console.error('Error:', error); } } async function runAllExamples() { console.log('šŸš€ SVECTOR Advanced Vision API Examples'); console.log('========================================\n'); await svectorStyleURL(); console.log('\n---\n'); await svectorStyleBase64(); console.log('\n---\n'); await svectorStyleFileID(); console.log('\n---\n'); await batchImageProcessing(); console.log('\n---\n'); await confidenceScoring(); console.log('\n---\n'); await socialMediaCaptions(); console.log('\n---\n'); await streamingVisionAnalysis(); console.log('\n---\n'); await technicalAnalysis(); console.log('\n---\n'); await multiModalConversation(); } if (require.main === module) { runAllExamples().catch(console.error); }