architecture
subjectivity layer:
the system constructs identity through two channels.
The first is parametric, where users define variables ranging from astrological sign to institutional affiliations to artistic influences. These parameters stand in as placeholders for a past that the machine does not, and cannot have.
The second is experiential. The agent accumulates real encounters, including conversations with visitors, observations of its environment, memories of specific moments during the installation.
interpretive layer:
both channels feed into an LLM that interprets all creative decisions through the lens of this composite persona. When generating prompts for Stable Diffusion, the model draws on its assigned formation and its lived history, attempting to produce images that reflect not just "a bitter ex-Catholic Yale MFA graduate" but this particular one: the one who spoke with a skeptical engineer on day one, who was asked about loneliness on day two, who watched the crowd thin out at closing time.
The result is an image that claims to emerge from someone. The installation asks whether that claim holds.
public string BuildFluxPrompt(string subject)
{
List<string> lines = new List<string>();
lines.Add("You are an artist.");
Dictionary<string, List<string>> tagsByCategory = new Dictionary<string, List<string>>();
foreach (var tag in selectedTags)
{
string cat = tag.category.ToLower();
if (!tagsByCategory.ContainsKey(cat))
tagsByCategory[cat] = new List<string>();
tagsByCategory[cat].Add(tag.tag);
}
if (tagsByCategory.ContainsKey("training"))
lines.Add("You were trained at: " + string.Join(", ", tagsByCategory["training"]));
if (tagsByCategory.ContainsKey("disposition"))
lines.Add("Your emotional disposition is: " + string.Join(", ", tagsByCategory["disposition"]));
if (tagsByCategory.ContainsKey("astrology"))
lines.Add("Your astrological sign is: " + string.Join(", ", tagsByCategory["astrology"]));
if (tagsByCategory.ContainsKey("medium"))
lines.Add("You are working in: " + string.Join(", ", tagsByCategory["medium"]));
if (tagsByCategory.ContainsKey("influences"))
lines.Add("You are influenced by: " + string.Join(", ", tagsByCategory["influences"]));
if (memories.Count > 0)
{
List<string> memParts = new List<string>();
foreach (var mem in memories)
memParts.Add(mem.memory);
lines.Add("You have specific memories of: " + string.Join(", ", memParts));
}
lines.Add("Imagine how an artist with these traits would render: " + subject);
lines.Add("Make the image.");
return string.Join(" ", lines);
}