零基础5分钟上手亚马逊云科技 - AI模型内容安全过滤

news2024/12/23 9:15:19

在上一篇文章中,小李哥带大家深入调研亚马逊云科技AI模型平台Amazon Bedrock热门开发功能,了解了模型平台的文字/图片生成、模型表现评估和模型内容安全审核的实践操作。这次我们将继续介绍如何利用API的形式,利用Python代码的形式对AI模型内容安全过滤,阻止输入、输出中有危害的内容,提升模型在用户使用过程中的安全性。

 

方案所需基础知识

什么是Amazon Bedrock Guardrails?

Amazon Bedrock Guardrails是一个用于构建和部署生成式AI应用的工具和服务。它可以帮助开发人员在使用Amazon Bedrock的基础上创建生成内容时,确保模型的输出符合预期,并避免出现不安全或不适当的内容。这些工具为开发人员提供了一个安全、可控的环境来管理生成内容,从而使开发者们能够更安全、合规地使用生成式AI技术。

Guardrails不仅仅是一组简单的规则或限制,而是一个动态的框架,内置丰富的模型安全内容规律规则,允许开发人员根据特定的应用需求和行业标准来定义和执行合规要求。通过与Amazon Bedrock的集成,开发人员可以轻松地将这些安全措施应用到模型的训练、部署到推理的整个生命周期中。

09c928b1c6ae49108382f521fddfcbd7.png

 

为什么使用Amazon Bedrock Guardrails对模型内容进行安全过滤?

使用Amazon Bedrock Guardrails进行模型内容的安全过滤在为用户提供AI应用服务时非常重要,因为它可以帮助开发者确保生成内容的质量和安全性。在生成式AI应用中,模型有时可能会生成不准确、偏见或不适当的幻觉内容。通过使用Guardrails,开发者可以实施必要的安全过滤措施,减少这些风险。

Guardrails提供了实时监控和过滤功能,使得开发人员可以在内容生成的过程中自动检测并阻止潜在的有害输出。这种预防措施不仅保证了开发者项目质量,还帮助开发者可以遵守法律法规和行业标准,避免潜在的法律责任。

 

本实践包括的内容

1. 本实践中大家将会学习如何使用亚马逊云科技命令行工具AWS CLI,调用Amazon Bedrock API获取创建的模型防护链Guardrails信息

2.通过Python代码,调用亚马逊云科技Boto3 SDK API分别对模型输入和输出内容进行安全性审核和规律

 

功能实践具体步骤

Boto3 SDK中的ApplyGuardrail API 可用于评估所有 FM(包括 Amazon Bedrock 上的 FM、自定义和第三方 FM)的输入提示和模型响应,从而实现对所有生成式 AI 应用程序的集中治理。下面我们通过Python 代码的方式来展示这个功能。

1. 首先安装Python Boto3 SDK

#升级 boto3 到最新版本
!pip install --user -U boto3

2. 通过AWS CLI获取我们在上一篇文章中创建的名字为”Demo“的安全防护栏Guardrails的ID

#使用 aws cli 命令获取刚才创建的名称为 “demo” 的 Amazon Bedrock围栏
!aws bedrock list-guardrails --query 'guardrails[?contains(name, `demo`)]'

3. 运行命令后得到回复,可以得到ID为:”vewdslvdea87“

[
    {
        "id": "vewdslvdea87",
        "arn": "arn:aws:bedrock:us-east-1:[account-id-masked]:guardrail/vewdslvdea87",
        "status": "READY",
        "name": "demo",
        "version": "DRAFT",
        "createdAt": "2024-07-22T03:55:26Z",
        "updatedAt": "2024-07-22T03:55:52.017301903Z"
    }
]

4. 通过AWS CLI获取该防护栏”vewdslvdea87“所有的过去历史版本

#使用 aws cli 命令获取刚才创建的名称为 “demo” 的 Amazon Bedrock围栏的所有版本
!aws bedrock list-guardrails --guardrail-identifier "vewdslvdea87"

5. 得到过去历史的两个版本以及创建时间。

{
    "guardrails": [
        {
            "id": "vewdslvdea87",
            "arn": "arn:aws:bedrock:us-east-1:[account-id-masked]:guardrail/vewdslvdea87",
            "status": "READY",
            "name": "demo",
            "version": "DRAFT",
            "createdAt": "2024-07-22T03:55:26Z",
            "updatedAt": "2024-07-22T03:55:52.017301903Z"
        },
        {
            "id": "vewdslvdea87",
            "arn": "arn:aws:bedrock:us-east-1:[account-id-masked]:guardrail/vewdslvdea87",
            "status": "READY",
            "name": "demo",
            "description": "version 1",
            "version": "1",
            "createdAt": "2024-07-22T03:55:51Z",
            "updatedAt": "2024-07-22T03:55:52.017345499Z"
        }
    ]
}

6. 通过AWS CLI获取该防护栏具体的配置信息。在该配置中明确定义了大模型拒绝回复的话题,表示在输入或输出内容中出现该话题时,大模型将拒绝回复。也明确定义了在大模型敏感信息规则,当输入或输出内容中出现人名、车牌时,大模型将拒绝回复。

{
    "name": "demo",
    "description": "version 1",
    "guardrailId": "vewdslvdea87",
    "guardrailArn": "arn:aws:bedrock:us-east-1:[account-id-masked]:guardrail/vewdslvdea87",
    "version": "1",
    "status": "READY",
    "topicPolicy": {
        "topics": [
            {
                "name": "FSI",
                "definition": "Investment, buying stock / gold / futures / cryptocurrency etc",
                "examples": [],
                "type": "DENY"
            }
        ]
    },
    "contentPolicy": {
        "filters": [
            {
                "type": "SEXUAL",
                "inputStrength": "HIGH",
                "outputStrength": "HIGH"
            },
            {
                "type": "HATE",
                "inputStrength": "HIGH",
                "outputStrength": "HIGH"
            },
            {
                "type": "VIOLENCE",
                "inputStrength": "HIGH",
                "outputStrength": "HIGH"
            },
            {
                "type": "INSULTS",
                "inputStrength": "HIGH",
                "outputStrength": "HIGH"
            },
            {
                "type": "MISCONDUCT",
                "inputStrength": "HIGH",
                "outputStrength": "HIGH"
            },
            {
                "type": "PROMPT_ATTACK",
                "inputStrength": "HIGH",
                "outputStrength": "NONE"
            }
        ]
    },
    "wordPolicy": {
        "words": [
            {
                "text": "投资"
            },
            {
                "text": "虚拟货币"
            },
            {
                "text": "bitcoin"
            }
        ],
        "managedWordLists": [
            {
                "type": "PROFANITY"
            }
        ]
    },
    "sensitiveInformationPolicy": {
        "piiEntities": [
            {
                "type": "NAME",
                "action": "BLOCK"
            },
            {
                "type": "VEHICLE_IDENTIFICATION_NUMBER",
                "action": "BLOCK"
            }
        ],
        "regexes": []
    },
    "contextualGroundingPolicy": {
        "filters": [
            {
                "type": "GROUNDING",
                "threshold": 0.6
            },
            {
                "type": "RELEVANCE",
                "threshold": 0.7
            }
        ]
    },
    "createdAt": "2024-07-22T03:55:51Z",
    "updatedAt": "2024-07-22T03:55:52.017345499Z",
    "statusReasons": [],
    "failureRecommendations": [],
    "blockedInputMessaging": "Sorry, the model cannot answer this question.",
    "blockedOutputsMessaging": "Sorry, the model cannot answer this question."
}

7. 接下来进入正题,我们利用的自定义封装函数apply,调应Boto3 SDK提供 Amazon Bedrock Guardrail 独立评估API ApplyGuardrai 做文本审核

import boto3

#创建 AWS Bedrock Runtime 客户端对象,指定区域为 us-east-1
bedrockRuntimeClient = boto3.client('bedrock-runtime', region_name="us-east-1")

#封装函数,调用 Amazon Bedrock Guardrail 独立评估API ApplyGuardrai 做文本审核
def apply(guardrail_id, guardrail_version,source,text):

    response = bedrockRuntimeClient.apply_guardrail(
        guardrailIdentifier=guardrail_id,
        guardrailVersion=guardrail_version, 
        source=source, 
        content=[{"text": {"text": text}}]
    )
    
    print(response["action"])
                                                                                                                                                        
    if "outputs" in response and len(response["outputs"]) > 0:
        print(response["outputs"][0]["text"])
        print("Full response:", response)
    else:
        print("No output received from the guardrail.")
        print("Full response:", response)

8. 首先对输入内容进行安全评估,输入问题并调用函数Apply

#指定围栏ID、Version以及Source,测试文本审核

guardrailId = "vewdslvdea87"
guardrailVersion = "1"

source = "INPUT"
text = "我想购买bitboin."
apply(guardrailId, guardrailVersion, source, text)

得到回复表示该输入不符合我们配置的安全规则,拒绝回复。

GUARDRAIL_INTERVENED
Sorry, the model cannot answer this question.
Full response: {'ResponseMetadata': {'RequestId': 'ca03bf06-1e72-416f-990b-773349104ef1', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Mon, 22 Jul 2024 07:42:10 GMT', 'content-type': 'application/json', 'content-length': '514', 'connection': 'keep-alive', 'x-amzn-requestid': 'ca03bf06-1e72-416f-990b-773349104ef1'}, 'RetryAttempts': 0}, 'usage': {'topicPolicyUnits': 1, 'contentPolicyUnits': 1, 'wordPolicyUnits': 1, 'sensitiveInformationPolicyUnits': 1, 'sensitiveInformationPolicyFreeUnits': 0, 'contextualGroundingPolicyUnits': 0}, 'action': 'GUARDRAIL_INTERVENED', 'outputs': [{'text': 'Sorry, the model cannot answer this question.'}], 'assessments': [{'topicPolicy': {'topics': [{'name': 'FSI', 'type': 'DENY', 'action': 'BLOCKED'}]}}]}

9.接下来对输出内容进行安全评估,将输出内容作为参数传递给函数Apply

#指定围栏ID、Version以及Source,测试文本审核

guardrailId = "vewdslvdea87"
guardrailVersion = "1"

source = "OUTPUT"
text = """Elon Musk is a visionary entrepreneur and business magnate. 
    He is the CEO of Tesla, an electric vehicle company, and SpaceX, 
    an aerospace manufacturer focused on space exploration. 
    With his innovative ideas and ambitious goals, 
    Musk has significantly impacted the automotive and space industries."""

apply(guardrailId, guardrailVersion, source, text)

得到回复表示该输出内容不符合我们配置的安全规则,拒绝回复。

GUARDRAIL_INTERVENED
Sorry, the model cannot answer this question.
Full response: {'ResponseMetadata': {'RequestId': '33dc20d0-e34d-4cb3-a5d2-9b723f619b43', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Mon, 22 Jul 2024 07:42:12 GMT', 'content-type': 'application/json', 'content-length': '591', 'connection': 'keep-alive', 'x-amzn-requestid': '33dc20d0-e34d-4cb3-a5d2-9b723f619b43'}, 'RetryAttempts': 0}, 'usage': {'topicPolicyUnits': 1, 'contentPolicyUnits': 1, 'wordPolicyUnits': 1, 'sensitiveInformationPolicyUnits': 1, 'sensitiveInformationPolicyFreeUnits': 0, 'contextualGroundingPolicyUnits': 0}, 'action': 'GUARDRAIL_INTERVENED', 'outputs': [{'text': 'Sorry, the model cannot answer this question.'}], 'assessments': [{'sensitiveInformationPolicy': {'piiEntities': [{'match': 'Elon Musk', 'type': 'NAME', 'action': 'BLOCKED'}, {'match': 'Musk', 'type': 'NAME', 'action': 'BLOCKED'}]}}]}

以上就是在亚马逊云科技上沉浸式体验大模型平台Amazon Bedrock的有害内容筛选功能的全部步骤。欢迎大家关注小李哥的亚马逊云科技AI服务深入调研系列,未来获取更多国际前沿的AWS云开发/云架构方案。 

 

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

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

相关文章

OpenSearch的快照还原

本次测试选择把索引快照备份到Amazon S3,所以需要使用S3 repository plugin,这个插件添加了对使用 Amazon S3 作为快照/恢复存储库的支持。 OpenSearch集群自带了这个插件,所以无需额外安装。 由于需要和Amazon Web Services打交道&#xf…

工厂数字化转型中工业一体机起到什么作用?

近年来工厂数字化转型成为企业提升竞争力的关键路径。而在这场转型浪潮中,工业一体机扮演着至关重要的角色,它不仅是推动工厂数字化转型的关键工具,更是赋能企业实现更高效、智能、灵活生产的关键要素。 一、工业一体机:连接物理与…

CAN通信之波特率相关配置

由于 CAN 属于异步通讯,没有时钟信号线,连接在同一个总线网络中的各个节点会像串口异步通讯那样,节点间使用约定好的波特率进行通讯。 首先我们要明确几个概念: 波特率:can 1s传输的位数,其单位为bps。 T…

Vue3学习笔记之插槽

目录 前言 一、基础 (一) 默认插槽 (二) 具名插槽 (三) 作用域插槽 (四) 动态插槽 二、实战案例 前言 插槽(Slots)? 插槽可以实现父组件自定义内容传递给子组件展示,相当于一块画板,画板就是我们的子组件&…

速速报名|数据治理与数据建模workshop报名开启

由Datamodeling社区出品的「数据治理与数据建模workshop 」将在9月份正式启动上海站和深圳站。 本课程由社区特邀讲师王琤老师、黄峰老师授课,两位老师基于丰富的数据管理经验提炼出知识体系,以面对面带练的方式,帮助学习者快速掌握数据建模…

dp+差分数组

前言&#xff1a;怎么也没想到要用dp来做&#xff0c;并且这个题目中如果列为1的话还要特殊考虑 题目地址 #include<bits/stdc.h> using namespace std;//#define int long long const int N (int)5e3 10; int dp[N][N][2]; // 0 表示上端点&#xff0c;1表示下端点 in…

正确枚举 Winlogon 桌面窗口层次

目录 前言 原理解释 原理实现 Winlogon 桌面窗口层次 本文出处链接&#xff1a;https://blog.csdn.net/qq_59075481/article/details/141608316。 前言 众所周知&#xff0c;从 Windows 7 开始&#xff0c;Winlogon 桌面不再使用 SASWindow 作为背景窗口&#xff0c;而是采…

翻斗雨量监测站

翻斗雨量监测站通常用于测量和记录降雨量&#xff0c;其主要功能包括&#xff1a; 测量降雨量&#xff1a;翻斗雨量监测站使用翻斗式测量原理&#xff0c;通过记录翻斗倒转的次数或翻斗中积累的水量来测量降雨量。可以准确地记录降雨量的变化。 记录降雨时间&#xff1a;翻斗雨…

PowerDesigner生成数据字典文档

PowerDesigner生成数据字典文档 目录 1. 设置报告 2. 导出报告 3. 查看报告 设置报告 删除多余的选项&#xff0c;只保留【LIst of Table Columns -表%PARENT%的栏的清单】选项。 只显示Name、Code、Data Type、Length、Is Key等列 导出报告 查看报告

如何用Java SpringBoot+Vue构建房产信息管理系统?详解开发流程

&#x1f393; 作者&#xff1a;计算机毕设小月哥 | 软件开发专家 &#x1f5a5;️ 简介&#xff1a;8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 &#x1f6e0;️ 专业服务 &#x1f6e0;️ 需求定制化开发源码提…

互联网应用主流框架整合之Spring缓存机制和Redis结合

Redis和数据库的结合 在实际的商用软件使用中&#xff0c;通常都是Redis和关系型数据配置使用&#xff0c;单纯使用Redis来存数据成本太高&#xff0c;并且其持久化和计算能力偏差&#xff0c;这两块无法和关系型数据相比较&#xff0c;而Redis和关系型数据库共存的场景就会带…

C++必修:set与map的模拟实现

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C学习 贝蒂的主页&#xff1a;Betty’s blog 1. set与map的结构 我们知道STL中的set与map底层就是一颗红黑树&#xff0c;接下…

如何在Spring中为`@Value`注解设置默认值

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

如何处理在学校Linux连接不上服务器

一、问题描述 当我们在周末在图书馆背着室友偷偷学习时&#xff0c;准备好好学习Linux&#xff0c;争取在日后大展拳脚时&#xff0c;却突然尴尬的发现&#xff0c;连接不上服务器&#xff0c;总是出现以下画面&#xff1a; 那么&#xff0c;我们该如何解决问题呢&#xff1f; …

螺杆支撑座与滚珠丝杆的精准适配!

螺杆支撑座与滚珠丝杆的适配是确保机械系统的稳定性、精度和耐用性的关键&#xff0c;其适配方法主要包括螺纹连接、联轴器连接、锁紧连接。 螺杆支撑座种类多样&#xff0c;每种类型都有其特定的适用范围和性能特点。因此&#xff0c;根据滚珠丝杆的规格和应用需求&#xff0c…

Python接口测试之如何使用requests发起请求例子解析

在Python中&#xff0c;使用requests库发起HTTP请求是一种常见的接口测试方法。以下是一些使用requests库的基本示例&#xff0c;涵盖了GET、POST、PUT、DELETE等HTTP方法。 安装requests库 首先&#xff0c;确保你已经安装了requests库。如果未安装&#xff0c;可以通过以下…

【系统分析师】-案例篇-数据库

1、分布式数据库 1&#xff09;请用300字以内的文字简述分布式数据库跟集中式数据库相比的优点。 &#xff08;1&#xff09;坚固性好。由于分布式数据库系统在个别结点或个别通信链路发生故障的情况下&#xff0c;它仍然可以降低级别继续工作&#xff0c;系统的坚固性好&…

线程:线程创建pthread_create,线程间的同步与互斥

线程的创建 线程的创建是通过调用pthread_create函数来实现的。该函数的原型如下&#xff1a; int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);参数说明&#xff1a; thread&#xff1a;指向pthread_t类型…

开源word文档相似度对比 软件WinMerge

WinMerge 官网下载 &#xff1a;GitHub - WinMerge/winmerge: WinMerge is an Open Source differencing and merging tool for Windows. WinMerge can compare both folders and files, presenting differences in a visual text format that is easy to understand and hand…

ros2_python编程_多个文件python打包_目录拷贝_解决import错误问题ModuleNotFoundError

1.问题 ros2 python编写程序, 有多个python文件 如何打包多个python文件?解决import错误问题如何打包 有python目录结构的工程 1.ros2 多个python文件示例 代码目录结构, gitee 在线代码 tree 7_multi_file_setup/ 7_multi_file_setup/ ├── file1.py ├── main_node.…