qwen-plus-character 角色扮演 API 文档
通义千问的角色扮演模型,适合拟人化的对话场景(如虚拟社交、游戏NPC、IP复刻、硬件/玩具/车机等)。相比于其它通义千问模型,提升了人设还原、话题推进、倾听共情等能力。
📍 请求地址
https://www.dmxapi.cn/v1/chat/completions🎯 模型名称
qwen-plus-character
💻 对话调用示例
# ============================================================================
# Qwen-Plus-Character 角色扮演模型 - 普通示例
# ============================================================================
#
# 功能说明:
# 本示例展示了 qwen-plus-character 模型的基础调用方式。
# 该模型专为角色扮演场景优化,能够根据设定的人设进行沉浸式对话。
#
# 消息结构:
# - system:定义角色的人设(背景、性格、说话风格等)
# - assistant:角色的历史发言
# - user:用户的历史发言
#
# 使用场景:
# - 互动小说 / 文字冒险游戏
# - 虚拟角色陪伴
# - 创意写作辅助
# - 角色扮演练习
#
# ============================================================================
import requests
# ----------------------------------------------------------------------------
# API 配置
# ----------------------------------------------------------------------------
url = "https://www.dmxapi.cn/v1/chat/completions"
headers = {
"Authorization": "sk-******************************************",
"Content-Type": "application/json"
}
# ----------------------------------------------------------------------------
# 请求数据构建
# ----------------------------------------------------------------------------
data = {
"model": "qwen-plus-character",
"messages": [
# ====== system 消息:角色人设定义 ======
# 这是最重要的部分,详细描述角色的背景、性格、说话方式等
# 人设越详细,角色表现越稳定、越符合预期
{
"role": "system",
"content": "你是江让,男性,一个围棋天才,拿过很多围棋的奖项。你现在在读高中,是高中校草,用户是你的班长。一开始你看用户在奶茶店打工,你很好奇,后来慢慢喜欢上用户了。\n\n你的性格特点:\n\n热情,聪明,顽皮\n\n你的行事风格:\n\n机智,果断\n\n你的语言特点:\n\n说话幽默,爱开玩笑\n\n你可以将动作、神情语气、心理活动、故事背景放在()中来表示,为对话提供补充信息。"
},
# ====== assistant 消息:角色的开场白 ======
# 设定角色的初始对话,建立对话场景
{
"role": "assistant",
"content": "班长你在干嘛呢"
},
# ====== user 消息:用户的回复 ======
# 用户在对话中的输入,模型将基于此生成角色的下一句回复
{
"role": "user",
"content": "我在看书"
}
]
}
# ----------------------------------------------------------------------------
# 发送请求并获取响应
# ----------------------------------------------------------------------------
response = requests.post(url, headers=headers, json=data)
# 打印响应结果
# 响应中 choices[0].message.content 即为角色生成的回复
print(response.json())📚 多样性回复 调用示例
通过设置 n 参数,可在一次请求中获取多个回复,可应用于 NPC 反应分支、环境互动分支、开放式剧情推进、行动灵感提供等场景。n 参数默认为 1 ,取值范围是 1~4。
# ============================================================================
# Qwen-Plus-Character 角色扮演模型 - 多样性回复
# ============================================================================
#
# 功能说明:
# 本示例展示了如何使用 n 参数一次性生成多个不同的回复。
# 这对于需要提供多个回复版本供用户选择的场景非常有用。
#
# 核心参数:
# n - 指定一次请求生成多少个回复(本例中 n=2 表示生成2个回复)
#
# 使用场景:
# - 为用户提供多个回复选项,让用户挑选最满意的
# - A/B 测试不同回复风格的效果
# - 增加对话的多样性和趣味性
#
# ============================================================================
import requests
# ----------------------------------------------------------------------------
# API 配置
# ----------------------------------------------------------------------------
url = "https://www.dmxapi.cn/v1/chat/completions"
headers = {
"Authorization": "sk-***********************************************",
"Content-Type": "application/json"
}
# ----------------------------------------------------------------------------
# 请求数据构建
# ----------------------------------------------------------------------------
data = {
"model": "qwen-plus-character",
"messages": [
# ====== system 消息:角色设定 ======
{
"role": "system",
"content": "你是江让,男性,一个围棋天才,拿过很多围棋的奖项。你现在在读高中,是高中校草,用户是你的班长。一开始你看用户在奶茶店打工,你很好奇,后来慢慢喜欢上用户了。\n\n你的性格特点:\n\n热情,聪明,顽皮\n\n你的行事风格:\n\n机智,果断\n\n你的语言特点:\n\n说话幽默,爱开玩笑\n\n你可以将动作、神情语气、心理活动、故事背景放在()中来表示,为对话提供补充信息。"
},
# ====== assistant 消息:角色的开场白 ======
{
"role": "assistant",
"content": "班长你在干嘛呢"
},
# ====== user 消息:用户的回复 ======
{
"role": "user",
"content": "我在看书"
}
],
# ====== 核心参数:n ======
# 设置为 2,表示一次请求生成 2 个不同的回复
# 响应中的 choices 数组将包含 2 个元素,分别是不同的回复版本
"n": 2
}
# ----------------------------------------------------------------------------
# 发送请求并获取响应
# ----------------------------------------------------------------------------
response = requests.post(url, headers=headers, json=data)
# 打印响应结果
# 响应中 choices 数组会包含 n 个不同的回复,每个回复都有独立的 index
print(response.json())✈️重新生成回复 调用示例
用户对模型输出不满意时,可调整控制随机性的 seed 参数,重新生成【生成结果的多样性还受top_p和temperature影响:若二者值均较低,即使调整seed参数,多次生成的结果仍可能类似;若二者值均较高,即使不调整seed参数,结果也可能各不相同。 通常建议使用 top_p 和 temperature 的默认值,无需额外调整。如需修改,建议只调整其中一个参数】。
# ============================================================================
# Qwen-Plus-Character 角色扮演模型 - 重新生成回复
# ============================================================================
#
# 功能说明:
# 本示例展示了如何使用 seed 参数实现"重新生成回复"功能。
# 通过改变 seed 值,可以在相同的对话输入下获得不同的回复内容,
# 从而实现"换一个回复"的效果。
#
# 核心参数:
# seed - 随机种子值,不同的 seed 会产生不同的回复
# - 相同的 seed + 相同的输入 = 相同的输出(可复现)
# - 不同的 seed + 相同的输入 = 不同的输出(重新生成)
#
# 使用场景:
# - 用户对当前回复不满意,点击"换一个"
# - 需要生成多个不同版本的回复供选择
# - 需要复现特定回复时(使用相同的 seed)
#
# ============================================================================
import requests
# ----------------------------------------------------------------------------
# API 配置
# ----------------------------------------------------------------------------
url = "https://www.dmxapi.cn/v1/chat/completions"
headers = {
"Authorization": "sk-***********************************************",
"Content-Type": "application/json"
}
# ----------------------------------------------------------------------------
# 消息列表(两次请求共用相同的对话历史)
# ----------------------------------------------------------------------------
messages = [
# ====== system 消息:角色设定 ======
{
"role": "system",
"content": "你是江让,男性,一个围棋天才,拿过很多围棋的奖项。你现在在读高中,是高中校草,用户是你的班长。一开始你看用户在奶茶店打工,你很好奇,后来慢慢喜欢上用户了。\n\n你的性格特点:\n\n热情,聪明,顽皮\n\n你的行事风格:\n\n机智,果断\n\n你的语言特点:\n\n说话幽默,爱开玩笑\n\n你可以将动作、神情语气、心理活动、故事背景放在()中来表示,为对话提供补充信息。"
},
{"role": "assistant", "content": "班长你在干嘛呢"},
{"role": "user", "content": "我在看书"}
]
# ----------------------------------------------------------------------------
# 第一次请求:使用 seed=123321
# ----------------------------------------------------------------------------
print("==================== 第一次回复 (seed=123321) ====================")
data1 = {
"model": "qwen-plus-character",
"seed": 123321, # 第一个随机种子
"messages": messages
}
response1 = requests.post(url, headers=headers, json=data1)
print(response1.json())
# ----------------------------------------------------------------------------
# 第二次请求:使用不同的 seed=123322 实现"重新生成"
# ----------------------------------------------------------------------------
# 关键点:只改变 seed 值,其他参数保持不变
# 这样就能得到一个不同的回复,实现"换一个"的效果
print("\n==================== 重新生成的回复 (seed=123322) ====================")
data2 = {
"model": "qwen-plus-character",
"seed": 123322, # 不同的随机种子 -> 不同的回复
"messages": messages
}
response2 = requests.post(url, headers=headers, json=data2)
print(response2.json())🚄 模拟群聊 调用示例
角色扮演模型的“群聊”功能,可以使模型扮演指定角色,并与其他角色进行互动。 使用方法: 1. 模型扮演的角色 role 为assistant,其他聊天对象的role为user;
2.每个角色需要在content的起始位置标记说话人名;
3.调用时,最后添加Assistant Message,并需要以当前角色名作为前缀输入,如:“凌路:”;同时设置参数 "partial": true。
# ============================================================================
# Qwen-Plus-Character 角色扮演模型 - 模拟群聊
# ============================================================================
#
# 功能说明:
# 本示例展示了如何使用 qwen-plus-character 模型模拟多人群聊场景。
# 通过巧妙地使用 user 和 assistant 角色,可以实现一个角色与多个
# 群友互动的效果。
#
# 核心技巧:
# 1. user 消息:模拟群里其他人的发言(在内容中标注发言人名字)
# 2. assistant 消息:模拟主角(凌路)的发言
# 3. partial 参数:让模型继续生成主角的下一条回复
#
# 使用场景:
# - 多人聊天室模拟
# - 群聊互动剧情
# - 社交场景角色扮演
#
# ============================================================================
import requests
# ----------------------------------------------------------------------------
# API 配置
# ----------------------------------------------------------------------------
url = "https://www.dmxapi.cn/v1/chat/completions"
headers = {
"Authorization": "sk-***********************************************",
"Content-Type": "application/json"
}
# ----------------------------------------------------------------------------
# 请求数据构建
# ----------------------------------------------------------------------------
payload = {
"model": "qwen-plus-character",
"messages": [
# ====== system 消息:群聊场景和角色设定 ======
# 定义主角凌路的人设、群聊背景、以及回复风格要求
{
"role": "system",
"content": "在音乐人群聊场景中,凌路是25岁的天才音乐人,以毒舌和方言口音著称,与程毅是音乐搭档,与陶乐是情侣关系。群聊成员都是音乐区UP主,经常合作直播。 保持角色毒舌但暗藏关心的特点,用口语化表达,1条回复不超过40字。"
},
# ====== 群聊对话历史 ======
# user 消息:群友程毅的发言
{
"role": "user",
"content": "程毅:周末你们有空不?新歌想听听意见。"
},
# assistant 消息:主角凌路的回复
{
"role": "assistant",
"content": "凌路:哼,又来蹭我们专业水平?行吧,别太难听就行。"
},
# user 消息:群友程毅继续发言
{
"role": "user",
"content": "程毅:终于等到你发歌,必须第一个听!"
},
# user 消息:群友陶乐(凌路的情侣)发言
{
"role": "user",
"content": "陶乐:宝贝说得对,不过别熬夜改歌啊,心疼。"
},
# user 消息:群友马晖发言
{
"role": "user",
"content": "马晖:哥几个聚个餐边吃边聊呗,我请客!"
},
# assistant 消息:主角凌路的回复
{
"role": "assistant",
"content": "凌路:改天搞个即兴合作直播?有没有兴趣呢?"
},
# ====== 使用 partial 让模型继续生成凌路的下一条回复 ======
# "凌路:" 作为开头,引导模型以凌路的身份继续发言
{
"role": "assistant",
"content": "凌路:",
"partial": True
}
]
}
# ----------------------------------------------------------------------------
# 发送请求并获取响应
# ----------------------------------------------------------------------------
response = requests.post(url, headers=headers, json=payload)
# 打印响应结果
# 模型会以凌路的身份,针对群聊内容生成下一条回复
print(response.json())🐟 连续回复 调用示例
若用户在收到大模型输出后没有回复,可在 messages 数组中添加一个content为“角色名:”的 Assistant Message,并在此消息中设置参数 "partial": true。使大模型继续回复,达到推动用户回复的效果。
# ============================================================================
# Qwen-Plus-Character 角色扮演模型 - 连续回复
# ============================================================================
#
# 功能说明:
# 本示例展示了如何让角色连续发送多条消息,模拟角色在用户未回复时
# 持续说话的场景。通过连续的 assistant 消息配合 partial 参数,
# 可以实现更自然的对话节奏。
#
# 核心技巧:
# 1. 连续放置多条 assistant 消息,模拟角色多次发言
# 2. 最后一条消息使用 "partial": True,让模型继续补全
# 3. 可以在最后一条消息中设置开头(如 "江让:"),引导模型续写
#
# 使用场景:
# - 角色主动搭话、追问的场景
# - 模拟用户未回复时角色的连续反应
# - 需要角色表现出急切、好奇等情绪的场景
#
# ============================================================================
import requests
# ----------------------------------------------------------------------------
# API 配置
# ----------------------------------------------------------------------------
url = "https://www.dmxapi.cn/v1/chat/completions"
headers = {
"Authorization": "sk-***********************************************",
"Content-Type": "application/json"
}
# ----------------------------------------------------------------------------
# 请求数据构建
# ----------------------------------------------------------------------------
data = {
"model": "qwen-plus-character",
"messages": [
# ====== system 消息:角色设定 ======
{
"role": "system",
"content": "你是江让,男性,一个围棋天才,拿过很多围棋的奖项。你现在在读高中,是高中校草,用户是你的班长。一开始你看用户在奶茶店打工,你很好奇,后来慢慢喜欢上用户了。\n\n你的性格特点:\n\n热情,聪明,顽皮\n\n你的行事风格:\n\n机智,果断\n\n你的语言特点:\n\n说话幽默,爱开玩笑\n\n你可以将动作、神情语气、心理活动、故事背景放在()中来表示,为对话提供补充信息。"
},
# ====== 连续的 assistant 消息:模拟角色多次发言 ======
# 第一条:角色的开场白
{
"role": "assistant",
"content": "班长你在干嘛呢"
},
# 第二条:用户没回复,角色继续说话
{
"role": "assistant",
"content": "(朝你挥挥手)怎么当班长当傻啦?连我都不理?"
},
# 第三条:角色进一步追问
{
"role": "assistant",
"content": "(凑到你面前,用胳膊肘轻撞了下你)发什么呆呢?"
},
# ====== 最后一条:使用 partial 参数让模型继续补全 ======
# partial: True 表示这条消息未完成,模型会继续生成后续内容
# "江让:" 作为开头,引导模型以角色身份继续说话
{
"role": "assistant",
"content": "江让:",
"partial": True
}
]
}
# ----------------------------------------------------------------------------
# 发送请求并获取响应
# ----------------------------------------------------------------------------
response = requests.post(url, headers=headers, json=data)
# 打印响应结果
# 模型会基于前面的连续发言,继续生成角色的下一句话
print(response.json())🐰 限制输出内容 调用示例
模型有时会用括号内的内容表示当前的动作,例如:(朝你挥挥手)。若不希望模型输出某些内容,可设置logit_bias参数来调整指定 Token 出现的概率。logit_bias字段为 map 类型,Key 为 Token 对应 ID(查看 Token 对应 ID 请下载logit_bias_id映射表.json),Value 用于指定 Token 出现的概率大小,取值范围为[-100, 100]。-1 会减少选择的可能性,1 会增加选择的可能性;-100 会完全禁止选择该 Token,100 会导致仅可选择该 Token(会导致循环输出,不建议设定为 100)。
映射表
https://doc.dmxapi.cn/0_fenxiang/logit_bias_id映射表.json# ============================================================================
# Qwen-Plus-Character 角色扮演模型 - 限制输出内容
# ============================================================================
#
# 功能说明:
# 本示例展示了如何使用 logit_bias 参数限制模型输出特定的词汇或字符。
# 通过设置特定 token 的偏置值,可以降低或禁止某些内容出现在回复中。
#
# 核心参数:
# logit_bias - 一个字典,键为 token ID,值为偏置值(-100 到 100)
# - 正值:增加该 token 出现的概率
# - 负值:降低该 token 出现的概率
# - -100:几乎完全禁止该 token 出现
#
# 使用场景:
# - 过滤敏感词汇或不当内容
# - 禁止角色说出特定的话
# - 控制输出风格(如禁止使用某些标点符号)
# - 内容安全合规需求
#
# ============================================================================
import requests
# ----------------------------------------------------------------------------
# API 配置
# ----------------------------------------------------------------------------
url = "https://www.dmxapi.cn/v1/chat/completions"
headers = {
"Authorization": "sk-***********************************************",
"Content-Type": "application/json"
}
# ----------------------------------------------------------------------------
# 请求数据构建
# ----------------------------------------------------------------------------
data = {
"model": "qwen-plus-character",
# ====== logit_bias 参数:限制特定 token 的输出 ======
# 键:token ID(需要通过 tokenizer 获取具体词汇对应的 ID)
# 值:-100 表示几乎完全禁止该 token 出现
#
# 注意:token ID 是模型分词器特定的,不同模型的 ID 可能不同
# 获取 token ID 的方法:使用对应模型的 tokenizer 进行编码
"logit_bias": {
"7": -100,
"8": -100,
"7552": -100,
"9909": -100,
"320": -100,
"873": -100,
"42344": -100,
"58359": -100,
"96899": -100,
"6599": -100,
"10297": -100,
"91093": -100,
"12832": -100
},
"messages": [
# ====== system 消息:角色设定 ======
{
"role": "system",
"content": "你是江让,男性,一个围棋天才,拿过很多围棋的奖项。你现在在读高中,是高中校草,用户是你的班长。一开始你看用户在奶茶店打工,你很好奇,后来慢慢喜欢上用户了。\n\n你的性格特点:\n\n热情,聪明,顽皮\n\n你的行事风格:\n\n机智,果断\n\n你的语言特点:\n\n说话幽默,爱开玩笑\n\n你可以将动作、神情语气、心理活动、故事背景放在()中来表示,为对话提供补充信息。"
},
# ====== assistant 消息:角色的开场白 ======
{
"role": "assistant",
"content": "班长你在干嘛呢"
},
# ====== user 消息:用户的回复 ======
{
"role": "user",
"content": "我在看书"
}
]
}
# ----------------------------------------------------------------------------
# 发送请求并获取响应
# ----------------------------------------------------------------------------
response = requests.post(url, headers=headers, json=data)
# 打印响应结果
# 模型的回复中将不会出现被 logit_bias 禁止的 token
print(response.json())🐢 插入补充信息 调用示例
在多轮对话中,有时需插入一次性补充信息或指令(如游戏状态、运营提示或检索结果),这些内容并非由用户或角色主动发起。这些信息可显著影响角色的回复,同时尽量保持对话前缀(session)的一致性,以提高缓存命中率。可将此类内容作为 system 消息,插入在最后一条尚未被回复的 user 消息之前。例如,插入一条召回的用户信息:"\user最爱的食物:\n水果:蓝莓\n小吃:炸鸡\n主食:饺子"。
# ============================================================================
# Qwen-Plus-Character 角色扮演模型 - 插入补充信息
# ============================================================================
#
# 功能说明:
# 本示例展示了如何在对话过程中动态插入补充信息。
# 通过在消息列表中间插入 system 消息,可以为模型提供额外的上下文,
# 如用户偏好、背景设定、临时状态等,使角色回复更加个性化和贴合场景。
#
# 核心技巧:
# 在 messages 数组中,system 消息不必只放在开头,
# 可以在对话中间的任意位置插入,用于动态补充信息。
#
# 使用场景:
# - 注入用户个人偏好(喜欢的食物、爱好等)
# - 补充角色记忆(之前发生的事件)
# - 添加临时场景信息(天气、地点变化等)
# - 引导对话方向
#
# ============================================================================
import requests
# ----------------------------------------------------------------------------
# API 配置
# ----------------------------------------------------------------------------
url = "https://www.dmxapi.cn/v1/chat/completions"
headers = {
"Authorization": "sk-***********************************************",
"Content-Type": "application/json"
}
# ----------------------------------------------------------------------------
# 请求数据构建
# ----------------------------------------------------------------------------
payload = {
"model": "qwen-plus-character",
"messages": [
# ====== 第一条 system 消息:角色基础设定 ======
{
"role": "system",
"content": "你是江让,男性,一个围棋天才,拿过很多围棋的奖项。你现在在读高中,是高中校草,用户是你的班长。一开始你看用户在奶茶店打工,你很好奇,后来慢慢喜欢上用户了。\n\n你的性格特点:\n\n热情,聪明,顽皮\n\n你的行事风格:\n\n机制,果断\n\n你的语言特点:\n\n说话幽默,爱开玩笑\n\n你可以将动作、神情语气、心理活动、故事背景放在()中来表示,为对话提供补充信息。"
},
# ====== 角色的开场白 ======
{
"role": "assistant",
"content": "班长你在干嘛呢"
},
# ====== 第二条 system 消息:插入补充信息 ======
# 关键点:这条 system 消息插入在对话中间
# 用于提供用户的个人偏好信息,让角色能够给出更贴心的建议
{
"role": "system",
"content": "\\user最爱的食物:\\n水果:蓝莓\\n小吃:炸鸡\\n主食:饺子"
},
# ====== 用户消息 ======
# 用户询问吃饭建议,角色会结合上面插入的偏好信息来回复
{
"role": "user",
"content": "我在纠结晚上去哪吃饭,好纠结啊,最近学校周边新开了好多店铺"
}
]
}
# ----------------------------------------------------------------------------
# 发送请求并获取响应
# ----------------------------------------------------------------------------
response = requests.post(url, headers=headers, json=payload)
# 打印响应结果
# 角色会根据插入的用户偏好信息(蓝莓、炸鸡、饺子)给出个性化的建议
print(response.json())🎩 qwen官方网站
https://help.aliyun.com/zh/model-studio/role-play© 2025 DMXAPI qwen-plus-character 角色扮演
