Skip to main content

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} />
  }
}