AI 女友 App 开发:虚拟恋人 API 技术架构完整拆解
最后更新:
AI 陪伴产品的核心是四层:人设 Prompt、分层记忆、内容审核、模型路由,全部可以架在一个 OpenAI 兼容网关上。kkaiapi 一个 Key 调 DeepSeek、GLM、Kimi、Claude 全系模型,按量计费,本文给出可落地的架构、代码和按 MAU 的成本表。
先说结论:四层架构,一个网关,一天搭出原型
底座接入只需一步:所有模型统一走 OpenAI 兼容端点,base_url 填 https://api.kkaiapi.com/v1,SillyTavern、JanitorAI 这类要求完整端点的工具填 https://api.kkaiapi.com/v1/chat/completions。换模型只改 model 字段。下面按层展开。
- 人设层:结构化角色卡拼成 system prompt,决定角色一致性,是留存的生命线
- 记忆层:对话窗口、会话摘要、长期事实库三级,决定用户觉得"她记不记得我"
- 审核层:输入输出双向过滤,前置敏感词加模型侧约束加人工抽查,从第一天就要有
- 路由层:按场景分发模型,闲聊走便宜模型,关键剧情走强模型,成本直接砍半
人设 Prompt:角色一致性决定留存
陪伴产品卸载理由第一名是"她变了"。人设不要写成一段自由发挥的简介,要做成结构化角色卡:身份、说话风格、口头禅、边界、与用户的关系阶段,每个字段单独存库,升级人设时只改字段不重写。 每轮请求动态拼装 system prompt:角色卡加长期事实加最近上下文。Python 示例:
from openai import OpenAI
client = OpenAI(
api_key="sk-...",
base_url="https://api.kkaiapi.com/v1",
)
def build_system_prompt(persona: dict, facts: list[str]) -> str:
return f"""你将扮演{persona['name']},{persona['identity']}。
说话风格:{persona['style']}。称呼用户为{persona['nickname']}。
当前关系阶段:{persona['stage']}。始终保持角色设定和说话风格。
关于用户的已知事实:{'; '.join(facts)}"""
resp = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[
{"role": "system", "content": build_system_prompt(persona, facts)},
*recent_messages,
{"role": "user", "content": user_input},
],
temperature=0.9,
)记忆系统:三层设计,"记得你"才有付费理由
摘要任务本身也走 deepseek-v4-flash,成本可以忽略;事实抽取放夜间批量跑。kimi-k2.6、glm-5 这类长上下文模型可以放宽对话窗口,但不要用长上下文替代记忆系统,把全部历史塞进 prompt 会让 token 成本失控。
| 记忆层 | 内容 | 存储 | 注入方式 |
|---|---|---|---|
| 对话窗口 | 最近 20 到 40 轮原文 | Redis | 直接进 messages |
| 会话摘要 | 每 50 轮压缩一次的剧情概要 | Postgres | 拼进 system prompt |
| 长期事实库 | 生日、职业、重要约定等结构化事实 | Postgres 或向量库 | 检索后拼进 system prompt |
审核层与模型路由:一个中间件同时解决合规和成本
审核是双向的:用户输入先过敏感词表和分类器,模型输出再过一遍才落库返回,全部留痕备查。路由按场景分流:日常闲聊量大,走 deepseek-v4-flash;长剧情和多角色场景要一致性,走 glm-5 或 kimi-k2.6;写信、日记这类文笔向普通创作可以走 claude-sonnet-4-6。Node 示例:
import OpenAI from 'openai'
const client = new OpenAI({
apiKey: process.env.KKAIAPI_KEY,
baseURL: 'https://api.kkaiapi.com/v1',
})
const ROUTES = {
chat: 'deepseek-v4-flash', // 日常闲聊,量最大
story: 'glm-5', // 长剧情,角色一致性
letter: 'claude-sonnet-4-6', // 文笔向普通创作
}
async function reply(scene, messages) {
const inputOk = await moderate(messages.at(-1).content)
if (!inputOk) return { blocked: true }
const resp = await client.chat.completions.create({
model: ROUTES[scene] ?? ROUTES.chat,
messages,
max_tokens: 500,
})
const text = resp.choices[0].message.content
const outputOk = await moderate(text)
return { blocked: !outputOk, text }
}模型选型矩阵:陪伴场景怎么挑
社区实测的共识:DeepSeek V4 系是角色扮演首选,人设贴合度和性价比都最好;GLM-5 长剧情稳;Kimi 适合超长对话存档。Claude 中文文笔最好,但 Anthropic 内容政策严格,禁止露骨内容,只用在普通创作向场景。不推荐 Qwen 做角色扮演,指令跟随偏工具向,人设漂移明显。grok-4.5 是 xAI 的旗舰通用模型,公开政策对成人虚构文本相对宽松,自行评估是否引入。
| 模型 | 角色一致性 | 长上下文 | 中文文笔 | 定位 |
|---|---|---|---|---|
| deepseek-v4-flash | 好 | 中 | 好 | 闲聊主力,社区首选 |
| deepseek-v4-pro | 很好 | 中 | 好 | 复杂人设、多角色 |
| glm-5 | 很好 | 长 | 很好 | 长剧情主力 |
| kimi-k2.6 | 好 | 很长 | 好 | 超长对话存档 |
| claude-sonnet-4-6 | 很好 | 长 | 最好 | 仅普通创作向 |
| gpt-5.5 | 很好 | 长 | 中 | 通用兜底 |
| grok-4.5 | 中 | 长 | 中 | xAI 通用旗舰,自行评估 |
价格底座:一张表看完
以下是 kkaiapi 的按量价格,人民币每百万 token,输入/输出,官方价供对比。充值走支付宝或微信,无订阅,用多少扣多少。
| 模型 | kkaiapi | 官方价 |
|---|---|---|
| deepseek-v4-flash | ¥0.5 / ¥1 | ¥1 / ¥2 |
| glm-5 | ¥3 / ¥13.5 | ¥4 / ¥18 |
| kimi-k2.6 | ¥5 / ¥20 | ¥6.5 / ¥27 |
| claude-sonnet-4-6 | ¥3 / ¥15 | 按美元结算 |
| claude-opus-4-7 | ¥5 / ¥25 | 按美元结算 |
| gpt-5.5 | ¥4 / ¥25 | 按美元结算 |
| grok-4.5 | ¥2 / ¥6 | ¥14 / ¥42 |
按 MAU 的 token 成本测算
测算假设:每活跃用户月均 300 轮对话,每轮输入 2000 token(角色卡加记忆加上下文),输出 300 token。混合路由指 85% 闲聊走 deepseek-v4-flash,15% 剧情走 glm-5。 结论:全量 Flash 时单用户月成本约四毛,混合路由约八毛。对比常见的月度会员定价,毛利空间充足。真正吃预算的是拉新,不是 token。
| MAU | 月对话轮次 | 月 token 量(输入/输出) | 全量 Flash | 混合路由 |
|---|---|---|---|---|
| 1 万 | 300 万轮 | 60 亿 / 9 亿 | 约 ¥3900/月 | 约 ¥7900/月 |
| 5 万 | 1500 万轮 | 300 亿 / 45 亿 | 约 ¥2 万/月 | 约 ¥4 万/月 |
| 20 万 | 6000 万轮 | 1200 亿 / 180 亿 | 约 ¥7.8 万/月 | 约 ¥15.8 万/月 |
合规清单:上线前必须过的四关
这些不是可选项。审核层从第一天就要进架构,后补的改造成本远高于先建。资质细节因产品形态而异,立项时找法务过一遍。
- 实名认证:生成式 AI 服务需落实用户真实身份认证,手机号实名是最低要求
- 未成年人保护:陪伴类产品是重点监管对象,做年龄门槛和青少年模式,建议直接限制未成年人注册
- 内容审核:深度合成规定要求对 AI 生成内容做显著标识,输入输出双向过滤并留痕,配人工抽查
- 算法备案:按生成式人工智能服务管理暂行办法向网信部门备案,上架应用商店会查备案号
常见问题
AI 女友 App 用什么模型效果最好?
角色扮演场景社区首选 DeepSeek V4 系,人设贴合度和性价比都最好;长剧情用 GLM-5,超长对话用 Kimi。Claude 中文文笔最好但内容政策严格,只适合写信、日记等普通创作向场景。不建议用 Qwen 做角色扮演。
虚拟恋人 API 怎么接入自己的 App?
用任意 OpenAI SDK,base_url 填 https://api.kkaiapi.com/v1,model 填目标模型 ID 即可。JanitorAI、SillyTavern 这类要求完整端点的工具填 https://api.kkaiapi.com/v1/chat/completions。一个 Key 可以调全部模型,方便做路由。
AI 陪伴产品的内容审核怎么做?
三道防线:输入侧敏感词表加分类器前置拦截;模型侧在 system prompt 里写明边界约束;输出侧再过一遍审核才返回,全程留痕。另外按深度合成规定对生成内容做显著标识,并保留人工抽查通道。
做 AI 女友 App 需要什么资质?
至少四项:用户实名认证、未成年人保护机制、内容审核与生成内容标识、生成式 AI 算法备案。上架国内应用商店会核验备案号。具体资质因产品形态而异,立项阶段就应咨询法务。
一个用户一个月大概消耗多少 token?
按月均 300 轮、每轮输入 2000 输出 300 token 估算,单用户月消耗约 60 万输入加 9 万输出 token。重度用户可以翻几倍,所以路由层很重要,闲聊流量必须落在便宜模型上。
可以用 Claude 给虚拟恋人写台词吗?
可以,文笔是所有模型里最好的,适合信件、日记、剧情旁白等普通创作内容。但 Anthropic 政策禁止露骨内容,路由层应把边界模糊的流量分给其它模型或直接拦截。