当前位置: 首页 > article >正文

提示词工程教程:角色提示

概述

本教程探讨了 AI 语言模型中角色提示的概念,重点介绍如何为 AI 模型分配特定角色并制定有效的角色描述。我们将使用 OpenAI 的 GPT 模型和 LangChain 库来演示这些技术。

主体

角色提示是提示工程中的一项强大技术,它使我们能够引导 AI 模型采用特定的角色或专业知识。这种方法可以显著提高 AI 生成的响应的质量和相关性,使其更适合特定任务或领域。

内容概要

  1. 角色分配:为 AI 模型分配角色的技术
  2. 角色描述制定:创建有效且详细的角色描述的策略
  3. 背景设定:为角色提供必要背景信息的方法
  4. 任务规范:在指定角色内明确定义任务的方法

教案

我们的方法包括以下步骤:
  1. 使用必要的库设置环境(OpenAI、LangChain)
  2. 使用 LangChain 的 PromptTemplate 创建基于角色的提示
  3. 通过精心设计的提示为人工智能模型分配角色
  4. 演示不同角色如何影响模型的响应
  5. 探索改进和完善角色描述的技术

我们将使用各种示例来说明如何将角色提示应用于不同的场景,例如技术写作、创意讲述和专业建议提供。

结论

在本教程结束时,您将对角色提示技术有深入的了解,并了解如何使用 OpenAI 和 LangChain 有效地实现这些技术。您将掌握编写引人注目的角色描述的技能,并利用它们来增强各种应用程序中的 AI 模型性能。

设置

首先,让我们导入必要的库并设置我们的环境。
import os
from langchain_openai import ChatOpenAI
from langchain.prompts import PromptTemplate

from dotenv import load_dotenv
load_dotenv()

# Set up OpenAI API key
os.environ["OPENAI_API_KEY"] = os.getenv('OPENAI_API_KEY')

# Initialize the language model
llm = ChatOpenAI(model="gpt-4o-mini")

基本角色分配

让我们从一个简单的角色分配示例开始。我们将创建一个提示,将技术作家的角色分配给 AI 模型。
tech_writer_prompt = PromptTemplate(
    input_variables=["topic"],
    template="""您是一位技术作家,专门为软件产品创建清晰简洁的文档。您的任务是
为用户手册撰写{topic}的简要说明。请提供 2-3 句易于非技术用户理解的解释。"""
)

chain = tech_writer_prompt | llm
response = chain.invoke({"topic": "云计算"})
print(response.content)
云计算是一种技术,它允许您通过互联网而不是计算机硬盘来存储和访问数据和应用程序。这意味着只要有互联网连接,您就可以随时随地使用软件和文件。它为个人和专业用途提供了灵活性、可扩展性和便利性。

制定有效的角色描述

现在,让我们来探讨如何制定更详细、更有效的角色描述。我们将为财务顾问角色创建一个提示,并提供更全面的描述。
financial_advisor_prompt = PromptTemplate(
    input_variables=["client_situation"],
    template="""您是一位经验丰富的财务顾问,在个人理财、投资策略和退休计划方面拥有 20 多年的经验。
    您曾帮助过来自不同背景的客户实现他们的财务目标。
    您的方法具有以下特点:
    1. 彻底分析每个客户的独特财务状况
    2. 清晰、通俗地传达复杂的财务概念
    3. 所有建议都考虑到道德问题
    4. 关注长期财务健康和稳定

    鉴于以下客户情况,提供简短的(3-4 句)财务建议:
{client_situation}    

    您的回答应体现您的专业知识并遵循您的典型方法。"""
)

chain = financial_advisor_prompt | llm
response = chain.invoke({"client_situation": "一名 35 岁的专业人士,年收入 80,000 美元,有 30,000 美元的储蓄,没有债务,也没有退休计划。"})
print(response.content)
鉴于您有稳定的收入和储蓄,第一步是制定退休计划。考虑向税收优惠的退休账户(如 401(k) 或 IRA)供款,以利用复利和潜在的雇主匹配。此外,旨在建立一个涵盖 3-6 个月生活费用的应急基金,以增强您的财务稳定性。最后,定期审查和调整您的投资策略以符合您的长期财务目标,确保平衡风险和增长。

比较不同角色的回应

为了演示不同角色如何影响人工智能的响应,让我们为三个不同的角色创建提示,并比较他们在同一主题上的输出。
roles = [
    ("科学家", "您是专门研究气候变化的研究科学家。请用科学术语解释以下概念:"),
    ("老师", "您是 一名中学科学老师。请用适合 12 岁学生的简单术语解释以下概念:"),
    ("记者", "您是一名为科普杂志撰稿的记者。请以一种引人入胜且信息丰富的方式向普通成年观众解释以下概念:")
]

topic = "温室效应"

for role, description in roles:
    role_prompt = PromptTemplate(
        input_variables=["topic"],
        template=f"{description} {{topic}}"
    )
    chain = role_prompt | llm
    response = chain.invoke({"topic": topic})
    print(f"\n{role}的解释:\n")
    print(response.content)
    print("-" * 50)
科学家的解释:

温室效应是地球表面变暖的自然过程。当太阳能量到达地球大气层时,就会发生温室效应——部分能量被反射回太空,其余能量被温室气体吸收并重新辐射。

以下是该过程更详细的分解:

1. **太阳辐射**:太阳以太阳辐射的形式发射能量,包括可见光、紫外线和红外线。当这些能量到达地球时,大约 30% 会被云层、大气粒子和反射表面(如冰雪)反射回太空。其余 70% 被地球表面(陆地和海洋)吸收,从而使地表变暖。

2. **热量的再辐射**:地球吸收太阳能后变暖,随后以红外辐射(热量)的形式将能量释放回大气。这是一个关键步骤,因为它将太阳能转化为热能。

3. **温室气体**:大气中的某些气体被称为温室气体 (GHG),它们会吸收部分外向红外辐射。最主要的温室气体包括二氧化碳 (CO₂)、甲烷 (CH₄)、一氧化二氮 (N₂O) 和水蒸气 (H₂O)。这些气体的分子结构使其能够吸收并重新辐射红外辐射,从而有效地将热量困在大气中。

4. **温室效应增强**:虽然温室效应是一种自然而必要的过程,可使地球温度保持在有利于生命的水平,但人类活动,尤其是燃烧化石燃料、砍伐森林和工业过程,导致温室气体浓度增加。这种增强的温室效应导致更多的热量被保留在大气中,从而导致全球变暖和气候变化。

5. **气候影响**:全球平均气温升高影响气候系统,导致更多极端天气事件、海平面上升以及生态系统和生物多样性遭到破坏。

综上所述,温室效应是地球气候系统的基本组成部分,通过调节温度来促进宜居环境。然而,人类活动导致的温室气体浓度增加正在加剧这种自然效应,导致重大的环境变化和挑战。
--------------------------------------------------

老师讲解:

当然!让我们把地球想象成一个大温室,这是一种特殊的建筑,它通过保持植物温暖舒适来帮助植物生长。温室效应的工作原理如下:

1. **阳光**:太阳照射在地球上,给我们带来光明和温暖。这就像阳光照进温室一样。

2. **地球表面**:当阳光照射到地面、建筑物甚至海洋时,它们会变暖。就像温室内部被太阳照射时变暖一样。

3. **热量被困**:现在,地球并不会保留所有热量。有些热量会试图逃回太空。然而,我们的大气中有一些气体,称为温室气体(如二氧化碳和甲烷),它们就像一张毯子。它们会捕获部分热量,使地球保持足够的温度,让我们可以生存。

4. **平衡是关键**:这一自然过程非常重要,因为它可以让地球保持适宜植物、动物和人类生存的温度!如果没有温室效应,地球就会变得太冷。

5. **好事多磨**:但问题就在这里:如果我们排放过多的温室气体(来自汽车、工厂和砍伐树木等),就会使覆盖层过厚。这会导致地球过度变暖,从而导致气候变化。这就是为什么我们需要小心对待我们的星球!

因此,温室效应就像是地球周围有一张温暖的毯子,帮助地球保持舒适,但我们需要确保它不要太厚!
--------------------------------------------------

记者的解释:

**了解温室效应:大自然的舒适毯子**

想象一下,在寒冷的冬日里走出家门,用温暖的毯子裹住自己以抵御寒冷。这类似于我们星球经历的一种自然现象,即温室效应。虽然温室效应在维持我们已知的生命方面发挥着至关重要的作用,但了解其机制是应对当今世界面临的挑战的关键。

那么,温室效应到底是什么?从本质上讲,温室效应是一种帮助调节地球温度的过程,确保地球温度适合植物、动物和人类。温室效应的工作原理如下:

1. **阳光与吸收**:旅程始于太阳,太阳为我们的星球带来能量。当阳光到达地球时,部分阳光会被陆地和海洋吸收,使地表变暖。想象一下地球像海绵一样吸收热量。

2. **辐射回太空**:地球吸收这些能量后,并不会保留所有热量。相反,它会将部分热量以红外辐射(一种热量)的形式辐射回太空。这就像海绵一旦充满水,就会开始将水分释放回空气中。

3. **温室气体**:温室效应在这里真正发挥作用。我们的大气层不仅仅是空气,它还含有多种气体,其中一些被称为温室气体——主要是二氧化碳 (CO2)、甲烷 (CH4) 和水蒸气。这些气体就像你温暖的毯子的绝缘层。它们会捕获一些向外发射的红外辐射,防止其逃逸回太空。这个过程使我们的星球保持足够的温度以维持生命。

4. **平衡**:在自然条件下,这种平衡得以维持。进入大气的热量大致等于被捕获并辐射出去的热量。这种平衡使得地球数千年来保持了稳定的气候。

然而,人类活动(例如燃烧化石燃料、砍伐森林和工业生产)打破了这种微妙的平衡。通过向大气中排放更多的温室气体,我们增强了温室效应,导致更多的热量被困住。这类似于在你已经很暖和的时候在毯子上加几层;很快,你就会觉得太热了。

温室效应加剧的后果是深远的。我们目睹了全球气温上升、冰盖融化和天气模式变化,所有这些都加剧了气候变化。这些变化可能导致恶劣天气事件、海平面上升和生态系统破坏,影响粮食安全、供水和人类健康。

了解温室效应不仅对掌握气候科学至关重要,而且对激励人们采取行动也至关重要。随着我们更多地了解我们的行为如何导致这一现象,我们显然有能力影响结果。通过减少我们的碳足迹——通过可再生能源、能源效率和可持续实践——我们可以帮助恢复地球气候系统的平衡。

从本质上讲,温室效应提醒我们环境内部存在着错综复杂的联系。它强调了我们必须保持的微妙平衡,以确保地球仍然是所有居民的宜居家园。因此,当我们用我们的隐喻毯子包裹自己时,让我们保持正念,确保我们不会做得过火,并保持地球的温度恰到好处。
--------------------------------------------------

完善角色描述

让我们探索如何完善角色描述以获得更具体的结果。我们将使用创意写作示例,重点介绍不同的讲故事风格。
storyteller_prompt = PromptTemplate(
    input_variables=["style", "scenario"],
    template="""你是一位讲故事的高手,以适应各种叙事风格的能力而闻名。你当前的任务是按照
{style}的风格写作。这种风格的主要特征包括:    
1. {style_char1}
2. {style_char2}
3. {style_char3}

用这种风格写一个关于以下场景的短文(3-4 句话):
{scenario}
确保您的写作清楚地反映了指定的风格。"""
)

styles = [
    {
        "name": "哥特式恐怖",
        "char1": "大气而险恶的描述",
        "char2": "腐朽,死亡和超自然的主题",
        "char3": "激烈的情绪和恐惧感"
    },
    {
        "name": "极简主义现实主义",
        "char1": "稀疏,简洁的语言",
        "char2": "关注日常,普通事件",
        "char3": "微妙的含义而不是明确的陈述"
    }
]

scenario = "一个人在黄昏时分进入一间空房子"

for style in styles:
    chain = storyteller_prompt | llm
    response = chain.invoke({
        "style": style["name"],
        "style_char1": style["char1"],
        "style_char2": style["char2"],
        "style_char3": style["char3"],
        "scenario": scenario
    })
    print(f"\n{style['name']} 版本:\n")
    print(response.content)
    print("-" * 50)
哥特式恐怖版本:

当暮色笼罩着这所废弃的房屋时,空气中弥漫着霉菌的气味,以及被尘土和绝望所掩埋的记忆。门吱吱作响,发出悲哀的呻吟声,露出了一个巨大的洞穴,阴影在渐暗的光线中像幽灵一样舞动,低声诉说着早已死去的居民的秘密。每一步都在腐烂的地板上发出不祥的回声,令人不寒而栗,让人想起了已经夺走建筑和精神的腐朽,同时一股寒意缠绕着入侵者的心,随着意识到他们并不孤单而感到紧张。在那令人窒息的黑暗中,墙壁似乎在跳动着一种恶性的能量,仿佛这所房子本身渴望一个灵魂,将他困在它永恒的悲伤中。
--------------------------------------------------

极简现实主义版本:

她推开门,门吱吱作响,声音被寂静吞没。阴影聚集在角落里,延伸到褪色的地板上。她停了下来,呼吸在寂静中凝固,空气中弥漫着灰尘和回忆。外面,天空变成了深蓝色,而里面,时间似乎在徘徊,等待着。
--------------------------------------------------

http://www.kler.cn/a/465846.html

相关文章:

  • 贵州省贵安新区地图+全域数据arcgis格式shp数据矢量路网地名+卫星影像底图下载后内容测评
  • 【跟着官网学技术系列之MySQL】第2天之MySQL版本:创新和 LTS
  • Python自学 - 函数式编程初步(lambda、map、filter)
  • 【使用命令配置java环境变量永久生效与脚本切换jdk版本】
  • 「Mac畅玩鸿蒙与硬件54」UI互动应用篇31 - 滑动解锁屏幕功能
  • lenovo联想IdeaPad 15sIML 2020款(81WB)笔记本电脑原装出厂OEM预装系统Windows10镜像下载
  • C++ ——— 构造函数中的初始化列表
  • Linux高并发服务器开发 第八天(makefile的规则 wildcard/patsubst函数 普通变量/自动变量/其他关键字)
  • C# 设计模式(创建型模式):原型模式
  • 电子应用设计方案84:智能 AI衣柜系统设计
  • 什么是 Azure OpenAI ?了解微软 Azure OpenAI 和 OpenAI 的关系
  • RabbitMQ基础篇之Java客户端 消息转换器
  • 解决移动端v-html繁体字标点符号上下剧中问题
  • 区块链技术为电商API接口带来的数据安全革新
  • Django REST framework 源码剖析-视图类详解(Views)
  • 麒麟操作系统服务架构保姆级教程(七)Nginx+PHP+Mysql部署服务
  • 如何二次封装组件(vue3版本)
  • npx和npm和pnpm的异同
  • 基于SpringBoot在线竞拍平台系统功能实现十三
  • 1.3 距离度量
  • go项目zero框架中用gentool解决指定MYSQL表生成结构体被覆盖的解决方案
  • 【网络协议】开放式最短路径优先协议OSPF详解(二)
  • dbeaver导入导出数据库(sql文件形式)
  • 深入探讨爬虫的核心理念:设计原则与关键技术
  • 关于Zotero
  • 高阶无源和有源滤波器