在 Amazon Bedrock 上使用 Anthropic Claude 系统 Prompt
系统 prompt 是定义生成式 AI 模型对用户输入的响应策略的一种好方法。这篇博文将介绍什么是系统 prompt,以及如何在基于 Anthropic Claude 2.x 和 3 的应用中使用系统 prompt。
亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!
Amazon Bedrock 生成式人工智能编程
你知道和 Amazon Bedrock 上的 Anthropic Claude 模型互动时可以使用系统prompt 吗?
下面我们将首先了解一下系统 prompt 的概念,然后演示在 Claude 2.x 的文本补全 API 和 Claude 3 的新消息 API 中如何运用系统 prompt。
⚠ 友情提示:本文包含示例代码。
如果你对系统 prompt 和 Claude 的两种 API 已有一定了解,可以直接跳到代码部分。文章末尾,我提供了两个完整的示例代码。
什么是系统 prompt?
今天我们讨论的是 Claude,所以我们来看看 Anthropic 对系统 prompt 的解释:
系统 prompt 是在向 Claude 提出问题或下达任务之前提供上下文、指令和指南的一种方式。你可以使用系统 prompt 来为对话设定背景,包括 Claude 的角色、个性、语气或任何其他有助于其更好理解和响应用户输入的相关信息。
简而言之,系统 prompt 实际上是一种上下文学习模式,可以有效地定义模型在交互过程中的上下文、范围、边界和输出格式。
使用系统 prompt 的目的是确保 AI 输出符合特定领域的目标或任务要求。以下是一些典型的使用场景:
-
处理比萨订单:将模型的作用范围指定为根据比萨餐厅的菜单和位置接单。
-
作为技术支持,协助排查故障:向模型中输入产品详情、常见问题及答案和决策树等内容,帮助用户解决技术问题。
-
代码调试:向模型中输入有关库、框架和编程语言版本的信息,帮助识别软件漏洞并提出修复建议。
Amazon Bedrock 支持的两种 Claude API
现在,你应该对系统 prompt 有一定了解了。下面,让我们看看 Amazon Bedrock 上不同版本的 Claude 所提供的两种 API:
-
文本补全 API:Claude 1 和 2.x 版本均支持文本补全 API。
-
消息 API:新的 Claude 3 版本引入了消息 API。
文本补全 API
Anthropic Claude 1 和 2 版本在 Amazon Bedrock 上线后,Claude 模型便向亚马逊云科技客户全面开放,并随后在 re:Invent 2023 中推出了 Claude 2.1。2.1 及之前版本的 Claude 模型均提供了文本补全 API。这个 API 根据用户提供的 prompt 优化单轮文本生成。Prompt 模版如下:
备注:文章末尾提供了完整的代码示例以供参考。
# The prompt format for the text completion API (Claude 1 and 2.x)user_prompt = "Tell me a story."prompt = "Human: " + user_prompt + "\n\nAssistant:"
我在 Claude v2.1 上使用这个 prompt 后,我得到了如下的输出:
The young boy wandered into the dark, mysterious forest, hoping to find the rare flower his mother needed to recover from her illness, but instead encountered a wise old owl who offered him cryptic advice about believing in himself.(一个小男孩走进了一处幽暗而神秘的森林,希望找到能让他母亲康复的稀有花朵,但却遇到了一只智慧的老猫头鹰,劝诫他要相信自己。)
在文本补全 API 中使用系统 Prompt
只需将系统 prompt 添加到用户 prompt 之前即可。
# Using a system prompt with the text completion API (Claude 1 and 2.x)system_prompt = "All your output must be pirate speech 🦜"user_prompt = "Tell me a story."prompt = "System:" + system_prompt + "\n\nHuman: " + user_prompt + "\n\nAssistant:"
向 Claude 2.1 发送这个 prompt 后,得到了如下输出:
Yarrr, 'twas a dark 'n stormy night when Blackbeard 'n his scurvy crew set sail on the seven seas, plunderin' merchant ships fer pieces of eight 'n fine silks, before returnin' to Tortuga fer a night of rum-filled debauchery!(Yarrr, 那是一个暴风雨交加的黑夜,黑胡子和他那些卑鄙船员们航行四海,掠夺商船获取金币和绫罗绸缎,然后满载而归地回到托尔图加岛享受充满朗姆酒的放纵之夜!)
消息 API
2024 年 3 月,随着 Claude 3 Sonnet 的推出,Amazon Bedrock 推出了消息 API。这个 API 针对对话交互(如聊天机器人或虚拟助手)和多模态请求(例如,发送图片并通过文本 prompt 提问)场景进行了功能优化。 经过训练后,Claude 3 能够处理用户 (user) 与助手 (assistant) 之间的多轮对话。创建新消息时,你可以使用 messages 参数指定之前的对话。模型根据之前的几轮对话生成下一条消息。
每条输入消息都必须是一个包含角色 (role) 和内容 (content) 字段的对象。你可以输入一条单独的用户角色的消息,或者包含多条用户和助手角色交互的消息。
备注:文章末尾提供了完整的代码示例以供参考。
以下是封装在消息 API 请求对象中的消息示例:
// The request object for the messages API (Claude 3)
{"anthropic_version": "bedrock-2023-05-31","max_tokens": 1024,"messages": [{"role": "user","content": [{"type": "text","text": "Tell me a story."}]}]
}
可以看到,这里仅有一条消息,角色为 user,而 Claude 将返回一条包含响应内容的新消息:
// The response object returned by the messages API
{"type": "message","role": "assistant", "content": [{"type": "text","text": "Orphaned as a child, she overcame poverty, discrimination, and countless ..."}]...
}
在消息 API 中使用系统 Prompt
只需在请求对象中添加 “system” 参数即可添加系统 prompt,示例如下:
// The request including a system prompt with the Messages API
{"system": "All your output must be pirate speech 🦜","anthropic_version": "bedrock-2023-05-31","max_tokens": 1024,"messages": [{"role": "user","content": [{"type": "text","text": "Tell me a story."}]}]
}
输出结果如下所示:
// The response object returned by the messages API
{"type": "message", "role": "assistant", "content": [{"type": "text", "text": "Ahoy, matey! Hoist the mainsail an' brace yeself ... 🏴 ☠️"}],...
}
就是这么简单!
如果这篇文章对你有帮助或让你有所收获,欢迎点赞或在评论区留言。 如需了解更多信息,请参考以下指南:
-
Amazon Bedrock 代码示例:提供持续更新的示例列表,涵盖各种模型和编程语言。
-
推理参数参考:介绍适用于 Amazon Bedrock 上的 Claude 及所有其他模型的推理参数。
-
community.aws 上的生成式 AI 专栏:这里有许多关于 Amazon Bedrock 和生成式 AI 的精选文章。
代码示例
如果你想要动手实践,这里给大家提供了两个适用于这两种 API 的完整 Python 脚本示例。祝你编程愉快!
文本补全 API 中添加系统 Prompt(完整示例)
# This Python example demonstrates the use of a system prompt with the
# Text Completion API for Claude 2.ximport boto3
import json# Initialize the client with the service and region
client = boto3.client('bedrock-runtime', 'us-east-1')# Define model ID and prompt
model_id = 'anthropic.claude-v2:1'system_prompt = 'All your output must be pirate speech 🦜'
user_prompt = 'Tell me a story.'
prompt = f"System: {system_prompt}\n\nHuman: {user_prompt}\n\nAssistant:"# Create the request body
body = {"prompt": prompt,"max_tokens_to_sample": 200,"temperature": 0.5,"stop_sequences": ["\n\nHuman:"]
}# Invoke the model and print the response
response = client.invoke_model(modelId=model_id, body=json.dumps(body))
print(json.loads(response["body"].read())["completion"])
消息 API 中添加系统 Prompt(完整示例)
# This Python example demonstrates the use of a system prompt with the
# Messages API for Claude 3import boto3
import jsonclient = boto3.client(service_name="bedrock-runtime", region_name="us-east-1")
model_id = "anthropic.claude-3-sonnet-20240229-v1:0"response = client.invoke_model(modelId=model_id,body=json.dumps({"anthropic_version": "bedrock-2023-05-31","max_tokens": 1024,"system": "All your output must be pirate speech 🦜","messages": [{"role": "user","content": [{"type": "text","text": "Tell me a story."}]}],}),
)# Process and print the response(s)
response_body = json.loads(response.get("body").read())
for output in response_body.get("content", []):print(output["text"])
享受编程的乐趣吧!
本文中的任何观点仅代表作者个人的观点,不代表亚马逊云科技的观点。
文章来源:在 Amazon Bedrock 上使用 Anthropic Claude 系统 Prompt
相关文章:
在 Amazon Bedrock 上使用 Anthropic Claude 系统 Prompt
系统 prompt 是定义生成式 AI 模型对用户输入的响应策略的一种好方法。这篇博文将介绍什么是系统 prompt,以及如何在基于 Anthropic Claude 2.x 和 3 的应用中使用系统 prompt。 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例…...
【LeetCode】动态规划--题目练习
有关动态规划算法的整理:添加链接描述 1.爬楼梯 爬楼梯:LeetCode70 int climbStairs(int n) {//1.确定dp数组和意义 dp[n]表示第n阶的方法//2.确定递推关系式 dp[n] dp[n-1]dp[n-2];//3.初始化int dp[50] {0};dp[1] 1;dp[2] 2;for(int i 3;i<n;i){dp[i] …...
【LeetCode热题100】101. 对称二叉树(二叉树)
一.题目要求 给你一个二叉树的根节点 root , 检查它是否轴对称。 二.题目难度 简单 三.输入样例 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root [1,2,2,null,3,null,3] 输出&a…...
VLC抓取m3u8视频
前言 最近想看一些网络视频,但是很多时候网页上是m3u8推流的,如果在线看,速度又慢,所以就想下载下来,就想到了VLC的推流,转换能力,查阅资料,加上实践,总结心得。 设置中…...
聊聊Python都能做些什么
文章目录 一、Python简介二、Python都能做些什么1. Web开发2. 数据分析和人工智能3. 自动化运维和测试4. 网络爬虫5. 金融科技 三、Python开源库都有哪些1. Web开发2. 数据分析和科学计算3. 机器学习和深度学习4. 网络爬虫5. 自动化和测试6. 其他常用库 四、相关链接 一、Pytho…...
JavaWeb06-MVC和三层架构
目录 一、MVC模式 1.概述 2.好处 二、三层架构 1.概述 三、MVC与三层架构 四、练习 一、MVC模式 1.概述 MVC是一种分层开发的模式,其中 M:Model,业务模型,处理业务 V: View,视图,界面展…...
MySQL数据库实现增删改查基础操作
准备工作 安装mysql8.0 (安装时一定要记住用户名和密码)安装数据库可视化视图工具Navicat 请注意⚠️⚠️⚠️⚠️ a. 编程类所有软件不要安装在中文目录下 b. Navicat破解版下载安装教程:(由于文章审核提示版权问题,链接不方便给出ÿ…...
PCM和I2S区别
I2S和PCM接口都是数字音频接口,而所见的蓝牙到cpu以及codec的音频接口都是用PCM接口,是不是两个接口有各自不同的应用呢?先来看下概念。 PCM(PCM-clock、PCM-sync、PCM-in、PCM-out)脉冲编码调制,模拟语音信…...
大模型笔记:吴恩达 ChatGPT Prompt Engineering for Developers(1) prompt的基本原则和策略
1 intro 基础大模型 VS 用指令tune 过的大模型 基础大模型 只会对prompt的文本进行续写 所以当你向模型发问的时候,它往往会像复读机一样续写几个问题这是因为在它见过的语料库文本(通常大多来自互联网)中,通常会连续列举出N个问…...
设计模式 — — 单例模式
一、是什么 单例模式只会在全局作用域下创建一次实例对象,让所有需要调用的地方都共享这一单例对象 二、实现 // 单例构造函数 function CreateSingleton (name) {this.name name;this.getName(); };// 获取实例的名字 CreateSingleton.prototype.getName func…...
C++:菱形继承与虚继承
看下面这个示例代码 class A{ public: int num10; A(){cout<<"A构造"<<endl;} virtual void fun(){cout<<"A虚函数"<<endl;} };class B:public A{ public: B(){cout<<"B构造"<<endl;} void fun(){cout<…...
贡献法:USACO 2021 December Contest Bronze:孤独的照片
Farmer John 最近购入了 N 头新的奶牛,每头奶牛的品种是更赛牛(Guernsey)或荷斯坦牛(Holstein)之一。 奶牛目前排成一排,Farmer John 想要为每个连续不少于三头奶牛的序列拍摄一张照片。 然而,他…...
Java实现简单的通讯录
每日一言 泪眼问花花不语,乱红飞过秋千去。 —欧阳修- 简单的通讯录实现,跟写Java实现图书管理系统差不多,用到的知识也差不多,就当个小练习,练习一下写Java程序的手感。 Java实现图书管理系统 关于通讯录的代码都写…...
服务器数据恢复—raid5热备盘上线同步数据失败的如何恢复数据
服务器数据恢复环境&故障&分析: 一台存储上有一组由多块硬盘组建的raid5阵列,该raid5阵列中的一块硬盘掉线,热备盘自动上线同步数据的过程中,raid阵列中又有一块硬盘掉线,热备盘的数据同步被中断,r…...
探索C语言中的循环结构
循环结构是程序设计中一种重要的控制结构,它允许程序重复执行特定的代码块,直到满足某个条件为止。在C语言中,循环结构有多种形式,如for循环、while循环和do-while循环。本文将介绍C语言中的循环结构,并讨论它们的用法…...
数学建模-估计出租车的总数
文章目录 1、随机抽取的号码在总体的排序 1、随机抽取的号码在总体的排序 10个号码从小到大重新排列 [ x 0 , x ] [x_0, x] [x0,x] 区间内全部整数值 ~ 总体 x 1 , x 2 , … , x 10 总体的一个样本 x_1, x_2, … , x_{10} ~ 总体的一个样本 x1,x2,…,x10 总体的一个样…...
设计模式在芯片验证中的应用——装饰器
一、装饰器模式 装饰器模式(Decorator)是一种结构化软件设计模式,它提供了一种通过向类对象添加行为来修改类对象的方法,而不会影响同一类的其它对象行为。该模式允许在不修改抽象类的情况下添加类功能。它从本质上允许基类代码对不可预见的修改具有前瞻…...
Python 查找并高亮PDF中的指定文本
在处理大量PDF文档时,有时我们需要快速找到特定的文本信息。本文将提供以下三个Python示例来帮助你在PDF文件中快速查找并高亮指定的文本。 查找并高亮PDF中所有的指定文本查找并高亮PDF某个区域内的指定文本使用正则表达式搜索指定文本并高亮 本文将用到国产第三方…...
LEETCODE LCS 03. 主题空间
题目描述如上,这个题主要运用了DFS的思想,同时走过的路径标记为6,即可在后续的遍历中过滤掉重复的元素,其他则类似边界条件的判断和题目条件的判断,求最大值,只需要一次遍历中累加对比每一次得即可。 模板&…...
【Spring Boot 源码学习】深入应用上下文初始化器实现
《Spring Boot 源码学习系列》 深入应用上下文初始化器实现 一、引言二、往期内容三、主要内容3.1 spring-boot 子模块中内置的实现类3.1.1 ConfigurationWarningsApplicationContextInitializer3.1.2 ContextIdApplicationContextInitializer3.1.3 DelegatingApplicationConte…...
ZjDroid命令大全:从DEX内存dump到Lua脚本注入的完整教程
ZjDroid命令大全:从DEX内存dump到Lua脚本注入的完整教程 【免费下载链接】ZjDroid Android app dynamic reverse tool based on Xposed framework. 项目地址: https://gitcode.com/gh_mirrors/zj/ZjDroid ZjDroid是一款基于Xposed框架的Android应用动态逆向分…...
top50 BF16算力(TFLOPS) 显卡排行榜 天梯图
排名显卡型号BF16算力(TFLOPS)售价(元)单TFLOPS价格(元)1B200(SXM)45002200000488.892H200(SXM)19801200000606.063MI300X1307750000573.834H100 SXM519501100000564.105RTX PRO 6000 Blackwell1150780000678.266H100 PCIe 80GB1560850000544.877RTX 50906803400050.008A100 80…...
智能检索新范式,让AIAgent自主决策,提升RAG效率100%!
市面上的 RAG 系统,不管叫什么名字,本质上只有两种做法: 第一种,一次性检索。把用户的 query 向量化,从语料库里捞出 Top-K 个文档片段,拼成一个大 prompt 塞给模型。GraphRAG、HippoRAG、LightRAG 都属于…...
FeHelper前端助手:30+开发工具集,让你的浏览器变身效率神器
FeHelper前端助手:30开发工具集,让你的浏览器变身效率神器 【免费下载链接】FeHelper 😍FeHelper--Web前端助手(Awesome!Chrome & Firefox & MS-Edge Extension, All in one Toolbox!) 项目地址:…...
基于ATtiny84的智能冰箱监控器:低功耗温度与门状态监测方案
1. 项目概述:一个装在树莓派盒子里的智能冰箱管家如果你家里有台老冰箱,或者对食物储存温度特别在意,总担心冰箱门没关严或者突然断电导致内部升温,那么这个自己动手做的“冰箱看门狗”项目就太适合你了。它本质上是一个高度定制化…...
开源 AI Agent Harness Engineering 框架全览:LangChain, AutoGPT, CrewAI 孰优孰劣?
开源 AI Agent Harness Engineering 框架全览:LangChain, AutoGPT, CrewAI 孰优孰劣? 关键词 AI Agent Harness Engineering、大语言模型编排(LLM Orchestration)、LangChain、AutoGPT、CrewAI、工具调用(Tool Calling)、多Agent协作、自主任务规划 摘要 随着大语言模型…...
Allegro PCB设计小技巧:如何让Route Keepout区域既能走线又能打过孔(附详细步骤图)
Allegro PCB设计实战:Route Keepout区域的灵活控制技巧 在高速PCB设计中,Route Keepout区域的管理常常让工程师陷入两难境地——元件封装自带的限制区域与实际布线需求产生冲突。特别是处理PCIE等高速信号时,这种矛盾尤为突出。传统做法要么完…...
flameshow性能优化技巧:如何快速定位Go程序中的CPU热点
flameshow性能优化技巧:如何快速定位Go程序中的CPU热点 【免费下载链接】flameshow A terminal Flamegraph viewer. 项目地址: https://gitcode.com/gh_mirrors/fl/flameshow 🔥 想要快速定位Go程序中的性能瓶颈吗?flameshow是一个强大…...
【DeepSeek灰度发布黄金法则】:20年SRE亲授7步零故障上线实战框架
更多请点击: https://intelliparadigm.com 第一章:DeepSeek灰度发布策略全景图 DeepSeek模型服务的灰度发布并非简单的流量切分,而是一套融合可观测性、渐进式验证与多维熔断机制的工程化闭环体系。其核心目标是在保障线上推理稳定性的同时&…...
基于MAX78000的边缘AI语音识别:从模型训练到嵌入式部署实战
1. 项目概述与核心思路最近在捣鼓一个挺有意思的小项目,我把它叫做“声控转向控制器”。简单来说,这玩意儿能听懂你说的几个特定单词,比如“左转”、“右转”、“前进”、“后退”,然后控制对应的LED灯亮起。你可能会想࿰…...
