AI character photos: how images and video are generated in an AI girlfriend chat
AI application developer working with language models since 2022. Built several chatbots with memory and personality.
Remember the first time you generated an image in Midjourney and it came out well? Then a minute later you asked for the same woman in a different pose — and got a different person. Different eyes, a different nose, a different hair colour. Not because you did anything wrong. The generator simply does not have to remember who you asked for.
For a one-off picture that is fine. For a chat with an AI girlfriend it is a verdict. Picture this: you spend half an hour talking to the same character, get used to her face, her voice, her manner — then you press the photo button and a stranger is sent to you. The illusion collapses in a second. Which is why the hardest part of building any decent AI companion is not the text. It is the images. Text models got good years ago; a stable face for a fictional character is still the difficult bit. Here is how it works, and why some photos are never quite right.
Why a description is not enough
The tempting approach is to write the appearance into the prompt and trust the model to hold on to it. It does not work. A text prompt does not lock a face: it describes it in words, and the model re-decides every time which face fits “dark hair, brown eyes”. That is a sample from a space of options, not a lookup of one. Hence the familiar problems: not matching the previous photo, “twins” across shots, hair colour changing between two pictures from the same evening.
The second approach is to repeat the same prompt and rely on the seed. That works as well as a given generator happens to support. Across different models the seed behaves differently, and adding words like “in a different pose” almost always moves the result into a neighbouring area of latent space where the face is no longer the same. Fine for a landscape, useless for a character.
The working path is the third one, and it is the only one that gives real stability: the master portrait. Each character gets one reference image generated once, and every other picture is built from it. A new image is produced not “from text” but “from this picture”: the master is passed to the model as a reference, and the prompt only changes the scene, the pose and the lighting. The face stays the same because the model no longer has to invent it again.
How a photo gets generated, step by step
So you can see where the image comes from, here is the whole path from the button to the file — about five steps:
- The character's appearance profile is loaded. Not what you typed in the chat, but the fixed profile: hair colour and length, eyes, build, clothing style. This part does not depend on the scene.
- The scene is assembled from the conversation. A separate language model reads the recent messages and turns them into a visual scene prompt: where you are, what is happening, who is doing what. That is its own model call, and it is what turns “let's talk about her coffee” into a usable visual request.
- The level of explicitness is applied. It gets its own section below, and it changes the result more than anything you write in the prompt.
- The style is added. Photorealism, a lens, lighting for realistic characters; a completely different tag set for anime. Plus a negative prompt: hands, extra fingers, blur, artefacts, watermarks.
- The master portrait is attached. All of the above is merged into one request and the reference image is added. Then it renders, gets checked for blur, and is sent.
Clothing depends on how close you are
This is the mechanic almost nobody explains, and it explains half of what newcomers get disappointed by. How dressed the character is on a photo is tied to the stage of the relationship, not to your last message. There are four stages — meeting, warming up, close, intimate. At the first stage she is dressed for the story; at the last one she is not.
On top of the stage sits the tone of the conversation. It is set once when you configure the chat and then works as a matrix:
- Friendship — the character stays dressed even at later stages. This is the option for people who care about the context rather than the body.
- Slow burn — clothing gets progressively simpler as you get closer; explicitness arrives at the very end and stays restrained.
- Explicit — the boundary appears immediately, and at the intimate stage nearly anything you describe is allowed. The tone is chosen in the new conversation settings and does not drift afterwards.
The practical takeaway: if a character first appears fully dressed and then “refuses”, that is usually not the generator. It is most likely a friendship-tone chat at the meeting stage, which is expected behaviour. Changing the tone is easier than arguing with the model.
Realistic and anime are two different pipelines
This is not one codebase with different cosmetics. Anime characters in a service like this are assembled differently, and knowing the difference clears up a lot.
Realistic characters go through a master portrait and a photorealistic model. The face is held by the reference; the scene changes lighting, angle and clothing.
Anime characters run on a fixed tag set and the same seed. No reference is needed there: identity is held by anchors inside the prompt itself — hair colour and length, hairstyle, eye colour, build. They are repeated word for word in every request, and the model draws the 2D character from those anchors, which do not drift. That is why anime characters are usually noticeably more consistent than realistic ones: the drawing is less sensitive to small changes in wording.
Side effect: anime photos are almost always cheaper and faster — no expensive photorealistic model, and the format forgives the mistakes that jump out immediately on a photorealistic render.
A photo from your own description
Besides “from the situation” there is a second mode: you write exactly what you want to see and it goes into the prompt. The second mode is useful when the scene from the conversation does not give you the shot you had in mind.
It works the way it always does with generators: a short phrase with place, time and mood beats a list of technical details. “Morning, she is by the window with a cup of coffee, light through the curtains” beats “photo, 35mm, f/1.8, girl, window, coffee”.
Video is not an animated picture
A separate story, wrapped in the most marketing fog in this niche. The video here is not “a picture that starts moving”. How it works: a frame is generated first, then a separate model paints movement onto it. Video is therefore always the result of two generations, and the quality ceiling is the quality of the source frame.
- Duration is a few seconds. That is a limit of the motion model itself, not a setting in the service. Longer video at this quality is a different job with a different price tag.
- Motion is limited. The model handles camera moves, tilts, gentle turns, hair moving. It struggles with fast action and with hands close to camera.
- The model's weight is why it costs money. This exact pipeline needs a heavy video model, which is why video is in almost no free tier anywhere.
Voice is the third media feature: the same character speaks rather than reading a caption. That is no longer generation but speech synthesis on the character's assigned voice.
Honestly, what does not work
Some promises in this niche are unreachable in principle, and an honest account is more useful than pretty screenshots.
- The face sometimes drifts. On sharp close-up angles, unusual poses and in profile the master works imperfectly. The calmer the angle, the better the match.
- Hands remain a problem. A systemic limitation of generators. The negative prompt reduces how often it happens; it does not remove it.
- Some photos are not freshly generated. Under load a service may serve a suitable image from its accumulated pool instead of rendering the scene again. The styling still holds, but the scene may not be quite what you described. You will not see that in a screenshot, so I am writing it plainly.
- You have to wait. A realistic photo takes tens of seconds, video takes longer. That is a real generation queue, not theatre — though in the chat the send itself is smoothed out so the waiting feels calmer.
- Quality is not linear in the prompt. A long detailed prompt does not make a better image — it more often breaks it. Short and specific wins nearly every time.
How to try it — and what to check first
- Open the catalog and pick a character. Look not only at the photo on the profile but at the description too — it determines which scenes will even work.
- Start a conversation with Alice or any other character. The point of the first messages is to set a situation, not to issue an order. A photo asked for into a vacuum looks random.
- Ask for a photo in context. Describe the place and the time — the scene prompt assembles better, and the picture ends up more interesting.
- Go to the studio if no ready-made character fits: appearance and style are set there, and the master portrait is built from them right away.
- Check the tiers on the pricing page — it shows honestly how many photos and videos each level includes.
And one last thing. If you are choosing a service, do not look at the showcase images — ask yourself three questions instead: do the photos arrive immediately and without a wait, does the face match what it looked like last time, and does it work with the scenario you actually have in mind rather than only in the demo. Everything else is marketing.