【大模型从入门到精通4】openAI API 分类

news2024/11/14 17:24:42

这里写目录标题

    • 分类
      • 理解 SYSTEM 和 USER 在 AI 对话中的角色
      • System Message
      • User Message
      • 工作原理
      • 示例
      • 分类示例
      • 更多分类示例
      • 理论问题
      • 理论

在这里插入图片描述

分类

理解 SYSTEM 和 USER 在 AI 对话中的角色

在分类任务中,通常需要向模型提供一个需要将其分类到预定义类别中的文本场景。以下是设置 system_messageuser_message 的方法:

  • system_message: 这部分应该解释当前的任务,包括可用的分类类别。它设定了 AI 预期行为的上下文。
  • user_message: 这应该包含需要分类的文本。这是 AI 进行分类的基础。

假设任务是将客户反馈分为“正面”、“负面”或“中立”等类别。

System Message

system_message = """将客户反馈分类为以下类别之一:正面、负面或中立。"""

User Message

user_message = """我最近从你们商店购买了一件产品。购物体验非常棒,产品质量超出了我的期望!"""

工作原理

当通过 Chat Completion API 与 OpenAI 的 GPT 模型交互时,对话中的消息被结构化以准确模拟用户与 AI 系统之间的交流。每条消息都是一个至少包含两个关键组件的字典:角色和内容。角色键指定了消息的来源,而内容键则包含了消息的实际文本。区分 {role: 'system'}{role: 'user'} 对于设计能够引发所需响应的交互至关重要。

  • {role: ‘user’}

带有 {role: 'user'} 标记的消息表明该消息来自用户的视角,类似于用户向 AI 提问或陈述。这些通常是查询、命令或输入,AI 预期对此作出回应。通过标记消息为来自用户,您是在模拟对话中用户的角色,指导 AI 如何构建其响应。

  • {role: ‘system’}

相反,带有 {role: 'system'} 标记的消息为 AI 模型提供了指令、上下文或约束条件,模拟系统生成的消息。这些可以规定 AI 的行为、个性或响应风格,比如指示 AI 以特定作者的风格回答问题或遵守某些指南。系统消息影响 AI 如何理解和回应后续的用户消息。

消息序列中的系统和用户角色引导 AI 生成与上下文相关且符合直接用户输入及总体系统指令的响应。这种动态交换允许 AI 根据提供的上下文和指令调整其响应,从而实现更加细腻和互动的对话。

示例

假设您希望 AI 以一种幽默诗人的风格创作一首关于快乐胡萝卜的小诗。消息序列可能如下所示:

  • System Message (设定上下文或提供指令)
    {'role': 'system', 'content': "您是一位以幽默诗人风格回答的助手。"}
    
  • User Message (提出问题或请求)
    {'role': 'user', 'content': "给我写一首关于快乐胡萝卜的短诗。"}
    

这种对话流程允许构建细腻且具有上下文意识的 AI 交互,使语言模型在各种应用中得到创造性和有效的利用。

分类示例

以下是完整的示例代码:

import os
import openai
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())  # 读取本地 .env 文件

openai.api_key = os.environ['OPENAI_API_KEY']

def classify(messages, model="gpt-3.5-turbo", temperature=0, max_tokens=500):
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=temperature, 
        max_tokens=max_tokens,
    )
    return response.choices[0].message["content"]

delimiter = "####"
system_message = """将客户反馈分类为以下类别之一:正面、负面或中立。"""

user_message = """我最近从你们商店购买了一件产品。购物体验非常棒,产品质量超出了我的期望!"""

messages = [
    {'role':'system', 'content': system_message},
    {'role':'user', 'content': f"{delimiter}{user_message}{delimiter}"}
]

response = classify(messages)
print(response)

更多分类示例

下面是针对分类任务设计的十个示例,涵盖了各种话题和类别。每个示例包括简要的任务描述和分类类别,随后是具体的 system_message 和通用的 user_message,它们将被分类。

  1. 电子邮件分类

    类别:工作、个人、垃圾邮件

    System Message: “将下列电子邮件分类为工作、个人或垃圾邮件。”
    User Message: “我们最新的电子产品优惠巨大!现在点击节省大量费用。”

  2. 电影评论情感分析

    类别:正面、负面、中立

    System Message: “确定以下电影评论的情感是正面、负面还是中立。”
    User Message: “这部电影的画面令人惊叹,但故事情节可预测且缺乏深度。”

  3. 新闻文章主题分类

    类别:政治、科技、体育、娱乐

    System Message: “将新闻文章的主题分类为政治、科技、体育或娱乐。”
    User Message: “最新的智能手机型号采用突破性的技术,有望改变整个行业。”

  4. 产品评论评级

    类别:1 星、2 星、3 星、4 星、5 星

    System Message: “根据产品评论的内容,将其分类为 1 星至 5 星的等级。”
    User Message: “虽然产品设计创新,但频繁故障和糟糕的客户服务使其难以推荐。”

  5. 客户咨询意图

    类别:账单、技术支持、销售、一般咨询

    System Message: “识别客户咨询的意图是账单、技术支持、销售还是一般咨询。”
    User Message: “您可以解释一下不同的套餐及其正在进行的促销活动吗?”

  6. 文本体裁识别

    类别:小说、非小说、诗歌、新闻

    System Message: “识别以下文本的体裁是小说、非小说、诗歌还是新闻。”
    User Message: “在城市的中心,繁忙的街道之中,有一个静谧的花园,仿佛未被时间触及。”

  7. 社交媒体帖子语气

    类别:严肃、幽默、励志、愤怒

    System Message: “将下列社交媒体帖子的语气分类为严肃、幽默、励志或愤怒。”
    User Message: “没有什么比以微笑开始一天更好的了。记住,快乐是会传染的!”

  8. 研究论文领域

    类别:生物学、计算机科学、心理学、数学

    System Message: “将下列研究论文摘要的领域分类为生物学、计算机科学、心理学或数学。”
    User Message: “本研究探讨了排序机制的算法复杂性和计算效率。”

  9. 食品评论风味特征

    类别:甜、咸、酸、苦、鲜

    System Message: “将食品评论中描述的风味特征分类为甜、咸、酸、苦或鲜。”
    User Message: “这道菜呈现了一个完美的鲜味平衡,微妙的甜味增强了整体口感。”

  10. 紧急呼叫类型

    类别:火灾、医疗、犯罪、其他

    System Message: “根据下列通话记录的内容,将紧急事件类型分类为火灾、医疗、犯罪或其他。”
    User Message: “隔壁大楼冒出大量烟雾,我们能看到火焰。请尽快派救援人员来!”

对于这些示例中的每一个,您可以根据具体要分类的场景调整 user_message,确保 AI 模型获得清晰的上下文和任务说明。

理论问题

  1. 消息的关键组成部分以及区分它们的重要性是什么?

    消息的关键组成部分是角色(role)和内容(content)。角色指明了消息的来源,而内容包含了实际的文本信息。区分这两个组成部分很重要,因为它们指导 AI 理解对话的结构和目的,从而更好地生成适当的响应。

  2. 在 AI 对话中,‘system’ 消息的作用与 ‘user’ 消息有何不同?

    'system' 消息为 AI 提供背景信息、指导和规则,用于设定 AI 的行为方式。'user' 消息代表用户的问题或陈述,AI 将基于这些消息生成相应的回答。

  3. 举例说明如何通过 'system' 消息控制 AI 的行为或回答风格?

    例如,'system' 消息可以这样设置:“您是一位以幽默诗人风格回答的助手。”这样的消息将指导 AI 以幽默诗人的风格来回答用户的问题。

  4. 系统和用户角色之间消息序列如何影响 AI 模型的响应?

    系统消息为 AI 设定背景和规则,而用户消息提供具体问题或信息。这种序列让 AI 明确了解上下文,并根据上下文生成相关的响应。

  5. 在分类任务示例中,有哪些可供选择的客户反馈类别?

    可供选择的客户反馈类别包括:正面、负面、中立。

  6. 描述一个分类电影评论情感有益的情景。可以使用哪些类别进行分类?

    在电影评论网站上,分类评论情感可以帮助过滤正面或负面的反馈,帮助用户快速了解电影的整体评价。类别可以是正面、负面、中立。

  7. 分类新闻文章主题如何帮助内容管理和推荐系统?给出一些可以使用的类别示例。

    分类新闻文章有助于组织和推荐相关内容给感兴趣的读者。例如,类别可以是政治、科技、体育、娱乐。

  8. 在商业环境中,分类客户咨询为何重要?可以使用哪些类别来简化客户服务流程?

    分类客户咨询可以帮助快速转接到正确的部门或代表,提高服务效率。类别可以是账单、技术支持、销售、一般咨询。

  9. 在 AI 分类任务中,‘user_message’ 的作用是什么?应该如何构造以帮助 AI 准确分类?

    'user_message' 包含了待分类的信息。它应该清晰地表达出需要分类的内容,以便 AI 能够理解并准确分类。

  10. 分类社交媒体帖子的语气如何有利于内容审核或营销策略?给出一些可以使用的语气类别示例。

    分类社交媒体帖子的语气可以帮助识别有害内容或确定营销策略的有效性。语气类别可以是严肃、幽默、励志、愤怒。

理论

在与 OpenAI 的 GPT 模型交互的上下文中,消息的关键组成部分是角色和内容。角色指定了消息是否来自系统或用户,指导 AI 如何构建其响应。区分这两者对于模拟动态交流至关重要,并帮助 AI 理解并适当地响应当前的任务。

  • 'System' 消息提供了指令、上下文或约束条件,塑造了 AI 的行为、个性或响应风格。
  • 'User' 消息则是来自用户视角的输入,如查询或陈述,AI 将对此作出响应。这种区别有助于构建能够引发所需响应的交互。

一个例子说明了 'system' 消息如何控制 AI 的行为:指示 AI 以幽默诗人的风格回答。这样的消息设定了基调和风格,确保 AI 的回答与用户所要求的幽默诗意的上下文相符。

消息序列通过提供丰富的上下文背景来影响 AI 模型的响应。它确保 AI 的回答既与用户的直接输入一致,也与系统提供的总体指令或上下文保持一致,从而实现更加细腻的对话。

在提供的示例中,可用于分类客户反馈的类别是“正面”、“负面”或“中立”。这种分类有助于理解顾客满意度以及需要改进的地方。

对电影评论的情感进行分类对于汇总消费者对电影的意见是有益的,这有助于潜在观众做出明智的选择。分类类别可以包括“正面”、“负面”和“中立”。

对新闻文章的主题进行分类有助于内容管理,通过将文章组织成类别便于导航;同时,在推荐系统中,可以根据读者的兴趣推荐相关文章。类别示例包括“政治”、“科技”、“体育”和“娱乐”。

在商业环境中,对客户咨询进行分类至关重要,可以高效地将查询导向合适的部门,提高响应时间和客户满意度。类别可以包括“账单”、“技术支持”、“销售”和“一般咨询”。

在 AI 分类任务中,'user_message' 应该包含需要分类的文本。它应该被清晰简洁地结构化,为 AI 提供足够的上下文,以便将其准确地分类到预定义的类别中。

对社交媒体帖子的语气进行分类有助于内容审核,通过识别和管理不当内容,并通过分析受众参与度来通知营销策略。语气类别可以包括“严肃”、“幽默”、“励志”和“愤怒”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1977062.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构与算法】堆顶删除

堆顶的删除 一.堆顶出列的原理二.堆顶出列的实现1.覆盖最大元素并出列2.向下调整成为堆 三.堆排序四,总结 一.堆顶出列的原理 还记得我们刚开始说的嘛,如果我想要拿出最大的,那么下一个最大的会花落谁家. 那么就需要用到堆顶出列的原理了. 然后我们再对顶节点,进行向下调整就可…

9-springCloud集成nacos config

本文介绍spring cloud集成nacos config的过程。 0、环境 jdk 1.8maven 3.8.1Idea 2021.1nacos 2.0.3 1、项目结构 根项目nacos-config-sample下有两个module,这两个module分别是两个springboot项目,都从nacos中获取连接mysql的连接参数。我们开工。 …

被遗忘的哑终端 —— 键盘键位演变的启发者

注:机翻,未校对。 The Forgotten World of Dumb Terminals 被遗忘的哑终端世界 A quick journey through the lost age of “glass teletypes.” 快速穿越失落的“玻璃电传打字机”时代。 From the earliest days of digital computers, researchers o…

【C++】-----继承(复杂的多继承及虚拟继承)

目录 前言 一、多继承 认识 继承顺序 二、菱形继承 三、菱形虚拟继承(重难点) 认识 底层原理(细致) 四、继承与组合 五、总结 前言 在前面我们所举的例子都是单继承,就是一个子类只有一个直接父类的关系&…

用Manim在图形和坐标轴上画线条

用Manim在图形和坐标轴上画线条 .画图像函数的切线 angle_of_tangent(x, graph, dx1e-08) angle_of_tangent(x, graph, dx1e-08)是 Manim 中用于计算图形在给定点的切线角度的函数。以下是对该函数参数的解释: 参数说明 x: 这是你想要计算切线角度的 x 坐标。在…

C++进阶之C++11

个人主页:点我进入主页 专栏分类:C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 算法 C进阶 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂 目录 一.列表初始化 1.1一切皆可用列表初始化 1.2init…

代码随想录 day 29 贪心

第八章 贪心算法 part03 134. 加油站 本题有点难度,不太好想,推荐大家熟悉一下方法二 https://programmercarl.com/0134.%E5%8A%A0%E6%B2%B9%E7%AB%99.html 135. 分发糖果 本题涉及到一个思想,就是想处理好一边再处理另一边,不…

MySQL基础操作全攻略:增删改查实用指南(上)

本节目标: CRUD : Create, Retrieve , Update , Delete 新增数据 查询数据 修改数据 删除数据 1. CRUD 注释:在 SQL 中可以使用 “-- 空格 描述 ” 来表示注释说明 CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、…

什么是 IDR —— Linux 内核中的一种整数管理机制

文章目录 1 什么是 IDR1.1 IDR 的设计目的 2 IDR 的结构和实现2.1 核心数据结构2.2 常用操作2.2.1 分配 ID2.2.2 查找指针2.2.3 删除映射 2.3 IDR 的优点 3 Linux 内核中的整数 ID3.1 作用3.2 常见的整数 ID 示例 4 为什么要将整数 ID 与指针关联4.1 举例说明4.2 好处4.3 示例代…

学习笔记-Cookie、Session、JWT

目录 一、验证码的生成与校验 1. 创建生成验证码的工具类 2. 写一个 Controller 3. 实现验证码验证 1. 获取验证码 2. 验证码请求过程 3. 验证码的校验 4. 原理说明 5. 验证 6. 总结 二、JWT登录鉴权 1. 为什么要做登录鉴权? 2. 什么是 JWT 3. JWT相比…

MATLAB优化模型(2)

一、前言 在MATLAB中实现动态规划、图论、网络流模型(如最短路、最大流、最小生成树)的优化模型,可以通过多种方法完成,但通常会依赖于MATLAB内置的函数或工具箱,比如Optimization Toolbox、Graph Theory Toolbox等。以…

Python 实现股票指标计算——SKDJ

SKDJ (Stochastic KDJ) - 慢速随机指标 1 公式 LOWV:LLV(LOW,N); HIGHV:HHV(HIGH,N); RSV:EMA((CLOSE-LOWV)/(HIGHV-LOWV)*100,M); K:EMA(RSV,M); D:MA(K,M); 2 数据准备 我们以科创50指数 000688 为例,指数开始日期为2019-12-31,数据格式如下&#…

Leetcode 第 135 场双周赛题解

Leetcode 第 135 场双周赛题解 Leetcode 第 135 场双周赛题解题目1:3222. 求出硬币游戏的赢家思路代码复杂度分析 题目2:3223. 操作后字符串的最短长度思路代码复杂度分析 题目3:3224. 使差值相等的最少数组改动次数思路代码复杂度分析 题目4…

SQL注入 报错注入、文件上传、布尔盲注、时间盲注

第7关 文件上传 ---面试官常问 1、MySQL上传shell的满足条件 如果面试官问你如何通过MySQL向网站上传一个shell脚本或者其他语言的一些脚本 ---就可以通过outfile导出的方式进行上传; outfile导出的前提条件:1、必须知道网站的物理路径&#xf…

Java每日一练_模拟面试题2(循环依赖)

一、啥事Spring里面的循环依赖 SpringBoot 循环依赖通常发生在两个或多个Bean相互依赖对方时,例如:A依赖B,同时B也依赖A。 二、如何解决? 解决方案: 构造器注入:如果循环依赖发生在构造器中,S…

[YashanDB认证]YashanDB个人版安装

为什么选择YashanDB? 崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,经工信部下属机构权威检测,内核代码自主率100%。在经典数据库理论基础上,融入原创的有界计算理论、近似计算理论、并行可扩展理论和跨模融…

Taro学习记录(具体项目实践)

一、安装taro-cli 二、项目文件 三、项目搭建 1、Eslint配置 在项目生成的 .eslintrc 中进行配置 {"extends": ["taro/react"], //一个配置文件,可以被基础配置中的已启用的规则继承"parser": "babel/eslint-parser…

荒原之梦考研:专科考研成功的可能性大吗?

专科还是本科不是决定考研能否成功的关键因素,决定考研能否成功的关键因素是自己是否有清晰的规划、是否有足够的专注能力,以及是否能够吃得了考研的“苦”。 首先要有清晰的规划,比如说,不是我们每个人足够努力就都能考上 TOP1 …

electron-updater实现electron全量更新和增量更新——主进程部分

同学们可以私信我加入学习群! 正文开始 前言更新功能所有文章汇总一、更新插件选择二、在main.js中引入我们的更新模块三、更新模块UpdateController.js暴露的方法checkUpdate四、更新模块UpdateController.js中的监听4.1监听是否有新版本需要更新?4.2 监…

红黑树与平衡二叉树的相同之处与不同之处

红黑树很多资料上写的非常繁杂,初次接触真的难以理解。写本文也就是为了记录一些思考和想法,并不会记录如何使用代码实现。 不记录代码还有个原因:黑红树的算法就是根据各种情况进行一些操作,情况很复杂,分插入的和删…