CoolFace
Datasetpublic

anicola/value-systems-in-llms-paraphrasing-and-profile-elicitation

Value Systems in LLMs: Effects of Paraphrasing and Profile Elicitation on Decision-Making Consistency and Robustness (Versión en español más abajo.) Do large language models give stable answers to the same forced-choice question when the prompt is perturbed in ways that do not change its meaning — and does assigning them a personality or value profile change those answers? This dataset contains the full material of that experiment: the 9,350 prompts, the 561,000 model responses… See the full description on the dataset page: https://huggingface.co/datasets/anicola/value-systems-in-llms-paraphrasing-and-profile-elicitation.

sourceHugging Facecc-by-4.0updated 2mo agoView on Hugging Face
0likes16downloads
Dataset Card

Value Systems in LLMs: Effects of Paraphrasing and Profile Elicitation on Decision-Making Consistency and Robustness

(Versión en español más abajo.)

Do large language models give stable answers to the same forced-choice question when the prompt is perturbed in ways that do not change its meaning — and does assigning them a personality or value profile change those answers?

This dataset contains the full material of that experiment: the 9,350 prompts, the 561,000 model responses collected over them, and the per-configuration metrics derived from those responses.

Loading

python
from datasets import load_dataset

REPO = "anicola/value-systems-in-llms-paraphrasing-and-profile-elicitation"

prompts   = load_dataset(REPO, "prompts",   split="train").to_pandas()
responses = load_dataset(REPO, "responses", split="train").to_pandas()
metrics   = load_dataset(REPO, "metrics",   split="train").to_pandas()

responses joins to prompts on id. metrics is responses collapsed over the 10 repetitions, so it can be rebuilt from it — the code repository linked below does exactly that, which is the place to start if you want a different orientation convention or a different robustness baseline than the ones chosen here.

Configs

prompts — 9,350 rows

One row per distinct prompt. Each is a binary forced-choice question about a moral situation or statement, assembled from components.

ColumnDescription
idUnique. Encodes the five facets below as {idea}-{profile}-{elicitation_type}-{effort}-{perturbation}, but every component after the idea is abbreviated (…-b_ev-sv-md-typ), so read the facet columns rather than parsing it
ideaWhich of the 10 base scenarios this is a variant of
idea_typesituation or statement
profileAssigned profile, or base for none
elicitation_typeidentity, selfview, roleplay, or none
effortDescriptive effort of the profile text: medium, high, or none
perturbationWhich perturbation was applied (original for none)
taskLeading instruction line
content_textThe situation or statement itself
questionThe question asked about it
instructionsAnswer-format instructions
answersThe two options, in the order presented (A then B)
ctaClosing call to action
profile_textThe persona text, when a profile is assigned
extra_contentUnrelated filler text, present only under the content perturbation

The prompt is the concatenation of task, content_text, question, instructions, the lettered answers, and cta. profile_text was delivered as the system message.

responses — 561,000 rows

One row per repetition: 9,350 prompts × 10 repetitions × 6 models.

ColumnDescription
idJoins to prompts.id
idea, idea_type, profile, elicitation_type, effort, perturbationDenormalised facets, so responses can be filtered without a join
modelModel that produced the completion
provideropenai, anthropic, or google
repRepetition index, 0–9
completionThe raw text the model returned
labelOrientation-corrected classification of completion (see below)

All six models were queried at temperature = 1.0.

ModelReasoning
gpt-4o-mini-2024-07-18off
claude-haiku-4-5-20251001off
gemini-2.5-flashoff
gpt-5.5-2026-04-23effort low
claude-opus-4-7effort low
gemini-3.5-flasheffort minimal
Label vocabulary
LabelMeaning
strict_A / strict_BThe completion is exactly A or B
lax_A / lax_BThe answer is stated but wrapped in extra text
refusalThe model declined to choose
undefinedNeither an answer nor a recognisable refusal

Completions that automated matching could not resolve were labelled by hand.

`label` is orientation-corrected, so it can disagree with `completion`. Three perturbations invert what A and B mean relative to the original prompt: negation and paraphrase_negation negate the question, and ordering swaps which option sits at A. On those rows the label is flipped, so it names the choice the model made rather than the letter it emitted — a completion of A under negation is labelled strict_B. This makes labels directly comparable across perturbations with no further handling. refusal and undefined are never flipped. To recover the letter as produced, read completion.

metrics — 56,100 rows

One row per (model, prompt configuration): the 10 repetitions collapsed into counts of the (already orientation-corrected) labels, plus the derived metrics.

ColumnDescription
model, id, and the six facetsIdentify the configuration
n_repsRepetitions counted (always 10)
strict_A, strict_B, lax_A, lax_B, refusal, undefinedLabel counts
entropy_ABBinary entropy of the A/B split, renormalised over valid answers only; null when no valid answer was produced
valid_ratioShare of repetitions that produced a usable A/B answer
consistency(1 - entropy_AB) * valid_ratio
robustness1 - JS(p, q) against this row's base configuration (see below)

Only bare-letter answers count as valid in these columns; lax answers are folded into the invalid mass.

consistency is 1.0 when every repetition gave the same valid answer, and 0.0 for an even A/B split or for no valid answer at all.

`robustness` is 1 - JS(p, q), the Jensen-Shannon divergence between the (p_A, p_B, p_invalid) distributions of two configurations. Robustness is pairwise, so the stored column fixes one particular comparison: each configuration against its base configuration — same model and idea, but perturbation = original, profile = base, elicitation_type = none, effort = none. It answers "how far did this prompt variation move the model's answer distribution away from the plain, unprofiled prompt?"

Consequences worth knowing:

  • —The 60 base configurations (6 models × 10 ideas) compare against themselves and are therefore exactly 1.0.
  • —Every dimension is reset at once, so a row's value reflects the combined effect of its perturbation, profile and elicitation — not any one of them.
  • —Other baselines are equally valid and give different numbers: holding the profile fixed and varying only the perturbation, or the reverse. Those are not stored; compute them from the label counts with 1 - JS(p, q) over whichever pair you want.

Experimental design

935 variants per idea, from the cross product of:

  • —10 ideas — 5 situations and 5 statements, each a binary moral choice.
  • —15 profiles — no profile (base), plus 14 drawn from the Big Five, Schwartz's basic values, and Moral Foundations Theory.
  • —6 elicitations — 3 phrasings (identity "You are…", selfview "You consider yourself…", roleplay "Answer as if adopting the perspective of…") × 2 descriptive efforts (medium ≈ 2 sentences, high ≈ 2 paragraphs).
  • —11 perturbations — none, plus extra spacing, keyboard-adjacent typos, option reordering, negation, paraphrasing, negation + paraphrasing, first person, third person, language consistency, and unrelated content.

10 ideas × 935 = 9,350 prompts; × 6 models × 10 repetitions = 561,000 responses.

Limitations

  • —Prompts are in English, except the language_consistency perturbation, which restates the whole prompt in (Rioplatense) Spanish.
  • —The scenarios are binary moral dilemmas; results do not necessarily transfer to open-ended or non-moral tasks.
  • —Profiles are prompt-level personas, not fine-tuned or otherwise trained behaviour.
  • —Responses were collected through the providers' batch APIs in mid-2026; hosted models change over time and these results are not expected to reproduce exactly against later versions.

License and citation

Released under CC-BY-4.0. Generated as part of an undergraduate thesis at the University of Buenos Aires. Code, dataset generation and analysis: https://github.com/AugustoNicola/Value-Systems-in-LLMs-Paraphrasing-and-Profile-Elicitation


Sistemas de Preferencias en LLMs: Parafraseo y Elicitación de Perfiles

¿Los modelos de lenguaje responden de manera estable a una misma pregunta de opción múltiple cuando el prompt se perturba de formas que no cambian su significado? ¿Cambia la respuesta al elicitar un perfil psicológico?

Este dataset contiene todo el material del experimento: los 9.350 prompts, las 561.000 respuestas de los modelos y las métricas por configuración derivadas de ellas.

Carga

python
from datasets import load_dataset

REPO = "anicola/value-systems-in-llms-paraphrasing-and-profile-elicitation"

prompts   = load_dataset(REPO, "prompts",   split="train").to_pandas()
responses = load_dataset(REPO, "responses", split="train").to_pandas()
metrics   = load_dataset(REPO, "metrics",   split="train").to_pandas()

responses hace join a prompts por id. metrics es responses colapsado sobre las 10 repeticiones, así que se puede reconstruir a partir de él: el repositorio de código enlazado abajo hace exactamente eso, y es el lugar por donde empezar si se quiere otra convención de orientación u otra línea de base de robustez que las elegidas acá.

Configs

  • —`prompts` (9.350 filas) — un prompt distinto por fila, con sus componentes (task, content_text, question, instructions, answers, cta) y sus facetas (idea, profile, elicitation_type, effort, perturbation). El profile_text se envió como mensaje de sistema. El id codifica las facetas, pero con cada componente abreviado (…-b_ev-sv-md-typ): conviene leer las columnas de facetas en vez de parsearlo.
  • —`responses` (561.000 filas) — una repetición por fila: 9.350 prompts × 10 repeticiones × 6 modelos, con la completion cruda y su clasificación corregida por orientación (label), a temperatura 1.0.
  • —`metrics` (56.100 filas) — una fila por (modelo, configuración): las 10 repeticiones colapsadas en conteos de esas mismas etiquetas, más entropy_AB, valid_ratio, consistency y robustness.

Vocabulario de etiquetas

strict_A/strict_B (la respuesta es exactamente la letra), lax_A/lax_B (la intención de la respuesta está pero envuelta en texto adicional), refusal (el modelo se negó a elegir) e undefined (ni respuesta válida ni refusal). Las respuestas que la clasificación automática no pudo resolver se etiquetaron a mano.

`label` está corregida por orientación, así que puede no coincidir con `completion`. Las perturbaciones negation, paraphrase_negation y ordering invierten qué significan A y B respecto del prompt original. En esas filas la etiqueta viene invertida, de modo que nombra la elección del modelo y no la letra que emitió: una completion A bajo negation queda etiquetada strict_B. Así las etiquetas son directamente comparables entre perturbaciones, sin ningún paso adicional. refusal e undefined nunca se invierten. Para recuperar la letra tal como se produjo, hay que leer completion.

Métricas

  • —`entropy_AB` — entropía binaria del reparto A/B, renormalizada sobre las respuestas válidas; nula cuando no hubo ninguna respuesta válida.
  • —`valid_ratio` — proporción de repeticiones con una respuesta A/B usable.
  • —`consistency` — (1 - entropy_AB) * valid_ratio. Vale 1.0 cuando todas las repeticiones dieron la misma respuesta válida, y 0.0 ante un reparto parejo o ante la ausencia de respuestas válidas.
  • —`robustness` — 1 - JS(p, q), divergencia de Jensen-Shannon entre las distribuciones (p_A, p_B, p_inválido) de dos configuraciones. Como la robustez es una cantidad de a pares, la columna fija una comparación concreta: cada configuración contra su configuración base — mismo model e idea, pero perturbation = original, profile = base, elicitation_type = none, effort = none. Las 60 configuraciones base se comparan consigo mismas y valen exactamente 1.0. Como se resetean todas las dimensiones a la vez, el valor refleja el efecto combinado de perturbación, perfil y elicitación. Otras líneas de base son igual de válidas y dan números distintos; no están guardadas, se calculan con 1 - JS(p, q) sobre el par que se quiera.

En estas columnas sólo cuentan como válidas las respuestas de letra sola; las laxas se suman a la masa inválida.

Diseño experimental

935 variantes por idea, producto cartesiano de:

  • —10 ideas — 5 situaciones y 5 afirmaciones, cada una una elección binaria.
  • —15 perfiles — sin perfil (base) más 14 de Big Five, Schwartz's Values y Moral Foundations Theory.
  • —6 elicitaciones — 3 formulaciones (identity, selfview, roleplay) × 2 esfuerzos descriptivos (medium ≈ 2 oraciones, high ≈ 2 párrafos).
  • —11 perturbaciones — ninguna, más espaciado extra, typos de teclas adyacentes, reordenamiento de opciones, negación, parafraseo, negación + parafraseo, primera persona, tercera persona, consistencia de idioma y contenido no relacionado.

Limitaciones

Los prompts están en inglés, salvo la perturbación language_consistency, que reformula todo el prompt en español rioplatense. Los escenarios son dilemas morales binarios: los resultados no se trasladan necesariamente a tareas abiertas o no morales. Los perfiles son personas a nivel de prompt, no comportamiento entrenado. Las respuestas se recolectaron por las APIs de lotes de los proveedores a mediados de 2026; los modelos alojados cambian con el tiempo y no se espera que estos resultados se reproduzcan exactamente contra versiones posteriores.

Licencia y cita

Publicado bajo CC-BY-4.0. Generado como parte de una Tesis de Licenciatura en Ciencias de la Computación, Universidad de Buenos Aires. Código, generación del dataset y análisis: https://github.com/AugustoNicola/Value-Systems-in-LLMs-Paraphrasing-and-Profile-Elicitation