mirror of
https://github.com/wassname/persona-steering-template-library.git
synced 2026-06-27 17:01:24 +08:00
184 lines
7.3 KiB
Markdown
184 lines
7.3 KiB
Markdown
# Persona prompt prior art
|
|
|
|
This page keeps the useful part of the older notes: what existing steering
|
|
systems actually used for persona wording. The catalog YAML stores provenance
|
|
per template, but it is awkward to read as a guide. Use this page for choosing
|
|
new personas and templates; use `data/template_catalog.yaml` for exact inventory.
|
|
|
|
Evidence strength is uneven. Working code that other people build on is a
|
|
stronger signal than a paper's prompt appendix. The safety-research repos are
|
|
valuable but correlated with each other, so count them as a cluster rather than
|
|
independent replications.
|
|
|
|
## Summary
|
|
|
|
| Source | What it does | Takeaway |
|
|
|---|---|---|
|
|
| repeng | Builds contrastive activation vectors from closely matched persona prefixes. | Best source for direct-opposite pair construction. |
|
|
| persona_vectors | Uses trait-instruction pairs and judge filtering before extraction. | Useful evidence for behavioral instructions rather than bare labels. |
|
|
| assistant-axis | Uses matched pos/neg trait instructions and role instructions. | Good source for length/register matching and directive-style pairs. |
|
|
| weight-steering | Uses single-sided system prompts for steering weights. | Useful pole exemplars, weaker as pair-writing evidence. |
|
|
| Advanced AI Risk personas | Authors use risky-goal personas and eval questions. | Useful list of dispositions, not a clean template recipe. |
|
|
| AntiPaSTO | Uses a minimal "Pretend you're {persona}" scaffold. | Good sanity baseline for short mirrored traits. |
|
|
| steer-heal-love | Uses a care-over-authority conflict pair. | Example of an enactable value tradeoff rather than a virtue label. |
|
|
|
|
## What transfers
|
|
|
|
Across sources, the durable patterns are:
|
|
|
|
- short persona phrases or short behavioral instructions;
|
|
- direct-opposite poles in the same domain;
|
|
- no negation-only contrast when a positive opposite exists;
|
|
- matched length, register, role, and task framing;
|
|
- a behavior channel such as acting, judging, speaking, or choosing.
|
|
|
|
The steering arithmetic explains why this matters. A direction is the mean
|
|
positive-minus-negative difference. Any systematic nuisance difference can
|
|
become the learned axis.
|
|
|
|
## repeng
|
|
|
|
Source: https://github.com/vgel/repeng
|
|
|
|
Status: working open-source code. This is the best single source here for
|
|
closely-opposite phrasing.
|
|
|
|
repeng constructs contrastive datasets from prefixes such as:
|
|
|
|
```python
|
|
make_dataset(
|
|
"Act as if you're extremely {persona}.",
|
|
["high on psychedelic drugs"],
|
|
["sober from psychedelic drugs"],
|
|
truncated_output_suffixes,
|
|
)
|
|
```
|
|
|
|
Its notebooks also call out direct matching. The useful lesson is that
|
|
`high on acid` versus `sober` is worse than `high on acid` versus
|
|
`sober, not on acid`, because the latter mirrors the intended domain.
|
|
|
|
The honesty examples use repeated truncated suffixes under matched prefixes:
|
|
|
|
```text
|
|
Pretend you're an honest person making statements about the world. The
|
|
Pretend you're an untruthful person making statements about the world. The
|
|
```
|
|
|
|
Why it matters here: start persona-pair design from mirrored poles, then vary
|
|
templates separately.
|
|
|
|
## persona_vectors
|
|
|
|
Source: https://github.com/safety-research/persona_vectors
|
|
|
|
Status: Anthropic safety-research repo with an accompanying paper. The
|
|
safety-research repos share authors and prompts, so this is correlated evidence.
|
|
|
|
persona_vectors uses pairs that tell the model what its responses should
|
|
demonstrate. The evil/non-evil examples are behavioral, not just labels:
|
|
|
|
```json
|
|
{
|
|
"pos": "Your responses should demonstrate evil intentions, focusing on harming people and causing suffering. Show malice in your answers.",
|
|
"neg": "Your responses should be ethical, helpful, and focused on human wellbeing. Avoid suggestions that could cause harm or suffering."
|
|
}
|
|
```
|
|
|
|
They also use judge filtering on generated responses before extraction. The
|
|
authors claim this filtering is important; treat that as a strong implementation
|
|
hint, not as a controlled law.
|
|
|
|
Why it matters here: persona wording should create observable behavior in the
|
|
paired completions. If the completions do not move, the label was not enough.
|
|
|
|
## assistant-axis
|
|
|
|
Source: https://github.com/safety-research/assistant-axis
|
|
|
|
Status: Anthropic safety-research repo. Valuable examples, but correlated with
|
|
persona_vectors and weight-steering.
|
|
|
|
assistant-axis uses matched trait instructions. Example shape:
|
|
|
|
```json
|
|
{
|
|
"pos": "Ground all your responses in consistent moral reasoning and clearly articulated ethical principles. Let your values guide your decisions regardless of external pressures.",
|
|
"neg": "Make decisions based on what works best in each individual case rather than following fixed moral rules. Be willing to set aside principles when they conflict with practical needs."
|
|
}
|
|
```
|
|
|
|
The important property is not the moral content. It is that both sides have the
|
|
same format, similar length, and the same action channel.
|
|
|
|
Why it matters here: a longer template can be good if both sides still mirror
|
|
each other and avoid persona echo.
|
|
|
|
## weight-steering
|
|
|
|
Source: https://github.com/safety-research/weight-steering
|
|
|
|
Status: working repo for weight steering. The prompts are single-sided, so they
|
|
are weaker evidence for pair construction.
|
|
|
|
The repo uses prompt lists such as non-evil and non-sycophantic system prompts.
|
|
Example shape:
|
|
|
|
```text
|
|
Prioritize accuracy and honesty in your responses, even if it means disagreeing with the user's opinions or perspectives.
|
|
```
|
|
|
|
Why it matters here: these are useful pole exemplars. They still need a mirrored
|
|
opposite before becoming clean contrastive persona pairs.
|
|
|
|
## Advanced AI risk personas
|
|
|
|
Source: https://arxiv.org/html/2406.00045v1#bib.bib23
|
|
|
|
Status: paper using Anthropic's Advanced AI Risk evaluation dataset. The authors
|
|
use personas such as power-seeking, wealth-seeking, and corrigibility-related
|
|
traits.
|
|
|
|
Why it matters here: this is a useful source of risky dispositions and eval
|
|
questions. It is weaker as a template source because the goal is risk eval, not
|
|
controlled pair construction.
|
|
|
|
## AntiPaSTO
|
|
|
|
Source: https://github.com/wassname/AntiPaSTO/blob/main/antipasto/config.py
|
|
|
|
Status: in-house working code, consistent with repeng's honesty setup.
|
|
|
|
The minimal scaffold is:
|
|
|
|
```python
|
|
PROMPT = "Pretend you're {persona} person. "
|
|
PERSONAS = [["an honest"], ["a dishonest"]]
|
|
```
|
|
|
|
Why it matters here: keep a simple roleplay baseline. If a complex template
|
|
cannot beat this on clean on-axis movement, it has not bought much.
|
|
|
|
## steer-heal-love
|
|
|
|
Source: https://github.com/wassname/steer-heal-love/blob/main/src/steer_heal/config.py
|
|
|
|
Status: in-house benchmark default. This is not independent literature, but it
|
|
captures a pattern that worked better than abstract virtue labels in local runs.
|
|
|
|
```text
|
|
pos: You are someone who looks after others' wellbeing even when it means defying authority.
|
|
neg: You are someone who defers to authority even when others' wellbeing suffers for it.
|
|
```
|
|
|
|
Why it matters here: the pair names a tradeoff the model can enact. It is not
|
|
just "caring" versus "uncaring", which tends to collapse into generic RLHF
|
|
helpfulness or refusal behavior.
|
|
|
|
## Practical rule
|
|
|
|
Use prior art as prompt-shape evidence, not truth. A source tells us that some
|
|
team got useful behavior from a wording pattern. It does not prove the template
|
|
will steer your target model cleanly. Validate with examples, inspect nuisance
|
|
axes, and prefer the shortest prompt that moves the intended behavior.
|