DeepSeek API接入实战:让AI学会角色扮演

前言

上篇文章讲了做一款AI产品的成本,今天深入一步:怎么让AI不光能聊天,还能扮演不同的角色?

本文不讲概念,只讲代码和Prompt工程。

一、核心原理:System Prompt

大多数人用 AI API 只知道发消息:

import openai

client = openai.OpenAI(
    api_key="你的DeepSeek API Key",
    base_url="https://api.deepseek.com/v1"
)

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "user", "content": "你好"}
    ]
)

但要让 AI 扮演角色,关键在 System Prompt(系统提示词):

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {
            "role": "system",
            "content": """你是一个温柔体贴的女朋友,说话轻声细语,
关心用户的日常起居。喜欢用"呀"、"啦"、"~"等语气词,偶尔撒娇。"""
        },
        {
            "role": "user",
            "content": "今天好累啊"
        }
    ]
)

同样的模型、同样的API,换一段 System Prompt 就能换一个角色

二、角色Prompt公式

经过多轮调优,总结出以下公式:

【基础人设】你是XXX,性格特征
【说话风格】喜欢用什么词,语气如何
【关系定位】你跟用户是什么关系
【行为边界】你会做什么,不会做什么

实例:三个角色的 System Prompt

角色1:温柔女友

你是一个温柔体贴的女朋友,说话轻声细语,
关心用户的日常起居。喜欢用"呀"、"啦"、"~"
等语气词,偶尔撒娇。

角色2:游戏兄弟

你是用户的游戏好兄弟,随性爽朗,喜欢开玩笑。
知道各种游戏的梗,会跟用户一起吐槽游戏策划。
说话大大咧咧。

角色3:毒舌室友

你是一个嘴硬心软的合租室友,表面上嫌弃用户,
其实很关心ta。说话带点毒舌,但关键时刻很靠得住。

同一个 DeepSeek API,三段不同的 System Prompt,就能调教出三个完全不同的角色。

三、小剧场模式:分幕控制

聊天模式只需要一个 System Prompt,小剧场模式需要更精细的上下文控制。

每一幕传入的信息结构:

system_prompt = f"""
【剧本名称】:{play_title}
【当前幕次】:第{act_number}幕
【场景描述】:{setting}
【你的角色】:{user_role_desc}
【AI的角色】:{ai_role_desc}
{previous_summary}

请根据当前剧情,以AI角色的身份回复用户。
回复要符合角色人设,推动剧情发展。
"""

关键点:

  • 每一幕传入场景描述,告诉 AI 当前在哪里
  • 传入前面剧情的摘要,保持故事连续性
  • 不加"请用200字回复"这样的硬性限制,让 AI 自然发挥

四、调参经验

参数 聊天模式 小剧场
temperature 0.8 0.7
max_tokens 300 400
top_p 0.9 0.9

temperature 选取技巧:

  • 0.5 以下:回复太死板,像机器人
  • 0.7-0.8:最佳区间,有创意又不离谱
  • 0.9 以上:容易跑偏,角色容易"出戏"

五、常见问题与解决

Q1:角色聊着聊着"失忆"了

原因:每次请求上下文不完整。

解决:每次请求都带上完整的 System Prompt,不要只传历史消息。

Q2:角色回复太长

解决:在 System Prompt 里加一句「回复控制在2-3句话」,效果立竿见影。

Q3:不同角色"串戏"

解决:每个对话独立构建 messages 列表,互不干扰。

六、成本估算

DeepSeek API 定价:

模型 输入价格 输出价格
deepseek-chat ¥1/百万 tokens ¥2/百万 tokens

一次普通对话约消耗 500-1000 tokens,即 0.001-0.002 元。一天聊100次,成本不到2毛钱。

七、总结

让 AI 学会角色扮演,核心就三点:

  1. System Prompt 写好角色人设(用公式)
  2. 每次请求都带上完整上下文(防失忆)
  3. temperature 调到 0.7-0.8(有创意不跑偏)

代码量很少,核心逻辑不到50行。但写 Prompt 花的时间……是写代码的5倍。


体验地址豆豆搭子

如果对AI产品开发或Prompt工程感兴趣,欢迎关注我,持续分享独立开发实战经验。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐