第005小节:System, Assistant, User:ChatGPT 架构与角色详解

System, Assistant, User:ChatGPT 架构与角色详解

在本篇文章中,我们将详细探讨ChatGPT模型在对话中的三个主要角色:系统(system)、助手(assistant)和用户(user)。

理解这些角色帮助我们能更有效地使用 ChatGPT 来解决各种问题。

下面我们将进一步阐述这三个角色以及如何在实际应用中使用它们。

一、系统角色(System Role

系统角色主要负责向模型提供上下文信息和初始指令。这有助于使模型了解如何回应用户提出的问题。

通常情况下,您可以根据自己的需求定制系统角色,提供关于助手的简要描述、性格特征、遵循的指令或规则等信息。

{"role": "system","content": "为模型提供一些上下文和/或指令。"},
{"role": "user", "content": "这里是示例问题。"},
{"role": "assistant", "content": "这里是示例答案。"},
{"role": "user", "content": "这是模型需要真实回应的第一个问题/信息。"}

1.1 系统角色的重要性

虽然系统角色不是必需的,但包含至少一个基本的系统角色对于获得最佳结果非常重要。

它可以帮助模型了解用户的需求,并根据这些需求提供相应的回应。这有助于提高模型的准确性和效果。

(示例一:助手是一个由 OpenAI 所训练的大型语言模型)

  • 源码
import openai
import os
from dotenv import load_dotenv, find_dotenv

# 导入第三方库
_ = load_dotenv(find_dotenv())
# 读取系统中的环境变量
openai.api_key = os.environ["OPENAI_API_KEY"]

def get_completion(prompt, model="gpt-3.5-turbo-16k"):
    print("黎跃春:"+prompt)
    messages = [
                    {
                        "role": "system",
                        "content": "助手是一个由 OpenAI 所训练的大型语言模型。"
                    },
                    {
                        "role": "user",
                        "content": prompt
                    }
                ]
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=0, 
    )
    # print(response)
    return response.choices[0].message["content"]

answer = get_completion("土豆和马铃薯的区别是什么?")

print("--------------------------------")
print("ChatGPT:"+answer)
  • 结果
黎跃春:土豆和马铃薯的区别是什么?
{
  "id": "chatcmpl-7WQacW4vos9CGiAV9ndCcwHOeDqGG",
  "object": "chat.completion",
  "created": 1687963062,
  "model": "gpt-3.5-turbo-16k-0613",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "u571fu8c46u548cu9a6cu94c3u85afu5b9eu9645u4e0au662fu540cu4e00u79cdu690du7269uff0cu5b66u540du4e3au9a6cu94c3u85afuff08Solanum tuberosumuff09u3002u5b83u4eecu4e4bu95f4u6ca1u6709u5b9eu8d28u6027u7684u533au522buff0cu53eau662fu5728u4e0du540cu5730u533au4f7fu7528u4e0du540cu7684u540du79f0u3002nnu5728u4e2du56fdu5927u9646u548cu90e8u5206u5730u533auff0cu4ebau4eecu901au5e38u79f0u4e4bu4e3au571fu8c46uff0cu800cu5728u5176u4ed6u5730u533auff0cu5982u53f0u6e7eu3001u9999u6e2fu3001u6fb3u95e8u4ee5u53cau4e00u4e9bu56fdu9645u4e0au7684u82f1u8bedu4f7fu7528u5730u533auff0cu4ebau4eecu66f4u503eu5411u4e8eu79f0u4e4bu4e3au9a6cu94c3u85afu3002nnu603bu7684u6765u8bf4uff0cu571fu8c46/u9a6cu94c3u85afu662fu4e00u79cdu4e3bu8981u7528u4f5cu98dfu7269u7684u5757u830eu690du7269uff0cu5bccu542bu78b3u6c34u5316u5408u7269u3001u7ef4u751fu7d20u548cu77ffu7269u8d28u3002u5b83u4eecu53efu4ee5u716eu3001u70b8u3001u70e4u3001u84b8u7b49u591au79cdu65b9u5f0fu8fdbu884cu70f9u996auff0cu662fu4e16u754cu4e0au6700u91cdu8981u7684u4e3bu98dfu4e4bu4e00u3002"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 51,
    "completion_tokens": 247,
    "total_tokens": 298
  }
}
--------------------------------
ChatGPT:土豆和马铃薯实际上是同一种植物,学名为马铃薯(Solanum tuberosum)。它们之间没有实质性的区别,只是在不同地区使用不同的名称。

在中国大陆和部分地区,人们通常称之为土豆,而在其他地区,如台湾、香港、澳门以及一些国际上的英语使用地区,人们更倾向于称之为马铃薯。

总的来说,土豆/马铃薯是一种主要用作食物的块茎植物,富含碳水化合物、维生素和矿物质。它们可以煮、炸、烤、蒸等多种方式进行烹饪,是世界上最重要的主食之一。

1.2 定制系统角色

根据您的使用场景,您可以定制系统角色以适应特定的需求。

例如,如果您希望助手具有特定的性格特征(如幽默或正式),您可以在系统角色中提供相应的信息将使助手在回答问题时表现出这些特征。

(示例二:助手用调皮且讽刺的风格回复用户。)

  • 源码
import openai
import os
from dotenv import load_dotenv, find_dotenv

# 导入第三方库
_ = load_dotenv(find_dotenv())
# 读取系统中的环境变量
openai.api_key = os.environ["OPENAI_API_KEY"]

def get_completion(prompt, model="gpt-3.5-turbo-16k"):
    print("黎跃春:"+prompt)
    messages = [{"role": "system","content": "助手用调皮且讽刺的风格回复用户。"},
                {"role": "user", "content": prompt}]
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=0, 
    )
    # print(response)
    return response.choices[0].message["content"]

answer = get_completion("土豆和马铃薯的区别是什么?")

print("--------------------------------")
print("ChatGPT:"+answer)
  • 结果
黎跃春:土豆和马铃薯的区别是什么?
--------------------------------
ChatGPT:哇哦,你真是个聪明的人类!其实,土豆和马铃薯是完全不同的东西。土豆是一种生长在土壤中的植物,而马铃薯则是一种生长在马铃薯树上的动物。当然,我是在开玩笑的!实际上,土豆和马铃薯是同一种东西的不同称呼。它们都是一种淀粉含量很高的食物,可以用来制作各种美味的菜肴。所以,无论你是喜欢叫它土豆还是马铃薯,它们都是同一个东西。

二、助手角色(Assistant Role

助手角色代表了基于ChatGPT模型的AI助手。在对话中,助手将根据系统角色和用户提出的问题生成回应。助手角色在对话中扮演着桥梁的作用,使模型能够理解用户的需求并为其提供帮助。

2.1 使用助手角色的示例

在实际应用中,助手角色可以满足各种用户需求。例如,助手可以回答学术问题、撰写文章、提供建议等。以下是使用助手角色的一些示例:

  • 解决数学问题:用户可以向助手提出数学问题,助手将提供相应的解答和计算过程。
  • 撰写信件:用户可以请求助手编写一封信件,根据提供的信息和要求,助手将生成合适的信件内容。
  • 搜索信息:用户可以询问有关某个主题的信息,助手将基于其训练数据提供相关的答案。
[
  {
    "role": "system", 
    "content": "助理是一个智能的聊天机器人,设计用于帮助用户回答他们的税务相关问题"
  },
  {
    "role": "user", 
    "content": "我需要在什么时候提交我的税务申报?"
  },
  {
    "role": "assistant", 
    "content": "在2023年,你需要在4月18日前提交你的税务申报。这个日期比通常的4月15日的截止日期要晚,因为2023年的4月15日是星期六。想了解更多信息"
  },
  {
    "role": "user",
    "content": "我怎样才能查看我的退税状态?"
  },
  {
    "role": "assistant", 
    "content": "你可以通过访问https://www.irs.gov/refunds来查看你的退税状态"
  }
]

上面是助手角色信息,下面是全部源码:

import openai
import os
from dotenv import load_dotenv, find_dotenv

# 导入第三方库
_ = load_dotenv(find_dotenv())
# 读取系统中的环境变量
openai.api_key = os.environ["OPENAI_API_KEY"]

def get_completion(prompt, model="gpt-3.5-turbo-16k"):
    print("黎跃春:"+prompt)
    messages = [
                    {
                        "role": "system", 
                        "content": "助理是一个智能的聊天机器人,设计用于帮助用户回答他们的税务相关问题"
                    },
                    {
                        "role": "user", 
                        "content": "我需要在什么时候提交我的税务申报?"
                    },
                    {
                        "role": "assistant", 
                        "content": "在2023年,你需要在4月18日前提交你的税务申报。这个日期比通常的4月15日的截止日期要晚,因为2023年的4月15日是星期六。想了解更多信息"
                    },
                    {
                        "role": "user",
                        "content": "我怎样才能查看我的退税状态?"
                    },
                    {
                        "role": "assistant", 
                        "content": "你可以通过访问https://www.irs.gov/refunds来查看你的退税状态"
                    },
                    {
                        "role": "user",
                        "content": prompt
                    }
                ]
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=0, 
    )
    print(response)
    return response.choices[0].message["content"]

answer = get_completion("一块钱需要上税吗")

print("--------------------------------")
print("ChatGPT:"+answer)
  • 下面是执行这个程序后得到的响应
ChatGPT:一般情况下,一块钱的收入是不需要缴纳税款的。然而,税务规定可能因地区和具体情况而有所不同。如果你有其他收入或特殊情况,建议咨询税务专业人士以获取准确的信息。

2.2 与助手角色互动的技巧

为了获取更精确和有帮助的回答,建议用户在与助手角色互动时遵循以下几点:

  • 提供明确和具体的问题:确保您的问题清晰易懂,以便助手更好地理解您的需求。
  • 在必要时提供上下文信息:如果您的问题涉及特定的背景信息,请在问题中包含这些信息,以便助手提供更加精确的答案。
  • 请保持耐心:尽管 ChatGPT 助手在很多方面都很强大,但它仍然可能会犯错。如果您对助手的回答不满意,可以尝试修改问题或提供更多上下文信息。

3.2 提高用户角色互动效果的方法

为了获取更好的用户体验,以下是一些建议用户在与ChatGPT互动时遵循的方法:

  • 确保问题的清晰和精确:向助手提出明确、具体的问题,以便获取更精确的回答。

  • 考虑提供一些示例:在提出问题时,向助手提供一个或多个示例,以帮助助手更好地理解您的需求。

  • 分步提问:如果您的问题较为复杂,可以考虑将问题分解为几个简单的步骤,逐一向助手提问。

  • (逐步询问,最后顺利找到想要的答案。)

三、用户角色(User Role

用户角色代表了与ChatGPT助手交互的终端用户。用户通过向助手提出问题或发送请求来获取所需的信息。

3.1 用户角色的作用

用户角色在对话中担任主导地位,向助手提出问题并获得回应。例如撰写文章、查找信息、编辑内容等。

3.2 提高用户角色互动效果的方法

为了获得更好的用户体验,以下是一些建议用户在与ChatGPT互动时遵循的方法:

  • 确保问题的清晰和精确:向助手提出明确、具体的问题,以便获得更精确的回答。 考虑

  • 提供一些示例:在提出问题时,向助手提供一个或多个示例,以帮助助手更好地理解您的需求。

  • 分步提问:如果您的问题较为复杂,可以考虑将问题分解为几个简单的步骤,逐一向助手提问。

    (逐步询问,最后顺利找到想要的答案。)

元壤教育AIGC提示工程培训

元壤教育AIGC提示工程培训

元壤教育AIGC提示工程培训

元壤教育AIGC提示工程培训

了解ChatGPT中的系统角色、助手角色和用户角色让我们更加了解如何充分利用这个语言模型,激发更多潜力。

多尝试各种组合,学习不同组合技,我们将能够更有效地与ChatGPT互动,进而更有效率地完成任务和目标。

发布者:黎跃春,转转请注明出处:https://liyuechun.com/2023/07/03/chatgpt-architecture-role-explained/

(2)
上一篇 2023年6月28日 下午10:08
下一篇 2023年6月28日 下午6:00

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

电话:153-2182-7737

邮件:liyuechun@cldy.org

工作时间:周一至周日,9:30-18:30,节假日无休息

关注微信
黎跃春的ChatGPT提示工程笔记,用AI驱动员工生产力,引领您企业10倍效能的新革命!