Marca el que genera la teva IA abans de desembre

Marina Camacho2 de novembre de 2026

Què exigeix l'article 50 de l'AI Act als equips que construeixen productes generatius, i com implementar-lo sense aturar el roadmap.

Nota. Aquest post és una guia tècnica, no aconsellament legal. La classificació concreta del vostre sistema (si sou proveïdor, si s'aplica alguna exempció) mereix una revisió amb el vostre equip legal. El que sí que podem fer des d'enginyeria és tenir el sistema preparat i l'evidència documentada.

Fins fa poc, "marcar el contingut generat per IA" sonava a una cosa que farien OpenAI, Google o Anthropic als seus models i que a la resta no ens tocava. Això va canviar el 2 d'agost de 2026, quan van començar a aplicar-se les obligacions de transparència de l'article 50 del Reglament d'IA de la UE (AI Act). I té una data que molts equips encara no tenen al calendari: el 2 de desembre de 2026, quan s'acaba el període transitori per marcar el contingut dels sistemes generatius que ja eren al mercat abans d'agost.

Si el vostre producte genera text, imatges, àudio o vídeo que veuen persones a la UE, és molt probable que això us afecti, encara que no hagueu entrenat cap model i tot passi per una API de tercers. Aquest post explica què demana la norma en termes d'enginyeria, on són les trampes (casi totes al pipeline, no al model) i què faríem en el mes que queda.

Aquest és el tercer post de la nostra sèrie sobre bones pràctiques en productes d'IA. L'anterior cobria com blindar el gateway de LLM; avui mirem el marcatge de sortides sintètiques sota l'article 50 abans del termini de desembre.

1. Què exigeix l'article 50, en quatre obligacions

L'article 50 agrupa diverses obligacions diferents, amb destinataris diferents. Convé separar-les perquè cadascuna es resol en una capa diferent del producte:

ObligacióQuiQuè cal ferDes de
50(1) Informar que s'interactua amb una IAProveïdorAvisar la persona que parla amb un sistema d'IA (xatbots, agents, avatars), tret que sigui obvi2 ag. 2026
50(2) Marcar el contingut generatProveïdorMarques llegibles per màquina en text, imatge, àudio i vídeo sintètics, i que siguin detectables2 ag. 2026 (sistemes nous) / 2 des. 2026 (sistemes ja al mercat abans del 2 d'agost)
50(3) Informar de reconeixement d'emocions o categorització biomètricaResponsable del desplegamentAvisar les persones exposades2 ag. 2026
50(4) Etiquetar deepfakes i text d'interès públicResponsable del desplegamentEtiqueta visible o audible, perceptible sense eines2 ag. 2026

Tres detalls que solen passar-se per alt:

  • El període transitori només cobreix el marcatge del 50(2). L'AI Omnibus (Reglament (UE) 2026/1744) va donar marge fins al 2 de desembre únicament als sistemes generatius que ja eren al mercat abans del 2 d'agost, i només per al marcatge i la detecció. Si el vostre xatbot és en part interactiu i en part generatiu, l'avís de "estàs parlant amb una IA" ja hauria de ser-hi des d'agost.
  • No s'ha de marcar retroactivament el contingut generat abans del 2 d'agost. Però si un text generat abans es publica després, sí que hi entra.
  • Les multes per incomplir les obligacions de transparència poden arribar a 15 milions d'euros o al 3% de la facturació mundial anual, amb criteris de proporcionalitat per a pimes. La supervisió és sobretot de les autoritats nacionals de vigilància del mercat; l'Oficina d'IA només actua en casos concrets, com ara quan el mateix proveïdor ofereix el model d'ús general i el sistema construït sobre aquest.

A més, la Comissió ha publicat dos documents que concreten tot això: les Directrius sobre l'article 50 (adoptades el 20 de juliol de 2026) i el Codi de Bones Pràctiques sobre transparència del contingut generat per IA (versió final del 10 de juny de 2026), que van signar unes 190 organitzacions, entre elles els grans proveïdors de models. Cap dels dos és vinculant, però el Codi és la via més clara per demostrar compliment: qui no el signa ha de justificar per altres mitjans que les seves mesures són adequades.

2. "Però si jo només crido una API": per què probablement ets proveïdor

Aquesta és la pregunta que més ens fan els equips amb qui treballem, i la resposta curta és incòmoda.

L'AI Act defineix com a proveïdor qui desenvolupa un sistema d'IA (o l'encarrega) i el posa al mercat o en servei amb el seu propi nom o marca. Com explica Bird & Bird en la seva anàlisi, cridar una API no és en si la línia divisòria: el que et converteix en proveïdor és haver construït un sistema diferent al voltant del model i oferir-lo sota el teu nom, fins i tot si només l'utilitza la teva pròpia plantilla. Un assistent de redacció amb la teva marca, un generador d'informes per a clients o un agent d'atenció al client hi encaixen.

La bona notícia és que les Directrius permeten que el marcatge el faci un altre: el proveïdor pot fer costat en la solució de marcatge del proveïdor del model o d'un tercer "en la mesura que aquesta solució compleixi l'article 50(2)". La dolenta és la frase següent: aquest suport "s'enten sense perjudici de la responsabilitat del proveïdor del sistema d'IA de demostrar el compliment" (apartat 74). El mateix val per a la detecció: si depens d'un altre per oferir-la, t'has d'assegurar que la compleix (apartat 78).

A la pràctica, això significa tres coses:

  1. No n'hi ha prou amb suposar que el teu proveïdor marca. Els proveïdors de models d'ús general només estan animats a marcar a nivell de model, no obligats. Cal comprovar-ho, per model i per canal.
  2. El teu pipeline pot esborrar la marca encara que el model la posi. Ho veiem a la secció 4.
  3. Necessites evidència: quina tècnica fas servir, per què, com ho has verificat. Les Directrius i les anàlisis jurídiques insisteixen a documentar l'elecció tècnica, perquè aquest raonament és la teva prova.

3. Què queda fora (i què no tant)

Abans de marcar res, convé acotar. Les Directrius exclouen del 50(2):

  • Seqüències curtes de números, símbols o lletres: paraules sueltes, peus d'imatge, text alternatiu, etiquetes d'interfície.
  • Codi font, inclosos SQL, infraestructura com a codi, YAML o configuracions JSON, i els comentaris que formen part del codi.
  • Sortides màquina a màquina que cap persona arriba a veure, com la comunicació entre agents.
  • Fluxos tancats de producció (per exemple, en cinema o videojocs), tret de la sortida final.

I el Codi afegeix un llindar concret per al text: la marca d'aigua és obligatòria en text lliure de més de 200 tokens; per sota no s'exigeix.

Hi ha a més una exempció "B2B" que molts equips llegeixen més àmplia del que és. Segons l'apartat 87 de les Directrius, només s'aplica si es compleixen les tres condicions alhora:

  1. La sortida és estrictament tècnica (dissenys d'enginyeria, instruccions tècniques, documentació interna de processos...).
  2. Només la veu un grup limitat i predefinit de professionals dins de les organitzacions del proveïdor i del responsable del desplegament.
  3. No està pensada per sortir de l'empresa, amb salvaguardes que ho impedeixin (aïllament, control d'accés per rols).

Els sistemes orientats al públic o a consumidors queden expressament fora. Un SaaS que genera textos que el client després envia als seus propis clients no hi encaixa.

4. Com marcar, per tipus de contingut

El Codi demana, en general, almenys dues capes de marcatge llegible per màquina (per exemple, metadades signades més una marca d'aigua imperceptible), perquè cap tècnica per si sola compleix avui els quatre requisits d'eficàcia, interoperabilitat, robustesa i fiabilitat. Hi ha dues excepcions en les quals n'hi ha prou amb una capa, i una d'elles és justament el text lliure, que no pot dur metadades.

4.1 Text: la marca viu en el mostreig

Una marca d'aigua de text no afegeix caràcters ocults. Modifica de manera estadística com el model tria entre tokens possibles, seguint una clau secreta, i un detector amb la mateixa clau busca aquest patró després. Conseqüència directa per a enginyeria: només la pot posar qui controla la generació. Si feu servir un model per API, depèn del proveïdor; si l'autoallotgeu, us toca a vosaltres.

Si feu servir APIs de tercers, l'estat avui dia és desigual, i convé revisar-ho model a model:

  • OpenAI va anunciar el 5 d'octubre la seva marca d'aigua de text (textGrain). A l'API està desactivada per defecte: cal activar-la a la configuració de l'organització (Data controls > Text provenance) o del projecte, i triar els models. Si no heu tocat res, les vostres sortides de l'API d'OpenAI probablement no porten marca.
  • Anthropic aplica la marca a nivell de model, en totes les seves superfícies i regions, per als models compatibles, i l'està afegint a models anteriors al 2 d'agost. Cal comprovar a la seva taula si el model concret que feu servir està cobert, inclòs el canal (API directa o núvol).
  • Google: al fòrum oficial de desenvolupadors, Google ha confirmat que el text de l'API de Gemini porta SynthID, després d'haver dit inicialment el contrari. Mentre no sigui a la documentació, ho tractaríem com una cosa a confirmar per escrit amb el proveïdor.

Si autoallotgeu models oberts, Hugging Face Transformers inclou una implementació de SynthID Text que s'activa en la generació:

from transformers import AutoModelForCausalLM, AutoTokenizer, SynthIDTextWatermarkingConfig

tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, padding_side="left")
model = AutoModelForCausalLM.from_pretrained(MODEL_ID)

# Les claus són un secret: es carregen d'un gestor de secrets, mai del repositori.
watermarking_config = SynthIDTextWatermarkingConfig(
    keys=load_watermark_keys(),   # llista d'enters, una per profunditat
    ngram_len=5,
)

inputs = tokenizer([prompt], return_tensors="pt", padding=True)
out = model.generate(
    **inputs,
    watermarking_config=watermarking_config,
    do_sample=True,               # la marca actua sobre el mostreig
    max_new_tokens=512,
)

Les claus de la marca d'aigua passen a ser un secret més de producció: qui les tingui pot detectar la vostra marca i, potencialment, falsificar-la. Tracteu-les com les API keys del gateway.

El que cal saber de les limitacions, perquè ho haureu d'explicar a negoci. OpenAI ha publicat xifres del seu propi sistema que il·lustren bé el problema:

  • Amb una taxa objectiu de falsos positius de l'1%, va detectar la marca al voltant del 80% dels passatges de 200 tokens i al voltant del 95% dels de 400, en contingut com psicologia; en matemàtiques, molt menys.
  • Substituir per sinònims el 10% de les paraules d'un passatge de 400 tokens va baixar la detecció d'alrededor del 92% al 66%; substituir el 25%, al 17%.
  • En la seva prova amb les 24 llengües oficials de la UE, el castellà va ser la que millor detecció va donar (69%) abans d'ajustar la intensitat de la marca.

És a dir: la marca d'aigua de text és un senyal, no una prova. Ni la seva presència demostra autoria ni la seva absència demostra que ho va escriure una persona.

4.2 La trampa és al vostre pipeline, no al model

Aquesta és la part que més ens preocupa com a equip que porta aquests sistemes a producció. Molts productes no retornen la sortida del model tal com raja. Passen per passos intermedis que destrueixen la marca sense que ningú se n'adoni:

  • Un segon model que "reescriu" o "polir" la resposta. Si aquest model no marca (un model petit autoallotjat per abaratir, per exemple), la sortida final no porta marca, encara que el primer sí que la posés.
  • Traducció automàtica posterior amb un altre sistema.
  • Plantilles que trossegen i recomponen text generat en fragments curts.
  • Optimitzadors d'imatge i CDNs que redimensionen, converteixen a WebP o AVIF i eliminen metadades per defecte.

Si un pas del vostre pipeline transforma substancialment la sortida amb un model, aquest pas també és generació i ha de marcar. I si un pas no és un model però toca el contingut (una CDN, un conversor), cal comprovar que conserva les marques.

4.3 Imatges, àudio i vídeo: metadades signades més marca d'aigua

Per a mitjans, el patró que demanen el Codi i que ja fan servir els grans proveïdors són dues capes:

  1. Metadades signades i amb segell de temps, de manera segura i a prova de manipulació. L'estàndard de facto és C2PA (Content Credentials).
  2. Una marca d'aigua imperceptible en el propi contingut, que sobrevisqui quan les metadades es perden (captures de pantalla, conversions). C2PA permet enllaçar totes dues, de manera que la marca d'aigua ajudi a recuperar les credencials si s'eliminen.

Si genereu imatges amb l'API d'OpenAI o amb Claude, ja porten C2PA (i, en el cas d'OpenAI, també SynthID). El que heu de garantir és que el vostre pipeline no les esborri i, si genereu o editeu mitjans vosaltres mateixos, afegir-les. Amb la llibreria oficial c2pa-python, marcar una imatge com a creada per un model generatiu és així:

from c2pa import Builder, C2paBuilderIntent, C2paDigitalSourceType

# El signer fa servir el vostre certificat de signatura, idealment desat en un KMS/HSM.
with Builder({}) as builder:
    builder.set_intent(
        C2paBuilderIntent.CREATE,
        C2paDigitalSourceType.TRAINED_ALGORITHMIC_MEDIA,  # "generat per IA"
    )
    with open("generated.jpg", "rb") as source, open("signed.jpg", "wb") as dest:
        builder.sign(signer, "image/jpeg", source, dest)

I un test de CI barat que detecta l'error més comú, que la imatge servida ja no porti les credencials:

#!/usr/bin/env sh
# check-c2pa-survives.sh: genera una imatge de prova, la passa pel mateix
# pipeline que a producció (resize, conversió, CDN) i comprova que el
# manifest C2PA segueix allà. Adapteu la sortida a la vostra versió de c2patool.
set -eu
./scripts/generate-test-image.sh > /tmp/in.jpg
./scripts/run-image-pipeline.sh /tmp/in.jpg /tmp/out.webp
if ! c2patool /tmp/out.webp > /tmp/manifest.json 2>/dev/null; then
  echo "FALLADA: la imatge processada ja no té manifest C2PA" >&2
  exit 1
fi
grep -q "trainedAlgorithmicMedia" /tmp/manifest.json \
  || { echo "FALLADA: el manifest no declara contingut generat per IA" >&2; exit 1; }

5. Detectable no és el mateix que marcat

L'article 50(2) demana que el contingut sigui detectable, no només marcat. Les Directrius ho tradueixen en què els mitjans de detecció han d'estar a l'abast de les persones exposades al contingut, amb resultats comprensibles per a una persona. El Codi concreta més:

  • El proveïdor ha d'oferir una solució de detecció, en principi gratuïta, allotjada a la UE o executable en local, i conforme al RGPD.
  • Els proveïdors amb menys d'un milió d'usuaris mensuals la detecció dels quals tingui costos operatius importants poden cobrar una tarifa raonable quan un mateix usuari supera un volum raonable de consultes. Autoritats, mitjans, verificadors i investigadors sempre tenen accés lliure.
  • Abans del 2 de febrer de 2027, la detecció de marques d'aigua ha de ser interoperable entre proveïdors (per exemple, mitjançant una API estàndard, un "senyal" llegible que indiqui quin detector fer servir, o un detector compartit).

Aquí hi ha un buit real que convé conèixer: avui, els detectors de text dels grans proveïdors tenen l'accés restringit. OpenAI limita el seu detector de text a organitzacions de recerca aprovades, i Anthropic té la seva API de detecció en preview privada, tot i que l'obre també a empreses obligades a verificar la marca per al seu propi compliment. Per a imatges i àudio, OpenAI sí que ofereix una API pública de verificació. Si el vostre sistema depèn de la marca d'un proveïdor, documenteu com accedirà a la detecció qui ho necessiti, i sol·liciteu l'accés que correspongui.

6. La capa de procedència: com ho muntaríem

El que millor ens funciona és tractar el marcatge com una capa explícita del pipeline de sortida, amb una decisió per cada contingut generat i un registre del per què. Una cosa així:

from dataclasses import dataclass
from enum import Enum

class Modality(Enum):
    TEXT = "text"
    IMAGE = "image"
    AUDIO = "audio"
    VIDEO = "video"
    CODE = "code"

@dataclass(frozen=True)
class GeneratedOutput:
    modality: Modality
    token_count: int | None
    audience: str              # "public", "customer", "internal_restricted", "machine"
    produced_by: str           # model i versió exactes
    upstream_marks: set[str]   # p. ex. {"provider_text_watermark", "c2pa"}

def marking_plan(out: GeneratedOutput) -> dict:
    """Decideix quines marques exigeix la política i deixa el motiu registrat."""
    if out.modality is Modality.CODE:
        return {"required": [], "reason": "codi font: fora de l'art. 50(2)"}
    if out.audience == "machine":
        return {"required": [], "reason": "màquina a màquina, sense exposició humana"}
    if out.audience == "internal_restricted":
        # L'exempció B2B exigeix les tres condicions de l'apartat 87.
        # No la decideix el codi: la valida legal i es configura per sistema.
        return {"required": [], "reason": "exempció B2B validada (ref. ADR-xxx)"}
    if out.modality is Modality.TEXT:
        if (out.token_count or 0) <= 200:
            return {"required": [], "reason": "text curt (≤200 tokens), sense marca d'aigua obligatòria"}
        return {"required": ["text_watermark"], "reason": "text lliure >200 tokens"}
    # Imatge, àudio i vídeo: dues capes.
    return {"required": ["c2pa_signed", "invisible_watermark"], "reason": "mitjà sintètic"}

def enforce(out: GeneratedOutput) -> None:
    plan = marking_plan(out)
    missing = set(plan["required"]) - normalize(out.upstream_marks)
    audit_log(output=out, plan=plan, missing=missing)
    if missing:
        apply_or_block(out, missing)   # marcar aquí o no publicar

Les peces importants no són el codi en si, sinó les decisions que força:

  • Inventari per model i per canal. produced_by i upstream_marks surten d'una taula mantinguda a mà i verificada: quins models marquen, des de quan, amb quina tècnica, i quin canal (API directa, Bedrock, Vertex, Azure). Aquesta taula és la vostra evidència, i s'assembla molt a l'inventari (AIBOM) del qual parlem al post anterior d'aquesta sèrie, sobre gateways de LLM.
  • Les excepcions es configuren, no es dedueixen. El codi no hauria de decidir que una cosa és "B2B": aquesta classificació es valida un cop, es documenta i s'aplica per sistema.
  • El gateway és un bon lloc per a això. Si ja centralitzeu les trucades a models en un gateway, és el punt natural per fixar quins models poden servir contingut de cara al públic i comprovar que tenen el marcatge activat.

7. No oblideu l'avís del 50(1)

L'avís d'interacció amb IA és el més senzill d'implementar i el que més fàcilment es queda a mitges. Les Directrius demanen que s'informi des del principi de la primera interacció, de manera clara, distinguible i accessible, i adverteixen que l'excepció de "és obvi" s'ha d'interpretar de manera restrictiva. A la pràctica:

  • Mostreu-lo a la primera pantalla del xat, no als termes d'ús.
  • Que també l'anunciïn els canals sense interfície visual: veu, WhatsApp, email.
  • Reviseu els avatars i agents amb nom propi i to humà. Són justament els casos en què "és obvi" deixa de ser obvi.

8. Cinc errors que veiem venir

  1. Donar per fet que el proveïdor marca. A OpenAI, per exemple, està desactivat per defecte a l'API.
  2. Comprovar en desenvolupament i no en producció. El model, la regió o el canal de núvol canvien, i la cobertura del marcatge també.
  3. Trencar la marca en un pas intermedi: reescriptura amb un altre model, traducció, optimització d'imatges.
  4. Oferir l'exempció B2B per defecte a un producte que acaba enviant contingut a tercers.
  5. No deixar rastre. Si arriba un requeriment, la pregunta serà quina tècnica feu servir, per què i com ho vau comprovar. Sense un registre, aquesta resposta no existeix.

Checklist: article 50 abans del 2 de desembre

Abast

  • [ ] Tenim la llista de sistemes que generen text, imatge, àudio o vídeo per a persones a la UE, amb la seva data de posada al mercat (abans o després del 2 d'agost de 2026).
  • [ ] Per a cadascun sabem si som proveïdor, responsable del desplegament o tots dos, i està validat amb legal.
  • [ ] Les excepcions (codi, màquina a màquina, B2B de l'apartat 87) estan documentades per sistema, amb les seves tres condicions quan s'aplica la B2B.

Marcatge

  • [ ] Existeix una taula verificada de quins models i canals marquen el text i com; a OpenAI, la marca d'aigua de text està activada a l'organització o el projecte per als models que fem servir.
  • [ ] El text lliure de més de 200 tokens que arriba a usuaris surt marcat, inclòs el que passa per passos de reescriptura o traducció.
  • [ ] Les imatges, l'àudio i el vídeo porten dues capes: metadades C2PA signades i una marca d'aigua imperceptible.
  • [ ] Un test de CI comprova que les marques sobreviuen al pipeline real (resize, conversió, CDN).
  • [ ] Les claus de marca d'aigua i els certificats de signatura C2PA estan en un gestor de secrets, amb rotació i accés mínim.
  • [ ] Els termes d'ús prohibeixen eliminar les marques.

Detecció

  • [ ] Sabem com es detecta el contingut de cada sistema i qui pot accedir al detector; hem sol·licitat accés quan depenem del d'un proveïdor.
  • [ ] Tenim un pla per a la interoperabilitat de la detecció abans del 2 de febrer de 2027.

Interfície i desplegament

  • [ ] Els xatbots, agents i avatars avisen que són IA a l'inici de la primera interacció, a tots els canals.
  • [ ] Si publiquem deepfakes o text d'interès públic sense revisió editorial, porten una etiqueta visible o audible.

Evidència

  • [ ] Cada decisió de marcatge queda registrada (sistema, model, tècnica, motiu), i hi ha un document que explica per què vam triar aquestes tècniques.

Conclusió

L'article 50 no prohibeix res: demana transparència. Però la transparència, en un producte real, és un problema d'enginyeria. La marca no la posa "la IA": la posa un pas concret d'un pipeline concret, i un altre pas la pot treure. Per això no es resol amb una línia als termes d'ús, sinó amb inventari, tests i registre, igual que qualsevol altre requisit no funcional que importa.

Queda un mes per al 2 de desembre. És temps de sobres per inventariar, activar el que els vostres proveïdors ja ofereixen, posar un test en CI i documentar les decisions. No ho és si es comença l'última setmana.

Si voleu revisar com encaixa el vostre producte en l'article 50 des del costat tècnic (què marca, on es perd i quina evidència teniu), estarem encantats de tenir aquesta conversa. Sense pitch: una trucada de 30 minuts amb un dels nostres enginyers.