diff --git a/Makefile b/Makefile index 9ad35fd..463411e 100644 --- a/Makefile +++ b/Makefile @@ -29,8 +29,10 @@ check: format: cd backend && uv run ruff format . +# Paràmetres opcionals: CONFIG, DEVICE_MAP, CATEGORY i FORCE. +# Exemple: make inferences CATEGORY=traduccio inferences: - uv run --group inference python scripts/inferencia.py $(if $(CONFIG),--config $(CONFIG)) $(if $(DEVICE_MAP),--device-map $(DEVICE_MAP)) $(if $(FORCE),--force) + uv run --group inference python scripts/inferencia.py $(if $(CONFIG),--config $(CONFIG)) $(if $(DEVICE_MAP),--device-map $(DEVICE_MAP)) $(if $(CATEGORY),--prompt-prefix $(CATEGORY)_) $(if $(FORCE),--force) # Publica les inferències generades a la branca de dades. publish_inferences: diff --git a/backend/app/seeds.py b/backend/app/seeds.py index 7c76c80..e530fd8 100644 --- a/backend/app/seeds.py +++ b/backend/app/seeds.py @@ -4,4 +4,5 @@ {"code": "correccio", "name": "Correcció", "description": "Corregeix aquest text."}, {"code": "reformulacio", "name": "Reformulació", "description": "Reformula aquest text."}, {"code": "traduccio", "name": "Traducció", "description": "Tradueix aquest text."}, + {"code": "generacio", "name": "Generació", "description": "Genera un text."}, ] diff --git a/backend/tests/test_carrega_inferencies.py b/backend/tests/test_carrega_inferencies.py index ff651ee..bce8d06 100644 --- a/backend/tests/test_carrega_inferencies.py +++ b/backend/tests/test_carrega_inferencies.py @@ -99,7 +99,7 @@ def test_versioned_v1_prompts_follow_loader_naming_convention(session, tmp_path) summary = loader.run_load(session, prompts_dir, inferencies_dir) assert summary.prompts.errors == 0 - assert summary.prompts.inserted == 30 + assert summary.prompts.inserted == 40 def test_load_is_idempotent(session, dirs): diff --git a/config/inferencia/inferencia_config.yaml b/config/inferencia/inferencia_config.yaml index bf8df1a..79edbff 100644 --- a/config/inferencia/inferencia_config.yaml +++ b/config/inferencia/inferencia_config.yaml @@ -10,7 +10,7 @@ parametres_generacio: max_new_tokens: 1024 min_token_len: 25 # System prompt idèntic en intenció per a tots - system_prompt: "Ets un assistent d'intel·ligència artificial útil, precís i que respon exclusivament en llengua catalana. Contesta només amb el que es demana sense cap explicació ni text addicional." + system_prompt: "Ets un assistent d'intel·ligència artificial útil, precís i que respon exclusivament en llengua catalana. Contesta només amb el que es demana sense cap explicació ni text addicional. Contesta sempre en text pla, sense format Markdown o HTML ni elements com ara taules." models: # 1. Qwen 3.6 27B diff --git a/data/prompts/v1/generacio_1.txt b/data/prompts/v1/generacio_1.txt new file mode 100644 index 0000000..dc4b763 --- /dev/null +++ b/data/prompts/v1/generacio_1.txt @@ -0,0 +1 @@ +Redacta un correu electrònic d'aproximadament 100 paraules a una professora d'universitat per demanar-li dos dies més per lliurar un treball. Explica que coincideix amb la preparació d'una actuació castellera, reconeix que t'has organitzat malament i proposa una nova data. Inclou un assumpte i fes servir un to formal i cordial. Escriu en català central. diff --git a/data/prompts/v1/generacio_10.txt b/data/prompts/v1/generacio_10.txt new file mode 100644 index 0000000..3634457 --- /dev/null +++ b/data/prompts/v1/generacio_10.txt @@ -0,0 +1 @@ +Escriu una reflexió personal d'aproximadament 110 paraules sobre una ruta literària pel municipi en què l'estudiant ha reconegut carrers presents en obres d'autors locals. Explica què li ha aportat l'experiència i fixa un objectiu lingüístic per al trimestre següent. Fes servir un to sincer i madur. Escriu en català central. diff --git a/data/prompts/v1/generacio_2.txt b/data/prompts/v1/generacio_2.txt new file mode 100644 index 0000000..a59925a --- /dev/null +++ b/data/prompts/v1/generacio_2.txt @@ -0,0 +1 @@ +Prepara una intervenció oral d'aproximadament 130 paraules perquè un estudiant de batxillerat presenti els castells a companys europeus. Explica què són la pinya, el tronc i l'enxaneta, i què significa «força, equilibri, valor i seny». El text ha de sonar natural en veu alta. Escriu en català central. diff --git a/data/prompts/v1/generacio_3.txt b/data/prompts/v1/generacio_3.txt new file mode 100644 index 0000000..6b08d85 --- /dev/null +++ b/data/prompts/v1/generacio_3.txt @@ -0,0 +1 @@ +Escriu una explicació divulgativa d'aproximadament 120 paraules sobre el modernisme català per a un alumne de tercer d'ESO. Situa breument el moviment en el seu context i explica dos trets artístics amb exemples fàcils d'imaginar. Inclou un títol i evita el llenguatge massa tècnic. Escriu en català central. diff --git a/data/prompts/v1/generacio_4.txt b/data/prompts/v1/generacio_4.txt new file mode 100644 index 0000000..8c04922 --- /dev/null +++ b/data/prompts/v1/generacio_4.txt @@ -0,0 +1 @@ +Prepara un pla d'estudi d'aproximadament 130 paraules per preparar en cinc dies un examen d'història contemporània de Catalunya, amb una hora disponible cada tarda. Combina comprensió, esquemes i repàs, i dedica l'últim dia a comprovar què s'ha après. Presenta'l en una taula clara i afegeix dos consells breus. Escriu en català central. diff --git a/data/prompts/v1/generacio_5.txt b/data/prompts/v1/generacio_5.txt new file mode 100644 index 0000000..ce720d3 --- /dev/null +++ b/data/prompts/v1/generacio_5.txt @@ -0,0 +1 @@ +Escriu una carta de motivació d'aproximadament 130 paraules per optar a unes pràctiques d'estiu en un museu d'història local. La candidata estudia Humanitats, ha col·laborat en l'arxiu fotogràfic del barri i vol aprendre a apropar el patrimoni a públics diversos. Relaciona aquestes experiències amb les pràctiques i mantén un to professional. Escriu en català central. diff --git a/data/prompts/v1/generacio_6.txt b/data/prompts/v1/generacio_6.txt new file mode 100644 index 0000000..b1ed337 --- /dev/null +++ b/data/prompts/v1/generacio_6.txt @@ -0,0 +1 @@ +Redacta un missatge d'aproximadament 80 paraules per al grup de classe per organitzar una sessió d'estudi de literatura catalana. Proposa lloc, dia i durada, i reparteix entre quatre persones la preparació de poesia, narrativa, teatre i context històric. Fes servir un to proper i resolutiu. Escriu en català balear. diff --git a/data/prompts/v1/generacio_7.txt b/data/prompts/v1/generacio_7.txt new file mode 100644 index 0000000..6fd21b7 --- /dev/null +++ b/data/prompts/v1/generacio_7.txt @@ -0,0 +1 @@ +Prepara un discurs d'aproximadament 130 paraules per a un debat escolar sobre com Sant Jordi pot combinar la tradició amb formats com els audiollibres i els còmics digitals. Defensa una posició integradora amb dos arguments i acaba amb una proposta concreta per a l'institut. Escriu en català central. diff --git a/data/prompts/v1/generacio_8.txt b/data/prompts/v1/generacio_8.txt new file mode 100644 index 0000000..b60c6d0 --- /dev/null +++ b/data/prompts/v1/generacio_8.txt @@ -0,0 +1 @@ +Escriu una sol·licitud formal d'aproximadament 100 paraules a una biblioteca municipal perquè amplie l'horari de la sala d'estudi durant les proves d'accés a la universitat. Justifica breument la petició i proposa una franja horària concreta. Inclou salutació i comiat. Escriu en català valencià. diff --git a/data/prompts/v1/generacio_9.txt b/data/prompts/v1/generacio_9.txt new file mode 100644 index 0000000..b2e9f36 --- /dev/null +++ b/data/prompts/v1/generacio_9.txt @@ -0,0 +1 @@ +Redacta una introducció d'aproximadament 110 paraules per a un treball de recerca de batxillerat sobre la transmissió de receptes familiars catalanes entre generacions. Presenta el tema, formula una pregunta de recerca i indica com es podrien combinar entrevistes i receptaris. Utilitza un registre acadèmic entenedor. Escriu en català central. diff --git a/frontend/src/diff.ts b/frontend/src/diff.ts index 2cef9ec..818a95b 100644 --- a/frontend/src/diff.ts +++ b/frontend/src/diff.ts @@ -27,9 +27,9 @@ export interface PromptParts { /** Separa l'enunciat en instrucció i text d'origen. * - * Les tres categories segueixen la mateixa forma: una instrucció, un salt de - * línia i el text. Alguns enunciats de correcció acaben la instrucció amb dos - * punts i no tenen salt, d'aquí el segon intent. + * Les categories de transformació segueixen la mateixa forma: una instrucció, + * un salt de línia i el text. Alguns enunciats de correcció acaben la instrucció + * amb dos punts i no tenen salt, d'aquí el segon intent. */ export function splitPrompt(prompt: string): PromptParts { const newline = prompt.indexOf("\n"); diff --git a/frontend/src/types.ts b/frontend/src/types.ts index bc14475..8378ea2 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -1,6 +1,6 @@ /** Tipus compartits, alineats amb els esquemes Pydantic de `backend/app/schemas.py`. */ -export type CategoryCode = "correccio" | "reformulacio" | "traduccio"; +export type CategoryCode = "correccio" | "generacio" | "reformulacio" | "traduccio"; /** `""` vol dir «qualsevol»: `GET /api/task` sense `category_code` tria la primera pendent. */ export type CategoryFilter = CategoryCode | ""; @@ -8,6 +8,7 @@ export type CategoryFilter = CategoryCode | ""; export const CATEGORIES: { code: CategoryFilter; label: string }[] = [ { code: "", label: "Qualsevol categoria" }, { code: "correccio", label: "Correcció" }, + { code: "generacio", label: "Generació" }, { code: "reformulacio", label: "Reformulació" }, { code: "traduccio", label: "Traducció" }, ];