AI创客项目开发教程 -AID101-1-2-03 – User Role详解

导航栏:首页 / AI教程目录 / AI创客项目开发教程目录 / 第1篇 基础知识篇 / AID101-1-2-03 – User Role详解

本节内容简介

本节将通过示例程序详细讲解如何在 ESP32 开发板上通过 User Role(用户角色)向 AI 发送用户的问题和指令。通过本节课程,您将理解 System Role 与 User Role 的区别,以及如何在实际应用中更好的利用提示词工程来与人工智能大语言模型进行互动。


User Role(用户角色)详解

什么是 User Role?

User Role(用户角色)用于承载用户的输入内容,是与 AI 对话的主要载体。在调用 AI 平台 API 时,User Role 发送的是用户的具体问题、指令或需要 AI 处理的信息。

与 System Role 定义 AI 的行为模式不同,User Role 关注的是”用户想要什么”。如果说 System Role 是给 AI 设定一个人设和规则,那么 User Role 就是用户向 AI 提出的具体问题或指令。

User Role 的核心特点:

  • 📝 内容承载:承载用户的具体问题、指令或信息
  • 🎯 目标导向:明确告诉 AI 用户想要什么
  • 🔄 动态变化:每轮对话都可以发送不同的内容
  • 📋 格式要求:可以包含格式化输出要求

User Role 的典型应用:

  • 简单问答:用户直接提问,AI 回答
  • 格式化指令:用户要求 AI 按特定格式输出
  • 多轮对话:每轮对话中用户发送新消息

User Role 与 System Role 的区别

特性System RoleUser Role
定义者开发者/系统管理员用户
作用设定 AI 的行为规则发送用户的问题或指令
变化频率通常固定不变每次对话都可能变化
内容类型AI 的身份、风格、格式要求问题、指令、信息
示例“你是张飞,说话要粗犷”“请解释什么是人工智能”

简单理解:

  • System Role = 给 AI 设定”人设”和”规则”
  • User Role = 用户对 AI 说的话

两者配合使用:System Role 告诉 AI”你是谁、怎么回答”,User Role 告诉 AI”用户想问什么”。


本节代码 – User Role 演示示例

注意

本程序需要配合my_info.h代码使用,否则程序将无法正常编译。
请点击以下链接前往该代码页面,复制下载该代码:

http://ai.taichi-maker.com/index.php/homepage/ai-tutorial-index/ai-maker-project-tutorial-index/my_info_h-code-description/

/*
 * ESP32 AI平台 User Role 演示示例
 *
 * 功能描述:
 * 本程序演示如何在 ESP32 开发板上通过 User Role(用户角色)向 AI 发送用户的问题和指令。
 * 与 System Role 定义 AI 的行为模式不同,User Role 承载的是用户的具体输入内容。
 * 通过本示例,您将理解 System Role 与 User Role 的区别,以及如何在实际应用中配合使用两者。
 *
 * 本示例特点:
 * 1. User Role 演示:通过 User Role 发送用户的具体问题和指令
 * 2. 配合 System Role 使用:展示如何同时使用 System Role 和 User Role
 * 3. 多种 User Role 示例:展示 User Role 在不同场景下的应用
 *
 * 作者:Taichi-Maker
 * 作者官网:http://ai.taichi-maker.com
 * 创建日期:2026年03月23日
 * 版本:1.0.2
 *
 * 硬件要求:
 * - 支持 Wi-Fi 的 ESP32 开发板(推荐使用 ESP32-S3-DevKitC-1,因其性能更好、内存更大)
 *
 * 配置说明:
 * 1. 在 my_info.h 中填写 Wi-Fi 名称(ssid)和密码(password)
 * 2. 在 my_info.h 中设置 ai_api_key(从 AI 平台获取的 API 密钥)
 *
 * 使用方法:
 * 将本程序上传至 ESP32 后,打开串口监视器(波特率设置为 115200),
 * 程序会自动连接 Wi-Fi 并向 AI 平台发送一次请求,随后打印完整的 HTTP 响应内容。
 *
 * 注意事项:
 * - 本例使用 client.setInsecure() 跳过了 SSL 证书验证,仅适用于测试环境;
 *   在生产环境中应使用有效证书以确保通信安全。
 * - 请求仅在 setup() 中执行一次,loop() 为空,不会重复发送。
 *
 * 兼容性说明:
 * 本程序已在 ESP32-S3-DevKitC-1 开发板上测试通过。
 *
 * 许可证:MIT License
 *
 * 程序源:
 * 本程序源自太极创客团队精心开发的《AI创客项目开发教程》。该教程专为热爱科技创新、热衷于动手实践
 * 创客爱好者与初学者量身打造,是一套完全免费、开源且注重实战的AIoT(人工智能物联网)入门学习资源。
 *
 * 通过本教程,您可以系统地掌握从项目构思、方案设计、软硬件选型,到实际搭建、系统集成与调试优化的
 * 完整开发流程。
 * 
 * 您可以通过以下链接获得更多关于本教程的详细信息:
 * http://ai.taichi-maker.com/index.php/homepage/ai-tutorial/
 */

#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <HTTPClient.h>
#include "my_info.h"

/*
 * -------------- User Role 详解 --------------
 *
 * User Role(用户角色)用于承载用户的输入内容,是与 AI 对话的主要载体。
 * 与 System Role 定义 AI 的行为模式不同,User Role 发送的是用户的具体问题、指令或信息。
 *
 * User Role 的典型应用场景:
 *
 * 1. 简单问答:
 *    用户直接提问,AI 回答
 *    {
 *      "role": "user",
 *      "content": "什么是人工智能?"
 *    }
 *
 * 2. 格式化指令:
 *    用户要求 AI 按特定格式输出
 *    {
 *      "role": "user",
 *      "content": "请用 JSON 格式输出以下产品的信息:名称、价格、库存"
 *    }
 *
 *
 * 提示:
 * 1. User Role 的内容就是用户想要 AI 回答的问题或执行的指令
 * 2. User Role 可以包含格式化要求,指定 AI 的输出结构
 * 
 */
const char* ai_payload = R"rawliteral({
  "model": "qwen-flash",
  "messages": [
    {
      "role": "system",
      "content": "你是一个智能助手。请用简洁明了的语言回答问题。"
    },
    {
      "role": "user",
      "content": "请将下面的文字翻译成英文:你好,世界!"
    }
  ],
  "temperature": 0.7
})rawliteral";

// 创建一个安全的 Wi-Fi 客户端(用于 HTTPS 连接)
WiFiClientSecure client;

// 创建 HTTP 客户端对象,用于发送请求
HTTPClient https;

void setup() {
  // 初始化串口通信,波特率为 115200
  Serial.begin(115200);
  delay(1000); // 短暂等待串口稳定

  // 开始连接 Wi-Fi
  Serial.print("Connecting WiFi");
  WiFi.begin(ssid, password);

  // 循环等待直到成功连接
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  // 成功连接后换行
  Serial.println();

  // 【重要】跳过 SSL 证书验证(仅用于开发测试!)
  // 在真实产品中应加载有效证书以防止中间人攻击
  client.setInsecure();

  // 设置SSL连接超时时间
  client.setTimeout(15); // 15秒超时

  Serial.println();
  Serial.println("---------- AI Platform Config ----------");
  Serial.print("AI Platform API Endpoint: ");
  Serial.print(ai_host);
  Serial.println(ai_endpoint);
  Serial.println();

  // 调用函数,向 AI 平台发送请求
  callAIPlatform();
}

// 主循环留空,因为本例只需发送一次请求
void loop() {
  // 空
}

/*
 * -------------- 向 AI 平台发送 HTTPS 请求的核心函数 --------------
 */
void callAIPlatform() {
  Serial.println("\n>>> Calling AI Platform API...");

  // 打印请求体大小,用于调试
  Serial.printf("Request payload size: %d bytes\n", strlen(ai_payload));

  // 构造 Authorization 请求头:格式为 "Bearer <your-api-key>"
  String auth = "Bearer ";
  auth += ai_api_key;

  // 初始化 HTTPS 连接(使用 client、主机名、端口、API 路径)
  if (https.begin(client, ai_host, ai_port, ai_endpoint)) {

    // 设置超时时间(毫秒)- 增加超时时间以处理更复杂的请求
    https.setTimeout(20000); // 20秒超时
    https.setConnectTimeout(10000); // 10秒连接超时

    Serial.println("HTTPS connection initialized, sending request...");

    // 添加必要的 HTTP 请求头
    https.addHeader("Content-Type", "application/json");
    https.addHeader("Authorization", auth);

    // 发送 POST 请求,并获取 HTTP 状态码
    int httpCode = https.POST(ai_payload);

    if (httpCode > 0) {
      // 打印 HTTP 响应状态码(如 200 表示成功)
      Serial.printf("HTTP Response code: %d\n", httpCode);

      // 如果响应成功(HTTP 200 OK)
      if (httpCode == HTTP_CODE_OK) {
        // 获取完整的响应字符串
        String resp = https.getString();
        Serial.println("----- Response -----");
        Serial.println(resp);  // 打印 AI 返回的完整 JSON(含模型生成的回答)
        Serial.println("----- End -----");
      }
    } else {
      // 打印 HTTP 错误信息(如连接失败、超时等)
      Serial.printf("HTTP error: %s\n", https.errorToString(httpCode).c_str());
      Serial.printf("Error code: %d\n", httpCode);
    }

    // 结束本次 HTTP 会话,释放资源
    https.end();
  } else {
    // 如果无法建立 HTTPS 连接,打印错误提示
    Serial.println("Unable to connect to server");
  }
}

/*
----- AI平台响应示例 -----
请注意,由于不同AI平台的响应信息或多或少的存在一定差异,以下响应示例仅供学习参考。
{
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": "Hello, World!"
      },
      "finish_reason": "stop",
      "index": 0,
      "logprobs": null
    }
  ],
  "object": "chat.completion",
  "usage": {
    "prompt_tokens": 32,
    "completion_tokens": 4,
    "total_tokens": 36,
    "prompt_tokens_details": {
      "cached_tokens": 0
    }
  },
  "created": 1767370001,
  "system_fingerprint": null,
  "model": "qwen-flash",
  "id": "chatcmpl-12345678-1234-1234-1234-123456789012"
}
*/

代码详解

以上代码是使用了本章第一节课的示例程序,并且对其进行了简单调整修改而来。

相比本章第一节课的示例程序,本程序主要修改了以下几部分:

修改1:System Role 内容更加简单

本节课程的示例程序将System Role修改为更加通用的内容。这样可以更加突出显示出User Role的作用。

{
  "role": "system",
  "content": "你是一个智能助手。请用简洁明了的语言回答问题。"
}

修改2:User Role 内容更加具体

本节课程的示例程序展示了更加丰富多样的 User Role 用法,包括翻译请求、格式化输出要求等不同场景。

// System Role 示例中的 User Role
{
  "role": "user",
  "content": "请解释一下什么是人工智能大语言模型"
}

// 本程序中的 User Role(翻译请求)
{
  "role": "user",
  "content": "请将下面的文字翻译成英文:你好,世界!"
}

本程序中的关键代码解析

关键代码1:User Role 定义

{
  "role": "user",
  "content": "请将下面的文字翻译成英文:你好,世界!"
}

这段代码在做什么? 

这是定义 User Role 的消息结构,包含角色标识和内容。

具体完成了什么任务?

  • "role": "user":标识这是用户发送的消息
  • "content": "请将下面的文字翻译成英文:你好,世界!":用户的具体指令

为什么这样做?

  • User Role 用于承载用户的输入内容
  • 这里用户请求翻译服务,所以发送了翻译请求

关键代码2:完整的消息结构

"messages": [
  {
    "role": "system",
    "content": "你是一个智能助手。请用简洁明了的语言回答问题。"
  },
  {
    "role": "user",
    "content": "请将下面的文字翻译成英文:你好,世界!"
  }
]

这段代码在做什么? 这是完整的 messages 数组,包含 System Role 和 User Role。

具体完成了什么任务?

  • System Role 设定了 AI 的行为模式(简洁明了回答)
  • User Role 发送了具体的翻译请求
  • 两者配合,AI 会按照”简洁明了”的风格完成翻译
    • System Role 和 User Role 配合使用
    • System Role 定义”怎么回答”,User Role 定义”问什么”

提示词工程简介

提示词工程这个概念听起来有点专业?别担心,学完这部分内容你会发现,它其实就是”把话说清楚”的方法,人人都能学会。我们先来做个小实验。

1 同一个问题,两种问法

假设你想让 AI 帮你规划学习 ESP32 的路径,你会怎么问?

问法 A:”如何学用ESP32?”

AI 大概率会给你一段”正确的废话”:先学基础、再学进阶、多动手实践……听着都对,但对你说没什么帮助——因为它不知道你是谁、你想做什么项目、你的基础怎么样。

问法 B:”我是零基础的初学者,想用Arduino语言开发ESP32,搭建人工智能物联网创客项目,比如智能硬件这类。请帮我规划一条从入门到实战的学习路径,推荐适合新手的学习资源,项目案例。请避免使用过多术语回复,尽量让我这个零基础的初学者可以看得懂你的答复。”

这回 AI 的回答就”对味”多了:它会针对零基础、Arduino语言、ESP32, 智能硬件,给你一条具体的路径,推荐的资源也是新手友好的。

让我们比较一下这两个回答——问法A答复是泛泛而谈,而问法B答复精准到位。

为什么差别这么大?

因为问法 B 在一句话里,告诉了 AI 三件事:

  1. 你是谁:零基础的初学者
  2. 你想干什么:用 Arduino 开发 ESP32 做智能硬件,需要学习路径、学习资源和项目案例
  3. 你希望它怎么回答:少用术语,让初学者看得懂

而问法 A 我们只是泛泛的提问,AI 只能靠”猜”,然后为我们提供一个适用于所有人的“泛泛”答复。

问法B这种”把话说清楚、让 AI 一听就懂”的方法,就是提示词工程。

2 认识对话里的三个角色

在深入之前,我们先认识一下:我们在使用ESP32发给 AI 平台的每一条消息,都带着”标签”,英文叫 role(角色)。 role 一共有三类:

  • system role(系统角色):写在代码里,通常固定不变。它负责给 AI”立规矩”——告诉 AI 它是什么身份、该怎么说话。比如”你是一位耐心的智能硬件老师”。
  • user role(用户角色):每次调用都不同,一般不会固定写在代码里,而是由用户提供——比如用户在应用界面上输入的问题。它就是你”对 AI 说的话”。
  • assistant role(助手角色):AI 结合sytem role对我们在user role中的内容做出的回复。

可以这样理解:system 是AI设定,user 是我们的话,assistant 是AI的回应。

在 ESP32 项目里,这三者是这么分工的:system role 在代码里写一次,基本不变;user role 每次都在变,因为用户每次问的问题不一样。所以——提示词工程的主战场就在 user role。我们这节课学的所有技巧,都是为了使”user role” 这段话更有效,让AI更好的理解我们的意图。

3 提示词工程的定义

通俗定义:
把”你想说的话”,组织成”AI 更容易听懂的话”的方法。

不通俗的定义和解释:
提示词工程(Prompt Engineering): 又称指令工程或提示模板工程,是一种针对生成式人工智能模型(如大语言模型 LLM)的系统化技术体系。其核心定义可表述为:在不修改模型底层参数的前提下,通过设计、构造、优化和迭代输入文本(即提示词/Prompt),精准引导模型生成符合预期的高质量输出内容,本质上是利用自然语言作为接口对模型行为进行编程,构建输入与输出之间的隐式映射关系。

技术本质:

  • 语义对齐机制:提示词工程是人机交互的”翻译层”与”控制层”,旨在解决人类需求表达与模型理解能力之间的语义鸿沟,将模糊的自然语言意图转化为模型可精准执行的指令。
  • 参数冻结前提:区别于模型微调(Fine-tuning)和预训练,提示词工程无需更新模型权重参数,而是通过输入端的结构化设计激发预训练模型中蕴含的潜在知识。
  • 输出空间约束:通过语言约束缩小模型的输出概率分布空间,使生成结果从随机探索转向确定性生成,从而提升输出的准确性、一致性与安全性。

核心构成要素:工程化的提示词由角色设定、任务目标、上下文信息、约束条件和输出格式五大要素构成,其中角色设定用于锚定模型的能力边界与输出风格,任务目标明确定义执行方向,上下文信息提供必要的背景知识与数据支撑,约束条件划定输出的合规范围与行为边界,输出格式规范交付物的结构形态,五者协同作用形成完整的指令闭环,共同决定模型生成结果的质量与可用性。

***关键技术方法:***提示词工程的技术方法体系涵盖零样本提示、少样本提示、思维链、结构化提示与检索增强生成五大路径,零样本提示依赖模型的通用迁移能力直接执行指令,少样本提示通过示例引导模型识别任务模式,思维链通过显式分步推理提升复杂逻辑任务的准确率,结构化提示利用标签与分隔符增强指令解析效率并防范注入攻击,检索增强生成则通过引入外部知识库弥补模型知识局限并抑制幻觉,各方法可根据任务复杂度组合使用。

记忆公式(请记牢):

好的 user 提示词 = 明确指令 + 必要背景 +(期望风格或格式 + 交代任务有焦点)

三个部分各管一件事:

  • 明确指令:告诉 AI 具体要做什么。
  • 必要背景:告诉 AI 它需要知道的”前因后果”——你是谁、什么情况、有哪些背景信息或数据。
  • 期望风格或格式:告诉 AI 按什么风格或格式回答。
  • 交代任务有焦点:交代给AI的工作,要有焦点,不要过于零散。

打个比方:假设你是个老板,要给新来的实习生布置任务。如果只说一句”帮我整理资料”,实习生会一头雾水;如果说清楚”把这份客户名单按城市分类,做成表格,标出每个城市有多少人”,他立刻知道该怎么干。AI 也是一样——它很聪明,但需要你把话说清楚。

4 四大基本功

接下来是的内容是提示词工程的核心知识内容,我们将把以上的记忆公式拆开成几个基本功练习。

基本功一:说得具体(明确指令)

对比这两种问法:

  • 模糊版:”怎么学ESP32″
  • 具体版:”我是零基础,想用Arduino语言开发ESP32做智能硬件,请帮我规划从入门到实战的学习路径,并推荐新手资源”

模糊版只能换来笼统的建议;具体版明确了指令是“想用Arduino语言开发ESP32做智能硬件,请帮我规划从入门到实战的学习路径”,这样来获得针对性的方案。

我们再来看几个示例:

  • 模糊版:”哪个英雄人物最厉害”
  • 具体版:”在中国的古典小说中,如《三国演义》、《水浒传》等,哪一个英雄人物最厉害。请告诉我这个英雄人物出自哪一部作品,以及你认为他最厉害的原因是什么。”

模糊版可能回复的不是我们要的答案,因为我们需要的是中国古典小说里的人物;具体版明确了指令是“古典小说中,如《三国演义》、《水浒传》等,哪一个英雄人物最厉害。请告诉我这个英雄人物出自哪一部作品,以及你认为他最厉害的原因是什么。”。

  • 模糊版:”detail是什么意思”
  • 具体版:”我是一个高中生,正在准备高考,请告诉我detail这个单词有哪些词性,它的每一种英文词性都包含有哪些含义,请针对每一种含义提供说明,并且为每一种含义提供一个例句,让我学会这个单词的使用方法以及在英语高考中这个词可能会出现的考点有哪些。”

模糊版可能回复一个简单的英文释义;具体版明确了指令是“正在准备高考,请告诉我detail这个单词有哪些词性,它的每一种英文词性都包含有哪些含义,请针对每一种含义提供说明,并且为每一种含义提供一个例句,让我学会这个单词的使用方法以及在英语高考中这个词可能会出现的考点有哪些。”。

核心:把”想让 AI 干什么”说清楚,越具体,回答越靠谱。

基本功二:给足背景(必要背景)

先讲一个原理:如果是第一轮与AI模型对话,那么它只知道你当前发给它的这提示词内容,所以背景信息要我们自己放进提示词消息里。

背景从哪里来?两个来源:

  • 用户输入的需求:比如”我已经连续在b站上看太极创客的人工智能视频教程2个小时了,我刚才用红外测温仪测量,发现手机背面外壳温度42度,这是不是正常?”。
  • 设备采集的数据:比如温湿度读数、按键状态、传感器数值。

注意一点:背景要给”关键信息”,不是越长越好。信息堆得太多,AI 反而抓不住重点(比如以上内容中只要提一下在B站看视频就够了,不用特别提一下太极创客的人工智能视频教程,因为看什么视频不重要。)

我们再来看个示例:

  • 模糊版:”帮我推荐一款开发板”
  • 具体版:”我刚学完Arduino基础,预算200元以内,想做智能家居小项目(比如远程开关灯)。请帮我推荐一款ESP32开发板,说明推荐理由,以及还需要买哪些配件。”

模糊版可能推荐从入门到进阶的各种板子,甚至超出预算;具体版给了背景——学习阶段(刚学完Arduino基础)、预算(200元以内)、项目用途(智能家居)、想要的信息(推荐理由和配件),AI 的推荐才能真正拿来用。

  • 模糊版:”教我怎么用这个传感器”
  • 具体版:”我刚买了一个DHT11温湿度传感器,要接到ESP32上。请告诉我怎么接线、用哪个Arduino库、以及一个读取温湿度的最小示例代码。”

模糊版连”这个传感器”是什么都不知道,只能泛泛而谈;具体版给了背景——传感器型号(DHT11)、主控(ESP32)、想要的答案(接线、库、示例代码),AI 就能给出可以直接照做的步骤。

基本功三:指定格式(期望格式)

为什么要指定格式?因为回复整齐了,程序才好处理、屏幕才好显示。

常见的格式要求有三种:

  • 返回 JSON:程序解析起来最方便(后面的课程会用到)。
  • 限制字数:比如”用一句话回答,不超过 20 个字”,回复就简短整齐。
  • 分点编号:让 AI 按 1、2、3 列出,方便阅读。

我们再来看几个示例:

示例 1.

  • 模糊版:”介绍一下ESP32″
  • 具体版:”请用一句话介绍ESP32,不超过30个字,让零基础的人也能听懂。”

模糊版可能回一大段介绍文字;具体版指定了格式——一句话、30字以内、面向零基础,回复就简短好懂,正好适合显示在OLED小屏幕上。

示例 2.

  • 模糊版:”ESP32能做什么项目”
  • 具体版:”请列出5个适合零基础新手的ESP32项目,用编号1-5列出,每个项目用一句话说明它的功能和需要的核心零件。”

模糊版可能回一大段混在一起的文字;具体版指定了格式——编号1-5、每项一句话、附核心零件,回复一目了然。

基本功四:一次只问一件事(任务聚焦)

坏例子:一条消息里既问学习方法、又问项目推荐、还让翻译——AI 容易顾此失彼,每件事都答得敷衍。

好写法:把任务拆开,用编号步骤或”先……再……”的指令,让 AI 一步一步来。比如:

  • 模糊版:”ESP32怎么联网?怎么控制LED?”
  • 具体版(拆成两条消息,一次只问一件):
  • 第一条:”请告诉我ESP32连接WiFi需要哪几个步骤,并给出Arduino代码示例。”
  • 第二条:”在ESP32已经联网的基础上,如何控制GPIO引脚点亮LED?请给出代码示例。”

模糊版一次抛出2个问题,AI 的回答容易混在一起、每件事都不深入;拆成两条消息后,每次只聚焦一件事,AI 能给出详细、可照做的步骤。

  • 模糊版:”我想学英语,再帮我推荐一块开发板,顺便把这句话翻译成英文‘今天天气不错。’”
  • 具体版(拆成三条消息,一次只问一件):
  • 第一条:”请帮我制定一个适合高中生的英语学习计划,每天30分钟。”
  • 第二条:”请推荐一块适合零基础学ESP32的开发板,预算100元以内。”
  • 第三条:”请把这句话翻译成英文:’今天天气不错’。”

模糊版把三件完全不同的事混在一起,AI 的回答会顾此失彼,每件事都答得很浅;拆开后每条消息目标明确,得到的回答也更完整、更可用。

5. 提示词工程小结

好的提示词 = 明确指令 + 必要背景 +(期望风格或格式 + 交代任务有焦点)

User Role 的使用注意事项

注意事项1:内容长度限制

问题: User Role 的内容是否有限制?

解答:

  • 是的,有 token 数量限制(取决于模型)
  • User Role + System Role + 历史信息的总 token 不能超过模型上限
  • 如果内容过长,可能需要精简或分段发送

建议:

  • 保持问题简洁明了
  • 避免重复的上下文信息
  • 如果超长,考虑只保留关键的上下文

注意事项2:User Role 与 System Role 的配合

问题: 如何正确配合使用 User Role 和 System Role?

解答:

  • System Role 设置 AI 的角色定位和回答风格
  • User Role 发送用户的具体问题
  • 两者相辅相成,共同构成完整的对话

总结

User Role 的核心价值

  1. 内容承载:承载用户的具体问题、指令或信息
  2. 目标导向:明确告诉 AI 用户想要什么
  3. 灵活性高:可用于各种场景的问答和任务
  4. 配合 System Role:与 System Role 配合,构建完整的对话系统

User Role 的编写要点

  1. 问题具体明确:避免模糊的问题描述
  2. 提供必要背景信息:帮助 AI 更好地理解问题
  3. 明确输出格式:如果需要特定格式,要明确说明
  4. 分步骤提问:复杂问题可以分步进行