第3章:角色扮演提示-Claude应用开发教程
更多教程,请访问claude应用开发教程
设置
运行以下设置单元以加载您的 API 密钥并建立 get_completion 辅助函数。
!pip install anthropic# Import python's built-in regular expression library
`import re
import anthropic`# Retrieve the API_KEY & MODEL_NAME variables from the IPython store%store -r API_KEY
%store -r MODEL_NAMEclient = anthropic.Anthropic(api_key=API_KEY)def get_completion(prompt: str, system_prompt=""):message = client.messages.create(model=MODEL_NAME,max_tokens=2000,temperature=0.0,system=system_prompt,messages=[{"role": "user", "content": prompt}])return message.content[0].text
课程
继续讨论克劳德除了你说的话之外没有其他背景这一主题,有时需要提示克劳德扮演一个特定的角色(包括所有必要的背景)。这也称为角色提示。角色背景越详细越好。
用角色引导克劳德可以提高克劳德在写作、编码和总结等各个领域的表现。这就像人类有时被告知“像__一样思考”时会得到帮助一样。角色提示还可以改变克劳德回应的风格、语气和方式。
注意:角色提示可以在系统提示中发生,也可以作为用户消息轮换的一部分发生。
示例
在下面的例子中,我们看到,在没有角色提示的情况下,当被要求用一句话来描述滑板时,克劳德给出了一个直截了当、非程式化的答案。
然而,当我们让克劳德扮演一只猫的角色时,克劳德的视角发生了变化,因此克劳德的回应语气、风格和内容都适应了新角色。
注意:您可以使用的额外技巧是向克劳德提供其目标受众的背景。下面,我们可以调整提示,告诉克劳德它应该和谁说话。“你是一只猫”产生的反应与“你是一只在和一群滑板手说话的猫”完全不同。
以下是系统提示中没有角色提示的提示:
# Prompt
PROMPT = "In one sentence, what do you think about skateboarding?"# Print Claude's response
print(get_completion(PROMPT))
这是相同的用户问题,但有角色提示。
# System prompt
SYSTEM_PROMPT = "You are a cat."# Prompt
PROMPT = "In one sentence, what do you think about skateboarding?"# Print Claude's response
print(get_completion(PROMPT, SYSTEM_PROMPT))
您可以使用角色提示让 Claude 模仿某些写作风格、用特定语气说话或引导其答案的复杂性。角色提示还可以让 Claude 更好地执行数学或逻辑任务。
例如,在下面的例子中,有一个明确的正确答案,即是。然而,Claude 答错了,并认为它缺乏信息,但事实并非如此:
# Prompt
PROMPT = "Jack is looking at Anne. Anne is looking at George. Jack is married, George is not, and we don’t know if Anne is married. Is a married person looking at an unmarried person?"# Print Claude's response
print(get_completion(PROMPT))
现在,如果我们让 Claude 扮演逻辑机器人的角色会怎么样?这会如何改变 Claude 的答案?
事实证明,通过这项新的角色分配,Claude 做对了。(尽管显然不是出于所有正确的原因)
# System prompt
SYSTEM_PROMPT = "You are a logic bot designed to answer complex logic problems."# Prompt
PROMPT = "Jack is looking at Anne. Anne is looking at George. Jack is married, George is not, and we don’t know if Anne is married. Is a married person looking at an unmarried person?"# Print Claude's response
print(get_completion(PROMPT, SYSTEM_PROMPT))
注意:您将在本课程中学习到,您可以使用多种提示工程技术来获得类似的结果。使用哪种技术取决于您和您的偏好!我们鼓励您进行实验以找到自己的提示工程风格。
如果您想在不更改上述任何内容的情况下尝试课程提示,请一直滚动到课程笔记本的底部以访问示例游乐场。
练习
练习 3.1 – 数学更正
在某些情况下,Claude 可能会在数学方面遇到困难,即使是简单的数学。下面,Claude 错误地将数学问题评估为已正确解决,即使第二步中存在明显的算术错误。请注意,Claude 在逐步执行时实际上发现了错误,但并没有得出整体解决方案是错误的结论。
修改 PROMPT 和/或 SYSTEM_PROMPT,使 Claude 将解决方案评为错误解决,而不是正确解决。
# System prompt - if you don't want to use a system prompt, you can leave this variable set to an empty string
SYSTEM_PROMPT = ""# Prompt
PROMPT = """Is this equation solved correctly below?2x - 3 = 9
2x = 6
x = 3"""# Get Claude's response
response = get_completion(PROMPT, SYSTEM_PROMPT)# Function to grade exercise correctness
def grade_exercise(text):if "incorrect" in text or "not correct" in text.lower():return Trueelse:return False# Print Claude's response and the corresponding grade
print(response)
print("\n--------------------------- GRADING ---------------------------")
print("This exercise has been correctly solved:", grade_exercise(response))
总结
如果您已经解决了到目前为止的所有练习,那么您就可以进入下一章了。祝您好运!
示例广场
这是一个供您自由试验本课中显示的提示示例的区域,并调整提示以查看它如何影响 Claude 的回答。
# Prompt
PROMPT = "In one sentence, what do you think about skateboarding?"# Print Claude's response
print(get_completion(PROMPT))# System prompt
SYSTEM_PROMPT = "You are a cat."# Prompt
PROMPT = "In one sentence, what do you think about skateboarding?"# Print Claude's response
print(get_completion(PROMPT, SYSTEM_PROMPT))# Prompt
PROMPT = "Jack is looking at Anne. Anne is looking at George. Jack is married, George is not, and we don’t know if Anne is married. Is a married person looking at an unmarried person?"# Print Claude's response
print(get_completion(PROMPT))# System prompt
SYSTEM_PROMPT = "You are a logic bot designed to answer complex logic problems."# Prompt
PROMPT = "Jack is looking at Anne. Anne is looking at George. Jack is married, George is not, and we don’t know if Anne is married. Is a married person looking at an unmarried person?"# Print Claude's response
print(get_completion(PROMPT, SYSTEM_PROMPT))
相关文章:
第3章:角色扮演提示-Claude应用开发教程
更多教程,请访问claude应用开发教程 设置 运行以下设置单元以加载您的 API 密钥并建立 get_completion 辅助函数。 !pip install anthropic# Import pythons built-in regular expression library import re import anthropic# Retrieve the API_KEY & MODEL…...
【FAQ】HarmonyOS SDK 闭源开放能力 —Vision Kit
1.问题描述: 人脸活体检测页面会有声音提示,如何控制声音开关? 解决方案: 活体检测暂无声音控制开关,但可通过其他能力控制系统音量,从而控制音量。 活体检测页面固定音频流设置的是8(无障碍…...
【问题解决】Tomcat由低于8版本升级到高版本使用Tomcat自带连接池报错无法找到表空间的问题
问题复现 项目上历史项目为解决漏洞扫描从Tomcat 6.0升级到了9.0版本,服务启动的日志显示如下警告,数据源是通过JNDI方式在server.xml中配置的,控制台上狂刷无法找到表空间的错误(没截图) 报错: 06-Nov-…...
Git LFS
Git LFS(Git Large File Storage)是一个用于管理和版本控制大文件的工具,它扩展了 Git 的功能,帮助处理大文件或二进制文件的存储和管理问题。 为什么需要 Git LFS? Git 默认是针对文本文件进行优化的,尤…...
基于Redis缓存机制实现高并发接口调试
创建接口 这里使用的是阿里云提供的接口服务直接做的测试,接口地址 curl http://localhost:8080/initData?tokenAppWithRedis 这里主要通过参数cacheFirstfalse和true来区分是否走缓存,正常的业务机制可能是通过后台代码逻辑自行控制的,这…...
数字化转型实践:金蝶云星空与钉钉集成提升企业运营效率
数字化转型实践:金蝶云星空与钉钉集成提升企业运营效率 本文介绍了深圳一家电子设备制造企业在数字化转型过程中,如何通过金蝶云星空与钉钉的高效集成应对挑战、实施解决方案,并取得显著成果。集成项目在提高沟通效率、自动化审批流程和监控异…...
Flutter 鸿蒙next 中使用 MobX 进行状态管理
Flutter & 鸿蒙next 中使用 MobX 进行状态管理 在应用开发中,状态管理是一个至关重要的环节,特别是在复杂的Flutter或鸿蒙next项目中。状态的变化往往会影响UI的更新,因此,选择一种高效、灵活的状态管理工具显得尤为重要。Mo…...
1.62亿元!812个项目立项!上海市2024年度“科技创新行动计划”自然科学基金项目立项
本期精选SCI&EI ●IEEE 1区TOP 计算机类(含CCF); ●EI快刊:最快1周录用! 知网(CNKI)、谷歌学术期刊 ●7天录用-检索(100%录用),1周上线; 免费稿件评估 免费匹配期…...
Redis数据库测试和缓存穿透、雪崩、击穿
Redis数据库测试实验 实验要求 1.新建一张user表,在表内插入10000条数据。 2.①通过jdbc查询这10000条数据,记录查询时间。 ②通过redis查询这10000条数据,记录查询时间。 3.①再次查询这一万条数据,要求根据年龄进行排序&#…...
[vulnhub] DarkHole: 2
https://www.vulnhub.com/entry/darkhole-2,740/ 端口扫描主机发现 探测存活主机,185是靶机 # nmap -sP 192.168.75.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-08 18:02 CST Nmap scan report for 192.168.75.1 Host is up (0.…...
《XGBoost算法的原理推导》12-2 t轮迭代中对样本i的预测值 公式解析
本文是将文章《XGBoost算法的原理推导》中的公式单独拿出来做一个详细的解析,便于初学者更好的理解。 好的,公式(12-2)表示的是 XGBoost 在第 t t t 轮迭代中对样本 i i i 的预测值。它说明了在第 t t t 轮迭代中,模型的预测是通过累加之前…...
./bin/mindieservice_daemon启动成功
接MindIE大模型测试及报错Fatal Python error: PyThreadState_Get: the function must be called with the GIL held,-CSDN博客经过调整如下红色部分参数,昇腾310P3跑起来了7b模型: rootdev-8242526b-01f2-4a54-b89d-f6d9c57c692d-qjhpf:/home/apulis-de…...
Linux: network: ip link M-DOWN的具体含义是什么?
文章目录 参考简介实例代码解释openstack上的显示如果是在一个interface上建立了vlan参考 https://unix.stackexchange.com/questions/348327/using-ip-what-does-m-down-mean www.policyrouting.org/iproute2.doc.html#ss9.1 简介 是指上一级的接口的状态。 实例 4: ersp…...
Spring中的过滤器和拦截器
Spring中的过滤器和拦截器 一、引言 在Spring框架中,过滤器(Filter)和拦截器(Interceptor)是实现请求处理的两种重要机制。它们都基于AOP(面向切面编程)思想,用于在请求的生命周期…...
leetcode20.括号匹配
题目描述 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个…...
Unity性能优化-具体操作
批量渲染是通过减少CPU向GPU发送渲染命令(DrawCall)的次数,以及减少GPU切换渲染状态的次数,尽量让GPU一次多做一些事情,来提升逻辑线和渲染线的整体效率。 Draw Call性能消耗原因是命令从Runtime到Driver的过程中&…...
【嵌入式开发——ARM】1ARM架构
嵌入式领域,使用ARM架构的芯片公司可不占少数吧,intel的x86架构主要占据PC、服务器市场,ARM架构主要占据移动市场。x86架构和ARM架构不同的主要原因,是背后使用的计算机指令集不同。计算机有自己的语言系统(汇编&#…...
Linux中.NET读取excel组件,不会出现The type initializer for ‘Gdip‘ threw an exception异常
组件,可通过nuget安装,直接搜名字: ExcelDataReader using ConsoleAppReadFileData.Model; using ExcelDataReader; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Task…...
mmclassification的配置文件样本
# 需要修改的参数 img_size 480 class_name [fuqi,ok] num_classes len(class_name) data_root /home/apulis-test/teamdata/yz_dataset/fuqi max_epochs300 val_interval1 train_batch_size 16 val_batch_size 1 load_from "swin_tiny_224_b16x64_300e_imagenet_…...
Java基础——类和对象的定义链表的创建,输出
目录 什么是类? 什么是对象? 如何创建链表? 尾插法: 头插法: 输出链表的长度 输出链表的值 什么是类? 创建Java程序必须创建一个类class. .java程序需要经过javac指令将文件翻译为.class字节码文件,…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
