svector-sdk
Version:
Official JavaScript and TypeScript SDK for accessing SVECTOR APIs.
255 lines (254 loc) ⢠9.47 kB
JavaScript
"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);
}