Signature
dloopiq.getNextTask(options?: GetNextTaskOptions): Promise<Task | null>
Retourne null si aucune tâche n’est disponible.
Options
interface GetNextTaskOptions {
/** Filtrer par types de tâches */
types?: TaskType[]
/** Langue préférée de l'utilisateur */
locale?: 'fr' | 'en' | 'de' | 'zh' | 'es' | 'ar'
/** Identifiant opaque de l'utilisateur dans votre app */
userId?: string
}
Exemple
const task = await dloopiq.getNextTask({
types: ['SENTIMENT_ANALYSIS', 'BINARY_CHOICE'],
locale: 'fr',
userId: 'user_abc123'
})
if (!task) {
console.log('Pas de tâche disponible')
return
}
console.log(task.taskId) // "cmpkb4ghw00016qduu44p7n2q"
console.log(task.type) // "SENTIMENT_ANALYSIS"
console.log(task.content) // "Ce produit est fantastique !"
console.log(task.options) // ["Positif", "Négatif", "Neutre"]
console.log(task.locale) // "fr"
Type Task
interface Task {
taskId: string
type: TaskType
content: string
options: string[]
locale: string
}
Types de tâches disponibles
type TaskType =
| 'IMAGE_CLASSIFICATION'
| 'SENTIMENT_ANALYSIS'
| 'AI_RESPONSE_RATING'
| 'AUDIO_TRANSCRIPTION'
| 'CONTENT_MODERATION'
| 'BINARY_CHOICE'
| 'CATEGORY_SELECTION'
| 'RELEVANCE_RATING'
| 'OBJECT_DETECTION'
| 'TRANSLATION_REVIEW'
| 'TEXT_COMPARISON'
| 'COMPLEX_ANNOTATION'
Golden Tasks
5 % des tâches retournées sont des golden tasks — des tâches dont la réponse correcte est connue, utilisées pour mesurer la qualité des annotateurs.
L’utilisateur ne peut pas distinguer une golden task d’une tâche normale. La réponse correcte n’est jamais exposée dans l’objet Task.
Les golden tasks servent à maintenir la qualité. Elles ne génèrent aucun revenu pour le développeur (earnedCents: 0), mais influencent le score de réputation de l’utilisateur.
Comportement sans tâche disponible
const task = await dloopiq.getNextTask({ types: ['AUDIO_TRANSCRIPTION'] })
// → null si aucune tâche de type AUDIO_TRANSCRIPTION n'est disponible
const task2 = await dloopiq.getNextTask()
// → null si aucune tâche disponible tous types confondus
Gestion d’erreurs
try {
const task = await dloopiq.getNextTask({ locale: 'fr' })
} catch (err) {
// Authentification invalide → 401 INVALID_API_KEY
// Trop de requêtes → 429 RATE_LIMITED
console.error(err.message)
}
Exemple d’affichage par type
function renderTask(task: Task) {
switch (task.type) {
case 'SENTIMENT_ANALYSIS':
return <SentimentScreen text={task.content} options={task.options} />
case 'BINARY_CHOICE':
return <YesNoScreen question={task.content} />
case 'IMAGE_CLASSIFICATION':
return <ImageScreen imageUrl={task.content} labels={task.options} />
default:
return <GenericScreen task={task} />
}
}