元渊 API元渊 API
Error Handling Guide

Key Code Snippets

Reusable code blocks for error handling

Check candidatesTokenCount

function checkCandidatesToken(data) {
    if (data.usageMetadata?.candidatesTokenCount === 0) {
        return {
            hasError: true,
            errorType: 'ZERO_CANDIDATES_TOKEN',
            message: 'Content review rejected'
        };
    }
    return { hasError: false };
}

Check finishReason

function checkFinishReason(candidate) {
    if (!candidate.finishReason || candidate.finishReason === 'STOP') {
        return { hasError: false };
    }
    
    return {
        hasError: true,
        errorType: 'FINISH_REASON',
        finishReason: candidate.finishReason
    };
}

Extract Images

function extractImages(parts) {
    return parts
        .filter(p => p.inlineData?.data)
        .map(p => `data:${p.inlineData.mimeType};base64,${p.inlineData.data}`);
}

Detect Rejection Text

function isRejectionText(text) {
    const rejectionPatterns = [
        "i can't generate",
        "i cannot generate",
        "i'm unable to"
    ];
    
    const lowerText = text.toLowerCase();
    return rejectionPatterns.some(p => lowerText.includes(p));
}

Generate User Message

function generateUserMessage(errorType) {
    const messages = {
        'ZERO_CANDIDATES_TOKEN': {
            title: 'Content Review Failed',
            suggestions: [
                'Check prompt for sensitive content',
                'Ensure reference images are appropriate'
            ]
        },
        'FINISH_REASON': {
            title: 'Generation Rejected',
            suggestions: [
                'Use positive descriptions',
                'Avoid sensitive topics'
            ]
        }
    };
    
    return messages[errorType] || { title: 'Error', suggestions: [] };
}

How is this guide?