ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

AI自我构建:从Prompt画像到数字分身的工程实践

AI自我构建:从Prompt画像到数字分身的工程实践 先分享一个让我印象很深的画面Barbara Kruger 最经典的作品《I shop therefore I am》里黑白照片之上压着一行刺眼的红色粗体字像一句话砸在观众脸上。她真正想讨论的不是“购物”而是“自我是由什么构成的”。如果把她那句标语放进 2025 年的语境也许可以改写成另一句话I prompt, therefore I am。这个改写不是玩梗。从 Barbara Kruger 的艺术实践到今天的大模型产品我们其实一直在做同一件事——用外部媒介重新定义“我是谁”。她的媒介是广告、摄影与文字排版我们的媒介变成了 Prompt、图像生成模型、数字分身和 AI Agent。这篇文章会把两条线索放在一起讲一条是艺术史上的自我构建逻辑另一条是 AI 工程里的自我构建实践。中间会穿插三个可以立刻运行的小实验帮你从代码层面理解“数字自我”是怎么被组装出来的。如果你对 AI 应用开发感兴趣或者正在做数字人、AI 人格化产品、个人知识库又或者只是好奇“AI 能不能表达一个人”这篇文章都值得读完。1. Barbara Kruger 与“自我构建”的艺术起点1.1 Barbara Kruger 是谁为什么她的作品与“自我”有关Barbara Kruger 是美国当代艺术家上世纪 80 年代凭借一系列图文拼贴作品成名。她的视觉语言非常容易辨认黑白摄影作底上面叠加红色或白色的 Futura Bold Oblique 字体常用矩形色块框住关键短语。她最有名的作品包括《I shop therefore I am》1990《Your body is a battleground》1989《We dont need another hero》1987这些作品与“自我构建”强相关因为它们都在处理一个问题你是谁是你自己决定的还是被消费符号、媒体话语、社会规则共同塑造的“I shop therefore I am”是对笛卡尔“我思故我在”的戏仿。芭芭拉·克鲁格想表达的是在现代消费社会里人们通过购买行为确立身份——买什么品牌、住什么小区、用什么手机这些消费标签拼合成一个“看起来像自我”的画像。她的作品并不是简单反对消费而是把这种“自我构建机制”暴露在观众眼前。用现在的话讲她做的是一种“算法透明化”把影响我们认知和身份的那套符号系统从背景里拎出来放到台面上。1.2 自我在艺术史中的三种构建方式顺着 Barbara Kruger 的作品往前看艺术史里对“自我”的处理大致有三种路径再现式自我构建古典肖像画是典型代表。画家通过容貌、服饰、背景物品来显示人物的社会身份与内在气质。这种构建由外部权威画师、赞助人完成被画者通常没有太多话语权。表现式自我构建现代主义以后艺术家开始用色彩、笔触、抽象符号表达内在情绪。自我不再是“被画出来的样子”而是“被表现出的状态”。代表作比如波洛克的滴画强调过程本身即是自我。批判式自我构建从 Barbara Kruger 到辛迪·舍曼艺术家开始剖析“自我”的虚构性。她们故意使用广告、电影、社交媒体等大众媒介的语言揭示我们的自我认知其实是被媒介格式预先设定好的。第三种路径与今天的 AI 状态高度重合。当我们在社交平台上编辑头像、签名、动态在 AI 工具里生成自己的数字分身时我们其实在用平台提供的模板构建自我。模板就是新的“广告话语”。这个洞察是整个工程的出发点自我构建从未消失只是换了媒介和工具。2. 当自我构建进入 AI 时代2.1 数字自我与传统自我的区别传统意义上的“自我”是连续、稳定、有记忆的。你昨天做了什么、今天如何反思、明天准备成为什么这些叙事一起构成“我是谁”的感觉。到了数字世界自我被拆成了更多碎片社交平台上的人设电商平台上的消费标签搜索引擎里的兴趣画像AI 聊天记录里沉淀的观点偏好。数字自我不再是单一叙事而是分散在不同系统中的数据集合。AI 恰恰是处理和重组这些数据最强的工具所以它很快参与到“自我构建”过程中。这里需要区分两个容易混淆的概念概念含义举例数字分身Digital Twin用数据模拟一个人的特征用于预测或替代语音克隆、形象克隆数字自我Digital Self个人在数字环境中的身份投射小红书主页、AI 人格设定AI 人格体AI Persona由提示词和模型参数共同生成的拟人化角色ChatGPT 自定义指令、角色卡你会看到AI 时代自我构建的关键动作已经从“记录生活”变成了“编写定义”。你需要主动告诉模型“我是谁”才能让模型生成符合你身份的回应。2.2 AI 参与自我构建的四个层次如果把 AI 自我构建看作一条技术路线通常可以拆成四个递进层次Prompt 画像层通过一段精心编写的提示词让大模型理解你的背景、偏好、表达方式和边界。这是成本最低、最易上手的层级。结构化记忆层把自我画像写成 JSON、YAML 或 Markdown 配置存储在本地或数据库中。每次会话加载保证一致性。生成式数字分身层使用 TTS、数字人视频合成、Stable Diffusion 等模型生成可交互的多模态分身。这一层开始涉及图像与音频工程。Agent 化自我层把画像、记忆和角色模型封装成 Agent赋予它工具调用能力让它替你执行任务、表达观点并在执行后把结果回写记忆库。从开发角度看第 2 层和第 4 层是工程价值最高的部分。第 1 层适合入门第 3 层依赖外部工具链而第 2、4 层决定了 AI 到底是在模仿你还是代替你。2.3 为什么开发者需要关注这个主题很多开发者会觉得“自我构建”是哲学或艺术问题和写代码没有直接关系。但实际上只要你想做以下任何一件事都会遇到它给大模型写一套长期有效的 System Prompt做 AI 聊天机器人的人设一致性做数字人直播或营销视频做个人知识库的问答希望回答风格像自己使用开源项目和云服务搭建个人 AI 助手。在这些场景里“自我”是一个需要被建模和工程化的对象。你不理解它的结构就会遇到同一个问题模型回答风格漂移、人设崩塌、记忆丢失或越界表达。这篇文章后面的实战部分就是为了解决这些问题。3. 实验环境准备3.1 运行环境与版本说明下面的三个实验不需要昂贵资源轻薄本就能跑通。组件推荐环境说明操作系统Windows 10/11、macOS 13、Ubuntu 22.04代码跨平台Python3.9 及以上实验一和实验三使用Pillow9.0 及以上图像生成pip install pillowOpenAI SDK / 大模型 API可选实验二需要大模型接口可用本地模型替代版本需要根据你的项目实际情况调整。尤其是大模型接口各家 API 更新速度非常快本文示例以常见环境为例重点演示配置思路而不是绑定某个具体平台。实验二里的 Prompt 模板不依赖固定 SDK你可以把它直接粘贴到 ChatGPT、通义千问、文心一言或者本地部署的模型中运行。3.2 项目目录结构ai_self_construction/ ├── src/ │ ├── make_kruger_poster.py # 实验一Kruger 风格海报生成 │ ├── self_image_prompt.py # 实验二自我画像 Prompt 模板 │ └── persona_config.json # 实验三数字分身结构配置 └── output/ └── self_construction_poster.png在工程实践中推荐把“提示词”“配置”“代码”拆开管理。提示词变化频率高适合单独建文件配置放 JSON 便于程序读取代码保持纯净不写死业务文案。4. 三个 AI 自我构建实验4.1 实验一用 Python 还原 Barbara Kruger 风格的海报4.1.1 代码实现第一个实验是用来建立“媒介即自我”直觉的既然 Barbara Kruger 用广告语言讨论自我那我们就用代码复刻她的海报然后把自己的宣言写进去。新建文件src/make_kruger_poster.pyfrom PIL import Image, ImageDraw, ImageFont def make_kruger_poster( text: str, output_path: str output/self_construction_poster.png, width: int 1000, height: int 750, ) - None: 生成一张类似 Barbara Kruger 风格的黑底红字海报。 image Image.new(RGB, (width, height), black) draw ImageDraw.Draw(image) # 优先加载系统中字体如果加载失败则使用默认字体 try: font ImageFont.truetype(Arial Bold.ttf, 56) except OSError: try: font ImageFont.truetype(/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf, 56) except OSError: font ImageFont.load_default() # 在四周绘制红色边框模仿 Kruger 常见的色块构图 border_width 12 draw.rectangle( [border_width, border_width, width - border_width, height - border_width], outlinered, widthborder_width, ) # 计算文本居中位置 bbox draw.textbbox((0, 0), text, fontfont) text_width bbox[2] - bbox[0] text_height bbox[3] - bbox[1] x (width - text_width) // 2 y (height - text_height) // 2 # 绘制主体文字 draw.text((x, y), text, fillred, fontfont) image.save(output_path) print(f海报已生成{output_path}) if __name__ __main__: make_kruger_poster(I prompt, therefore I am)这段代码核心逻辑只有三步创建黑色画布绘制红色描边矩形把宣言文字居中绘制到画布上。ImageDraw.textbbox用来计算文字真实占用的宽高从而保证在不同字体和长度下文字都不会跑出画面边界。4.1.2 运行结果与扩展在项目根目录运行python src/make_kruger_poster.py预期输出海报已生成output/self_construction_poster.png打开图片会看到一张黑底、红框、红字的极简海报。虽然无法还原 Barbara Kruger 照片底图和 Futura 字体的全部质感但整体视觉语言已经具备了同款的“宣言感”。如果想进一步扩展可以做三件事把文字替换成用户自定义输入用input()读取使用requests下载一张黑白摄影图作为底图再用Image.blend叠加颜色把多句宣言做成海报序列直观呈现一个人在不同阶段的自我表达变化。从这个实验可以看到媒介格式会影响表达内容。同样是“I prompt, therefore I am”用黑色背景红字印出来和用聊天框里的普通字体打出来给人的理解完全不同。艺术意义上的“自我构建”在代码层面已经开始了。4.2 实验二用 Prompt 构建 AI 自我画像4.2.1 Prompt 设计要点第二个实验回到工程核心我们如何用语言让 AI 理解一个“非默认”的自我如果只是对模型说“你是一个乐于助人的助手”得到的人设就是通用的。想让模型更贴近某个真实个体需要更精细的 Prompt 结构。一个成熟的自我画像 Prompt 至少需要包含以下五个部分角色身份你是谁的助手、代表谁发言。背景信息对方的职业、经历、使用场景。表达风格语气、句式、用词偏好甚至是否使用 emoji。价值观与边界哪些话题可以聊、哪些不能碰、遇到冲突时怎么回应。记忆策略哪些信息应该被记住哪些只用于当次会话。很多 AI 产品人设崩塌不是因为模型能力不行而是因为这五个部分至少有一个缺失。比如只写了“你是我的助手”没有写明边界模型在敏感话题上就会自由发挥。4.2.2 完整 Prompt 模板把下面这段模板保存为src/self_image_prompt.pySELF_IMAGE_PROMPT 你正在协助一位用户构建“数字自我”。请基于以下要求完成自我画像 【角色身份】 - 你是用户的数字分身助手。 - 你的首要任务是理解用户的背景而不是立刻给出建议。 【用户背景】 {user_background} 【表达风格】 - 语气保持自然、具体避免空泛夸奖。 - 使用短句表达观点必要时可以补充案例。 - 当信息不足时主动提出两个澄清问题不要替用户默认答案。 【价值观与边界】 - 不替代用户做重大决定。 - 不虚构用户没有提供的人生经历。 - 对涉及隐私的信息只做总结不做扩散。 【输出格式】 请用三段输出 1. 一句话概括这位用户的当前核心身份。 2. 一个比喻说明他的数字自我像什么。 3. 三项他希望在 AI 协作中保持的个人原则。 现在开始。 def render_self_image_prompt(user_background: str) - str: 把用户背景注入 Prompt 模板。 return SELF_IMAGE_PROMPT.format(user_backgrounduser_background) if __name__ __main__: background ( 我是一位后端工程师最近在搭建个人 AI 助手。 我希望助手能理解我的技术路线和写作风格同时不要过度用敬语。 ) print(render_self_image_prompt(background))运行python src/self_image_prompt.py拿到模板后你可以把它提交给任意大模型观察生成的自我画像是否准确。这个 Prompt 没有绑定特定 SDK所以更换模型成本极低。关键点在于这段 Prompt 本身也是一种“自我构建”——它把你对自己理解写成了可控代码。写 Prompt 的过程和 Barbara Kruger 制作标语的过程一样你在选择把哪些信息放大、哪些信息隐藏。不同的写法会生成完全不同的“数字自我”。4.3 实验三用结构化配置管理数字分身4.3.1 配置结构设计Prompt 适合描述“风格”但如果你的 AI 助手需要长期运行最好把自我画像转换成结构化配置。这样做有三个好处机器可读方便在会话启动时自动加载可版本化便于对比不同时期的人格设定可校验用脚本检查配置是否有缺失字段。新建src/persona_config.json{ profile: { name: digital_self, version: 0.1.0, description: 用户数字自我的结构化描述, core_identity: 后端工程师个人AI助手制作者, values: [ 保留人的最终决策权, 尊重事实与数据, 避免空泛标签 ] }, communication: { tone: 自然、具体、避免过度敬语, style: 短句优先案例辅助, response_format: markdown }, memory: { storage_type: local_json, enabled: true, max_memory_items: 200 }, boundaries: { prohibited_topics: [], decision_authority: user_final_approval }, permissions: { run_shell_command: false, read_local_files: true, call_external_api: false } }这份配置把 Prompt 里模糊的定义变成了可直接运行的工程参数。values数组表达价值取向boundaries定义红线permissions明确工具权限。即使你不写一行 Agent 代码这份文件也能帮助你在不同 AI 产品里复用人设。4.3.2 本地验证脚本新建src/validate_persona.pyimport json def validate_persona(path: str) - list[str]: 检查 persona 配置是否缺少关键字段。 required_sections [profile, communication, memory, boundaries, permissions] errors [] with open(path, r, encodingutf-8) as f: config json.load(f) for section in required_sections: if section not in config: errors.append(f缺少字段: {section}) if profile in config: profile config[profile] for field in [name, version, core_identity]: if field not in profile: errors.append(fprofile 缺少字段: {field}) return errors if __name__ __main__: errs validate_persona(src/persona_config.json) if errs: print(配置校验失败) for e in errs: print( -, e) else: print(配置校验通过)运行结果python src/validate_persona.py预期输出配置校验通过这个脚本看起来简单但它是“自我构建”工程化的关键一步把不可见的人格设定变成可测试的代码。以后想调整数字自我的性格不需要改对话历史只需要修改 JSON 里的某个value。5. 常见问题与排查思路我在实际搭建 AI 自我构建项目时遇到过不少问题。排除掉模型本身的随机性大部分故障根源都集中在配置和上下文管理上。问题现象常见原因解决思路模型回答风格漂移没有在每次会话重复加载 Prompt 或配置在会话初始化时强制加载 persona 配置数字分身开始胡编经历Prompt 未说明“不虚构用户没有提供的人生经历”在边界字段中加入反幻觉声明记忆内容混乱大量历史记录未做结构化处理使用 JSON 存储控制单条记忆长度生成海报时字体报错系统中没有指定字体文件添加多路径字体加载 fallback模型不遵循边界设置边界放在 Prompt 末尾容易被长对话覆盖将边界字段同时写入 system prompt 和配置隐私信息被扩散配置中 permissions 给的太宽关闭 shell 执行权限改用最小授权补充两个排查原则先复现再修复。如果模型行为异常保留触发问题的输入在最小化会话里重新复现。把 Anthropic 的“宪法式行为”思路用于工程把规则写清楚、可检查而不是依靠模型自觉。6. 工程实践与边界意识6.1 自我画像的一致性与版本管理做数字自我和做软件一样需要版本管理。推荐把persona_config.json纳入 Git 仓库每次修改都提交一个版本。这样当新的画像不符合预期时可以快速回滚。版本号建议采用语义化规范主版本人格重大调整 次版本新增风格或边界 补丁修正描述或补充信息例如0.1.0变成0.2.0表示新增了表达风格配置而0.1.1只是修正了一个错别字。6.2 隐私与数据安全边界数字自我往往携带大量私人信息。工程上应遵循最小权限原则不要把所有个人数据写入一个全局 Prompt访问本地文件、外部 API、执行命令必须显式授权涉及生产环境或他人数据时先做脱敏再校验输出如果要部署到公网务必在网关层做身份认证避免数字分身接口被匿名调用。任何涉及删除、修改个人数据或对外发布内容的操作都应保留人工确认环节。前面配置中decision_authority: user_final_approval就是这个意图。6.3 防止 AI 幻觉侵蚀自我认知AI 自我构建最大的隐患不是技术跑不通而是模型用幻觉信息“反向塑造”你对自我的认知。比如模型说你“擅长数据分析”但实际上你很少做这项工作这种不准确输出如果被当成结论就会污染数字自我的真实性。在工程上可以通过三种方式缓解在 Prompt 中明确写出“只能使用用户提供的背景信息”对模型生成的个人总结进行人工审核定期清理记忆库删除引用置信度较低的历史记录。6.4 生产环境中的授权与审计如果数字自我要部署到生产环境注意做好三个地方身份认证接口必须验证调用者身份操作审计记录每一次决策和工具调用数据备份定期导出人格配置和记忆库防止意外丢失。这些不是可选优化而是 AI 应用进入真实使用场景的底线。7. 从 Barbara Kruger 到 AI自我构建的下一个端口从 Barbara Kruger 的海报到今天的 AI 数字分身媒介在变核心问题没有变我们如何定义自己以及谁有权定义我们。Barbara Kruger 用红色字体放大消费主义对人的规训今天的开发者用 Prompt 和配置文件定义数字人格。两者在结构上有惊人的相似都需要选择、都需要裁剪、都需要承担“被误解”的风险。区别在于现在的创作者不只是艺术家还包括无数写提示词、调接口、建记忆库的工程师。如果你准备动手做自己的数字自我我的建议是从最小的实验开始先生成一张 Kruger 风格海报再写一段自我画像 Prompt最后用 JSON 把画像固定下来。三步走完你就已经完成了从“被媒介定义”到“用媒介定义自己”的第一步。下一步可以继续研究 Agent 开发把数字自我封装成能调用工具的智能体也可以研究多模态生成给数字自我加上声音和形象还可以深入模型部署把数字分身跑在自己的服务器上完全掌控数据与人格边界。最好的方式是自己动手跑一遍。等你的数字自我第一次准确表达出你的真实想法时你可能会重新理解 Barbara Kruger 那句话——自我从来不是被发现的东西而是被构建出来的工程。
返回列表