# Argilla

Argilla es una herramienta de colaboración para ingenieros de IA y expertos en el dominio que necesitan crear conjuntos de datos de alta calidad para sus proyectos.

![image](https://github.com/user-attachments/assets/0e6ce1d8-65ca-4211-b4ba-5182f88168a0)

Argilla se puede utilizar para recopilar retroalimentación humana para una amplia variedad de proyectos de IA, como NLP tradicional (clasificación de texto, NER, etc.), LLMs (RAG, ajuste de preferencias, etc.) o modelos multimodales (texto a imagen, etc.). El enfoque programático de Argilla te permite crear flujos de trabajo para la evaluación continua y la mejora de modelos. El objetivo de Argilla es garantizar que tu trabajo con datos dé resultados, iterando rápidamente sobre los datos y modelos adecuados.

## ¿Qué construyen las personas con Argilla?

La comunidad utiliza Argilla para crear increíbles [conjuntos de datos](https://huggingface.co/datasets?library=library:argilla&sort=trending) y [modelos](https://huggingface.co/models?other=distilabel) de código abierto.

### Conjuntos de datos y modelos de código abierto

Argilla también contribuyó con algunos modelos y conjuntos de datos al código abierto.

- [Conjunto de datos UltraFeedback limpio](https://huggingface.co/datasets/argilla/ultrafeedback-binarized-preferences-cleaned) utilizado para el ajuste fino de los modelos [Notus](https://huggingface.co/argilla/notus-7b-v1) y [Notux](https://huggingface.co/argilla/notux-8x7b-v1). El conjunto de datos UltraFeedback original se curó utilizando los filtros de la interfaz de Argilla para encontrar e informar sobre un error en el código de generación de datos original. Basándose en este proceso de curación de datos, Argilla creó esta nueva versión del conjunto de datos UltraFeedback y ajustó Notus, superando a Zephyr en varios benchmarks.
- El [conjunto de datos Intel Orca DPO de distilabel](https://huggingface.co/datasets/argilla/distilabel-intel-orca-dpo-pairs) utilizado para ajustar el [modelo OpenHermes mejorado](https://huggingface.co/argilla/distilabeled-OpenHermes-2.5-Mistral-7B). Este conjunto de datos se creó combinando la curaduría humana en Argilla con la retroalimentación de la IA de distilabel, lo que dio lugar a una versión mejorada del conjunto de datos Intel Orca y superó a los modelos ajustados con el conjunto de datos original.

### Ejemplos Casos de uso

Los equipos de IA de empresas como [la Cruz Roja](https://510.global/), [Loris.ai](https://loris.ai/) y [Prolific](https://www.prolific.com/) utilizan Argilla para mejorar la calidad y la eficiencia de los proyectos de IA. Compartieron sus experiencias en nuestro [encuentro de la comunidad de IA](https://lu.ma/embed-checkout/evt-IQtRiSuXZCIW6FB).

- La IA para el bien común: [la presentación de la Cruz Roja](https://youtu.be/ZsCqrAhzkFU?feature=shared) muestra cómo los expertos del dominio de la Cruz Roja y el equipo de IA colaboraron clasificando y redirigiendo las solicitudes de los refugiados de la crisis ucraniana para agilizar los procesos de apoyo de la Cruz Roja.
- Soporte al cliente: durante [el encuentro de Loris](https://youtu.be/jWrtgf2w4VU?feature=shared) mostraron cómo su equipo de IA utiliza el aprendizaje contrastivo no supervisado y few-shot para ayudarles a validar rápidamente y obtener muestras etiquetadas para una gran cantidad de clasificadores multietiqueta.
- Estudios de investigación: [la presentación de Prolific](https://youtu.be/ePDlhIxnuAs?feature=shared) anunció su integración con nuestra plataforma. La utilizan para distribuir activamente proyectos de recopilación de datos entre su personal de anotación. Esto permite a Prolific recopilar rápidamente y de manera eficiente datos de alta calidad para estudios de investigación.

## Prerrequisitos

Primero [inicia sesión con tu cuenta de Hugging Face](/docs/huggingface_hub/quick-start#login):

```bash
hf auth login
```

Asegúrate de tener instalado `argilla>=2.0.0`:

```bash
pip install -U argilla
```

Por último, deberá desplegar el servidor y la interfaz de Argilla, lo cual puede hacerse [fácilmente en Hugging Face Hub](https://argilla-io.github.io/argilla/latest/getting_started/quickstart/#run-the-argilla-server).

## Importar y exportar conjuntos de datos y registros

Esta guía muestra cómo importar y exportar tu conjunto de datos al Hugging Face Hub.

En Argilla, puedes importar/exportar dos componentes principales de un conjunto de datos:
- La configuración completa del conjunto de datos definida en `rg.Settings`. Esto es útil si deseas compartir tu tarea de retroalimentación o restaurarla más adelante en Argilla.
- Los registros almacenados en el conjunto de datos, incluidos `Metadata`, `Vectors`, `Suggestions` y `Responses`. Esto es útil si deseas utilizar los registros de tu conjunto de datos fuera de Argilla.

### Subir un conjunto de datos de Argilla al Hugging Face Hub

Puedes subir un dataset de Argilla al Hugging Face Hub. Esto es útil si deseas compartir tu dataset con la comunidad o controlarlo por versiones. Puedes subir el dataset al Hugging Face Hub usando el método `rg.Dataset.to_hub`.

```python
import argilla as rg

client = rg.Argilla(api_url="<api_url>", api_key="<api_key>")
dataset = client.datasets(name="my_dataset")
dataset.to_hub(repo_id="<repo_id>")
```

#### Con o sin registros
    
El ejemplo anterior enviará los `Settings` y los registros del conjunto de datos al hub. Si solo deseas enviar la configuración del conjunto de datos, puedes establecer el parámetro `with_records` en `False`. Esto es útil si solo te interesa una plantilla específica de conjunto de datos o si quieres realizar cambios en la configuración y/o en los registros del conjunto de datos.

```python
dataset.to_hub(repo_id="<repo_id>", with_records=False)
```

### Obtener un conjunto de datos de Argilla desde Hugging Face Hub

Puedes obtener un conjunto de datos desde Hugging Face Hub hacia Argilla. Esto es útil si deseas restaurar un conjunto de datos y su configuración. Puedes obtener el conjunto de datos desde Hugging Face Hub usando el método `rg.Dataset.from_hub`.

```python

import argilla as rg

client = rg.Argilla(api_url="<api_url>", api_key="<api_key>")
dataset = rg.Dataset.from_hub(repo_id="<repo_id>")
```

El método `rg.Dataset.from_hub` carga la configuración y los registros del repositorio del dataset. Si solo quieres cargar registros, puedes pasar un objeto `datasets.Dataset` al método `rg.Dataset.log`. Esto te permite configurar tu propio dataset y reutilizar datasets existentes de Hub.

#### Con o sin registros

El ejemplo anterior obtiene los `Settings` y los registros del conjunto de datos desde el hub. Si solo deseas obtener la configuración del conjunto de datos, puedes establecer el parámetro `with_records` en `False`. Esto es útil si solo te interesa una plantilla específica del conjunto de datos o si quieres realizar cambios en la configuración y/o en los registros del conjunto de datos.

```python
dataset = rg.Dataset.from_hub(repo_id="<repo_id>", with_records=False)
```

Con la configuración del conjunto de datos, luego podrías realizar cambios en él. Por ejemplo, podrías adaptar la configuración del conjunto de datos para una tarea diferente:

```python
dataset.settings.questions = [rg.TextQuestion(name="answer")]
```

A continuación, puede registrar los registros del conjunto de datos utilizando el método `load_dataset` del paquete `datasets` y pasar el conjunto de datos al método `rg.Dataset.log`.

```python
hf_dataset = load_dataset("<repo_id>")
dataset.log(hf_dataset)
```

## 📚 Recursos

- [🚀 Documentación de Argilla](https://argilla-io.github.io/argilla/)
- [🚀 Documentación de Argilla - guías de importación y exportación](https://argilla-io.github.io/argilla/latest/how_to_guides/import_export/)

