揭开 Amazon Bedrock 的神秘面纱 | 基础篇

news2024/11/18 13:45:20

在 2023 年 4 月,亚马逊云科技曾宣布将 Amazon Bedrock 纳入使用生成式人工智能进行构建的新工具集。Amazon Bedrock 是一项完全托管的服务,提供各种来自领先 AI 公司(包括 AI21 Labs、Anthropic、Cohere、Stability AI 和 Amazon 等)的高性能基础模型(FM),以及用于构建生成式人工智能应用程序的广泛功能,可简化开发,同时维护隐私和安全。

在 9 月底,我们欣喜地看到 Amazon Bedrock  已经正式发布了!为了帮助广大的中国开发者更快地上手 Amazon Bedrock,来更高效方便地构建生成式人工智能应用程序,特策划了这个“揭秘 Amazon Bedrock ”的系列。

亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点 这里让它成为你的技术宝库!

本文是“揭秘 Amazon Bedrock ”的第一篇:基础篇。

开始使用 Amazon Bedrock

可以通过亚马逊云科技管理控制台、亚马逊云科技软件开发工具包和开源框架(例如  LangChain)访问 Amazon Bedrock 中可用的基础模型(FM)。在 Amazon Bedrock 控制台中,可以浏览 FM,浏览和加载每个模型的示例用例和提示。首先,需要启用对模型的访问权限。在控制台中,选择左侧导航窗格中的模型访问权限并启用您要访问的模型。启用模型访问权限后,可以尝试不同的模型和推理配置设置,以找到适合用例的模型。

1.在 Amazon Bedrock 控制台中使用模型

在 Amazon Bedrock 控制台中,选择左侧导航窗格中的模型访问权限(Model access),然后启用您要访问的模型。启用模型访问权限后,可以选择使用 Playground 的交互方式或者 API 方式来使用模型了。

图片

例如,以下是使用 Claude v2 的 文本生成(Content Generation)用例示例:

图片

该示例显示了带有示例响应的提示、示例的推理配置参数设置以及运行该示例的 API 请求。如果您选择 “Open in Playground”,则可以在交互式控制台体验中进一步探索模型和用例。Amazon Bedrock 提供聊天、文字和图像模型的 Playground。在聊天平台中,您可以使用对话聊天界面尝试各种 FM。以下示例使用 Anthropic 的 Claude V2 模型,来询问中国香港最值得去的餐厅列表:

  • 《Anthropic》

https://www.anthropic.com/?trk=cndc-detail

图片

在评估不同的模型时,应尝试各种提示工程技术和推理配置参数。提示词工程(Prompt Engineering) 是一项令人兴奋的新技能,专注于如何更好地理解 FM 并将其应用于你的任务和用例。有效的提示词工程可以充分利用 FM 并获得正确而精确的响应。

以下示例是接着上面截图中 Claude V2 模型的回复,进一步询问铜锣湾附近值得去的餐厅:

图片

然后可以继续追问 Claude V2:“好的,请在具体一点,铜锣湾附近的广东菜餐厅呢?”,来测试下模型对上下文是否有正确的认知:

图片

推理配置参数会影响模型生成的响应。Temperature、Top-P 和 Top-K 等参数可让您控制随机性和多样性,而 “最大长度”(Maximum) 或 “最大标记”(Max Tokens) 控制模型响应的长度,如下图所示。

图片

请注意,每个模型都公开了一组不同但往往重叠的推理参数。这些参数要么在模型之间命名相同,要么足够相似,足以在你尝试不同的模型时进行推理。

你还可以在提示中提供示例,或者鼓励模型通过更复杂的任务进行推理。可以查看 Amazon Bedrock 文档(如下链接)和模型提供商的相应文档,以获取更多提示词建议和最佳实践:

https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-...

2.用 API 方式使用模型

本章我们将探讨如何通过boto3 Python SDK 来使用Amazon Bedrock 基础模型。

以下代码示例,将使用适用于 Python 的亚马逊云科技开发工具包 (Boto3) 与 Amazon Bedrock 进行交互。完整代码请参阅:

https://github.com/aws-samples/amazon-bedrock-workshop/blob/main/00_Intro/bedrock_boto3_setup.ipynb?trk=cndc-detail

关于适用于 Python 的亚马逊云科技开发工具包,可参考以下链接文档:

https://aws.amazon.com/sdk-for-python/?trk=cndc-detail

2.1 权限设置

首先需要设置 notebook 环境的角色和权限,必须具有足够的 IAM 权限才能调用 Amazon Bedrock 服务。

授予 Amazon Bedrock 权限的参考步骤如下:

  • 打开 IAM 控制台
  • 查找角色(如果使用 SageMaker 或以其他方式担任 IAM 角色),或者找到用户
  • 选择 “添加权限” > “创建内联策略” 以附加新的内联权限,打开 JSON 编辑器并粘贴以下示例策略:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "BedrockFullAccess",
            "Effect": "Allow",
            "Action": ["bedrock:*"],
            "Resource": "*" 
       }    
   ]
}

我使用我的 “sagemaker-demo-role-haowen” 角色,其中包括上面代码中的 “bedrock_full_access_haowen” 策略。如下面截图所示。

图片

2.2 环境设置

对于 SageMaker Studio,我的环境配置如下:

  • Data Science 3.0
  • Python 3
  • ml.m5.large
  • us-east-1 region

图片

对于 SageMaker Notebook Instances,我的环境配置如下:

  • Conda_Python3
  • ml.m5.large
  • us-east-1 region

图片

克隆示例代码并使用 Notebook

在 SageMaker Studio 中,可以通过单击 “File > New > Terminal” 打开 “System Terminal” 来运行这些命令。设置好笔记本环境后,将代码从 GitHub 上克隆到本地:

cd ~/SageMaker(in SageMaker Notebook instance) or cd ~(in SageMaker Studio)

git clone https://github.com/aws-samples/amazon-bedrock-workshop.gitcd amazon-bedrock-workshop/

bash ./download-dependencies.sh

图片

此脚本将创建一个依赖项文件夹并下载相关的 SDK,但暂时不会 pip 安装它们(安装过程将在后面将要介绍的这个.ipynb 文件里执行来完成)。软件包准备就绪后,你可以通过选择下面的.ipynb 文件开始你的 Amazon Bedrock 体验之旅:

amazon-bedrock-workshop/00_Intro/bedrock_boto3_setup.ipynb

完整的参考代码如下链接,供参考:

https://github.com/aws-samples/amazon-bedrock-workshop/blob/main/00_Intro/bedrock_boto3_setup.ipynb?trk=cndc-detail

2.3 创建 boto3 客户端

我们接下来与 Bedrock API 的交互是通过适用于 Python 的开发工具包 boto3 完成的,运行下面的单元把 boto3 安装到 notebook 内核中:

# Make sure you ran `download-dependencies.sh` from the root of the repository first!
%pip install --no-build-isolation --force-reinstall \
    ../dependencies/awscli-*-py3-none-any.whl \    
    ../dependencies/boto3-*-py3-none-any.whl \    
    ../dependencies/botocore-*-py3-none-any.whl

安装 LangChain 包:

%pip install --quiet langchain==0.0.304

在创建 Amazon Bedrock 服务客户端时,可能需要自定义设置。get_bedrock_client() 方法支持传入不同的选项,你可以在/utils/bedrock.py 这个文件之中找到这个方法的实现。如下所示。

import json
import osimport sys

import boto3

module_path = ".."
sys.path.append(os.path.abspath(module_path))
from utils import bedrock, print_ww

boto3_bedrock = bedrock.get_bedrock_client( 
    assumed_role=os.environ.get("BEDROCK_ASSUME_ROLE", None), 
    endpoint_url=os.environ.get("BEDROCK_ENDPOINT_URL", None),   
    region=os.environ.get("AWS_DEFAULT_REGION", None),
)
2.4 验证连通性

可以通过调用 list_foundation_models() 方法来检查客户端的设置是否正常,该方法将列出所有可供使用的基础模型(foundation models):

boto3_bedrock.list_foundation_models()

图片

2.5 模型输入和输出体格式设置

无论我们使用哪种模型,Amazon Bedrock 客户端的 invoke_model() 方法都是用于大多数文本生成和处理任务的主要方法。该方法输入和输出的格式因所使用的基础模型而异。

以下用 Claude 模型和 Stable Diffusion 模型分别举例说明。

Anthropic Claude
Input

{    
    "prompt": "\n\nHuman:<prompt>\n\nAnswer:",
    "max_tokens_to_sample": 300,
    "temperature": 0.5, 
    "top_k": 250, 
    "top_p": 1,
    "stop_sequences": ["\n\nHuman:"]
}

Output

{    
    "completion": "<output>",   
    "stop_reason": "stop_sequence"
}

Stability AI Stable Diffusion XL
Input

{    
    "text_prompts": [        
        {"text": "this is where you place your input text"}    
    ],    
    "cfg_scale": 10, 
    "seed": 0,  
    "steps": 50
}

Output

{     
    "result": "success",     
    "artifacts": [        
        {            
            "seed": 123,             
            "base64": "<image in base64>",            
            "finishReason": "SUCCESS"        
        },        
        //...    
    ]
}
2.6 常用推理参数定义
  • 随机性和多样性(Randomness and Diversity)

基础模型支持以下参数来控制响应的随机性和多样性。

温度(Temperature): 大型语言模型使用概率来构造序列中的单词。对于任何下一个单词,序列中下一个单词的选项都存在概率分布。将温度设置为接近零时,模型倾向于选择概率更高的单词;将温度设置得离零更远时,模型可能会选择一个概率较低的词。

Top K: 温度定义潜在单词的概率分布,前 K 定义模型不再选择单词的截止点。例如,如果 K=50,则模型会从 50  个最有可能出现在给定序列中的下一个单词中进行选择。这降低了在序列中下一个选择不寻常单词的可能性。

Top P - 根据潜在选择的概率之和定义截止点。如果您将 Top P 设置为 1.0 以下,则模型会考虑最可能的选项,而忽略较少可能的选项。Top P 与 Top K 类似,但它没有限制选择的数量,而是根据选项的概率之和来限制选择的数量。对于 “I hear the hoof beats of” 的示例提示,你可能希望模型将 “horses”、“zebras” 或 “unicorns” 作为下一个单词。如果将温度设置为最大值,而不封顶 Top K 或 Top P,则会增加出现异常结果(例如 “unicorns”)的可能性。如果将温度设置为 0,则会增加 “horses” 的概率。

如果您设置一个高的温度值,并同时将 Top K 或 Top P 设置为最大值,则会增加 “horses” 或 “zebras” 的概率,并降低 “unicorns” 的概率。

  • 长度(Length)

响应长度(Response length): 配置在生成的响应中使用的最小和最大 token 数。

长度惩罚(Length penalty): 长度惩罚通过惩罚较长的响应来优化模型,使其输出更加简洁。长度惩罚与响应长度不同,因为响应长度是最小或最大响应长度的硬截点。

从技术上讲,长度惩罚会对长度响应的模型造成指数级惩罚。0.0 表示没有惩罚。为模型设置一个小于 0.0 的值以生成更长的序列,或者为模型设置一个大于 0.0 的值以生成更短的序列。

  • 重复度(Repetitions)

重复度参数有助于控制生成的响应中的重复性。

重复惩罚(存在惩罚):防止在响应中重复相同的单词(标记)。1.0 表示没有惩罚,大于 1.0 可减少重复次数。

2.7 测试基础模型

介绍完上面的基本设置和一些参数后,让我们来看看模型的实际应用。以下逐行运行该示例 notebook 的代码,来看看如何使用 Amazon Bedrock API 来调用测试基础模型:

Amazon Titan Large 模型调用示例

# If you'd like to try your own prompt, edit this parameter!
prompt_data = """Command: Write me a blog about making strong business decisions as a leader.

Blog:
"""

body = json.dumps({"inputText": prompt_data})
modelId = "amazon.titan-tg1-large"
accept = "application/json"
contentType = "application/json"

response = boto3_bedrock.invoke_model(    
    body=body, modelId=modelId, accept=accept, contentType=contentType
)
response_body = json.loads(response.get("body").read())

print(response_body.get("results")[0].get("outputText"))

我自己运行以上代码后,获得的模型输出如下:

图片

Anthropic Claude 模型调用示例

# If you'd like to try your own prompt, edit this parameter!
prompt_data = """Human: Write me a blog about making strong business decisions as a leader.

Assistant:
"""

body = json.dumps({"prompt": prompt_data, "max_tokens_to_sample": 500})
# modelId = "anthropic.claude-instant-v1"  # change this to use a different version from the model provider
modelId = "anthropic.claude-v2"
accept = "application/json"
contentType = "application/json"

response = boto3_bedrock.invoke_model( 
    body=body, modelId=modelId, accept=accept, contentType=contentType
)
response_body = json.loads(response.get("body").read())

print(response_body.get("completion"))

复制代码我自己运行以上代码后,获得的模型输出如下:

图片

Stability Stable Diffusion XL 模型调用示例

prompt_data = "a fine image of an astronaut riding a horse on Mars"
body = json.dumps({ 
    "text_prompts": [{"text": prompt_data}],
    "cfg_scale": 10,   
    "seed": 20,   
    "steps": 50
})
modelId = "stability.stable-diffusion-xl"
accept = "application/json"
contentType = "application/json"

response = boto3_bedrock.invoke_model(  
    body=body, modelId=modelId, accept=accept, contentType=contentType
)
response_body = json.loads(response.get("body").read())

print(response_body["result"])
print(f'{response_body.get("artifacts")[0].get("base64")[0:80]}...')

import base64
import io
from PIL import Image

base_64_img_str = response_body.get("artifacts")[0].get("base64")
image = Image.open(io.BytesIO(base64.decodebytes(bytes(base_64_img_str, "utf-8"))))
image

我自己运行以上代码后,获得的模型输出如下:

图片

数据隐私和网络安全

使用 Amazon Bedrock,你可以控制自己的数据,并且所有输入和自定义设置保密。你的数据(例如输入提示、输出结果和微调模型)不会用于服务改进。此外,数据绝不会与第三方模型提供商共享。

你的数据会保留在处理 API 调用的区域。所有数据在传输过程中均使用 TLS 1.2 加密。传输完成后的静止数据(data at rest)将使用 KMS 的 AES-256 托管加密密钥进行加密。你也可以使用自己的密钥(customer managed keys)来加密数据。

可以将你自己的亚马逊云科技账户里的 VPC,配置为使用 VPC 终端节点(在PrivateLink 上构建);这种配置将通过亚马逊云科技的网络,安全地连接到 Amazon Bedrock。这种方式可以在 VPC 中运行的应用程序与 Amazon Bedrock 之间,实现安全和私密的数据通信连接。

Governance and Monitoring 治理和监测

Amazon Bedrock 与 IAM 集成,可帮助你管理 Amazon Bedrock 的权限。此类权限包括访问特定模型、访问 Bedrock 的 playground 或其它 Amazon Bedrock 的功能特性。所有亚马逊云科技托管的服务 API 活动,包括 Amazon Bedrock 活动,都将记录到你自己账户的  CloudTrail 中。

Amazon Bedrock 使用 “Amazon/Bedrock” 命名空间向 CloudWatch 发送数据点,以跟踪常见指标,例如:InputTokenCount、OutputTokenCount、InvocationLatency 和调用次数等。通过在搜索指标时指定模型 ID 维度,你可以筛选结果并获取特定模型的统计数据。

当你开始使用 Amazon Bedrock 构建生成式 AI 应用程序时,这种近乎实时的见解可以帮助你跟踪使用情况和成本(输入和输出 token 数量),并解决性能问题(调用延迟和调用次数)。

总结

本篇文章作为 Amazon Bedrock 的基础篇,介绍了使用 Amazon Bedrock 服务的两种基本使用方式:

  • 在 Amazon Bedrock 控制台中使用模型
  • 用 API 方式使用模型

篇幅所限,关于 Amazon Bedrock 的更高阶的功能特性,我们会在接下来的文章中继续探索和分析,敬请期待。

请持续关注 Build On Cloud 微信公众号,了解更多面向开发者的技术分享和云开发动态!

参考文献

1.Amazon Bedrock Is Now Generally Available – Build and Scale Generative AI Applications with Foundation Models
https://aws.amazon.com/blogs/aws/amazon-bedrock-is-now-genera...

2.Quickly build Generative AI applications with Amazon Bedrock
https://community.aws/posts/amazon-bedrock-quick-start?trk=cn...

3.Amazon Bedrock Workshop
https://catalog.us-east-1.prod.workshops.aws/workshops/a4bdb0...

Build On Cloud
我们是由技术布道师,社区经理,项目经理等角色组成的群体,致力于与开发者建立并维系积极的关系,进行持续的双向技术交流,以及构建充满活力的开发者社区和生态。 40篇原创内容
公众号

图片

文章来源:
https://dev.amazoncloud.cn/column/article/6528f32f959b5d5de0b35af2?sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=CSDN

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

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

相关文章

Python学习第一天-安装Python

文章目录 前言一、下载Python二、执行安装程序三、命令行验证总结 前言 以下榜单来自于TIOBE编程语言流行指数 不多说了&#xff0c;Python天下第一 一、下载Python 从官网下载Python安装程序 二、执行安装程序 找到python-3.12.0-amd64.exe执行&#xff0c;选择Install …

基于Python3的Scapy构造DNS报文

一&#xff1a;DNS协议 DNS&#xff08;Domain Name System&#xff09;协议是计算机网络中的一种基础协议&#xff0c;它用于将域名&#xff08;如www.baidu.com&#xff09;转换为IP地址&#xff08;如192.168.0.1&#xff09;&#xff0c;从而实现计算机之间的通信。 DNS 分…

【Unity地编细节】为什么Unity笔刷在地形上面刷不出来

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 &#x1f636;‍&#x1f32b;️收录于专栏&#xff1a;unity细节和bug &#x1f636;‍&#x1f32b;️优质专栏 ⭐【…

【编解码】解码字符串中的 UNICODE 字符

前言 由于前后端交互中编码的问题&#xff0c;出现了这样的一串字符&#xff1a; {"share_names":["\u4e2d\u6587\u8def\u5f84"]}出现了unicode编码作为字符串内容的情况&#xff0c;直接用json解析的话会报错&#xff0c;所以在json解析前需要先进行转码…

Linux | 深入浅出冯诺依曼

前言 但凡是科班出生的小伙伴多多稍稍应该都听过冯诺依曼体系吧&#xff0c;这似乎已成为入门计算机的必备知识了&#xff0c;本章就带着大家一起去理解冯诺依曼体系&#xff1b; 一、体系构成 冯诺依曼体系主张计算机由五大部件组成&#xff0c;如下所示&#xff1b; 输入设备…

进程(0)——计算机的中的软硬件【Linux】

进程&#xff08;0&#xff09;——计算机的中的软硬件【Linux】 一.硬件&#xff1a;1.1 冯诺依曼结构&#xff1a;1.2 存储金字塔1.2.1输入设备和存储器&#xff1a;1.2.2输出设备和存储器&#xff1a; 二.软件&#xff1a;2.1 操作系统2.1.1 如何理解管理&#xff1a; 博主自…

【Asp.net】Asp.net core中IIS配置注意事项

1、应用地址池设为无托管代码 一、提示&#xff1a;关于IIS上运行ASP.NET Core 站点的“HTTP 500.19”错误 安装dotnet-hosting-3.1.2-win.exe ASP.NET Core 3.1 Runtime (v3.1.2)下载地址&#xff1a; https://download.visualstudio.microsoft.com/download/pr/dd119832-dc4…

visual studio Qt 开发环境中手动添加 Q_OBJECT 导致编译时出错的问题

问题简述 创建项目的时候&#xff0c;已经添加了类文件&#xff0c;前期认为不需要信号槽&#xff0c;就没有添加宏Q_OBJECT,后面项目需要&#xff0c;又加入了宏Q_OBJECT&#xff0c;但是发现只是添加了一个宏Q_OBJECT&#xff0c;除此之外没有改动其它的代码&#xff0c;原本…

AWS Lambda 操作 RDS 示例

实现目标 创建一个 Lambda 接收调用时传入的数据, 写入 RDS 数据库 Post 表存储文章信息. 表结构如下: idtitlecontentcreate_date1我是标题我是正文内容2023-10-21 15:20:00 AWS 资源准备 RDS 控制台创建 MySQL 实例, 不允许 Public access (后面 Lambda 需要通过 VPC 访问…

【Qt进阶之自定义控件】使用QListWidget实现自定义Item效果

目的 Q&#xff1a;如何在Qt库的基础上&#xff0c;实现自定义控件呢&#xff1f; A&#xff1a;根据官方文档回答&#xff0c;就是继承需实现的控件&#xff0c;然后实现自定义功能。 以下是实现QListWidget控件的自定义item。 先看下最终效果是如何&#xff1a; listItem 主…

基于YOLO实现的口罩佩戴检测 - python opemcv 深度学习 计算机竞赛

文章目录 0 前言1 课题介绍2 算法原理2.1 算法简介2.2 网络架构 3 关键代码4 数据集4.1 安装4.2 打开4.3 选择yolo标注格式4.4 打标签4.5 保存 5 训练6 实现效果6.1 pyqt实现简单GUI6.3 视频识别效果6.4 摄像头实时识别 7 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xf…

正则表达式,日期选择器时间限制,报错原因

目录 一、正则表达式 1、表达式含义 2、书写表达式 二、时间限制 1、原始日期选择器改造 2、禁止选择未来时间 3、从...到...两个日期选择器的时间限制 三、Uncaught (in promise) Error报错 一、正则表达式 1、表达式含义 &#xff08;1&#xff09;/^([a-zA-Z0-9_.…

2.1.1BFS中的Flood Fill和最短路模型

1.池塘计数 农夫约翰有一片 N ∗ M N∗M N∗M 的矩形土地。 最近&#xff0c;由于降雨的原因&#xff0c;部分土地被水淹没了。 现在用一个字符矩阵来表示他的土地。 每个单元格内&#xff0c;如果包含雨水&#xff0c;则用”W”表示&#xff0c;如果不含雨水&#xff0c;…

Unity 文字显示动画(2)

针对第一版的优化&#xff0c;自动适配文字大小&#xff0c;TextMeshPro可以拓展各种语言。第一版字母类语言效果更好。 using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI;public partial class TextBeat…

CSS 三栏布局

左右两列定宽&#xff0c;中间自适应 浮动margin <style>.container {width: 500px;height: 200px;line-height: 200px;}.left {width: 100px;height: 100%;float: left;background: orange;text-align: center;}.right {width: 100px;height: 100%;float: right;back…

大模型必备算力:CPUGPU天梯图(2023年最新版)

在当今计算机世界&#xff0c;CPU、GPU和显卡的性能成为了衡量计算机性能的重要指标。今天深入了解CPU、GPU和显卡天梯图。 首先&#xff0c;CPU作为计算机的大脑&#xff0c;负责处理各种任务。它的性能主要由核心数、主频和缓存大小决定。其中&#xff0c;核心数和主频决定了…

学会使用Pandas进行数据清洗

大家好&#xff0c;如果你对数据科学感兴趣&#xff0c;那么数据清洗可能对你来说是一个熟悉的术语&#xff0c;本文将向你介绍使用Pandas进行数据清洗的过程。我们的数据通常来自多个资源&#xff0c;而且并不干净&#xff0c;它可能包含缺失值、重复值、错误或不需要的格式等…

二分查找,求方程多解

1.暴力遍历&#xff1a; 解为两位小数&#xff0c;故0.001的范围肯定可以包含&#xff08;零点存在&#xff09; 2.均分为区间长度为1的小区间&#xff08;由于两解&#xff0c;距离不小于1&#xff09;&#xff0c;一个区间最多一个解 1.防止两边端点都为解 2&…

JOSEF约瑟 JY82-III JY82-1P JY82J电压等级380V 检漏继电器 面板安装

系列型号&#xff1a; JY82A检漏继电器 JY82B检漏继电器 JY82-380/660检漏继电器 JY82-IV检漏继电器 JY82-2P检漏继电器 JY82-2/3检漏继电器 JJKY检漏继电器 JD型检漏继电器 JY82-IV;JY82J JY82-II;JY82-III JY82-1P;JY82-2PA;JY82-2PB 一、产品概述 检漏继电器 J…

GitHub和Gitee的区别以及具体使用

文章目录 GitHub和GiteeGitHub和Gitee区别GitHub的使用Gitee的使用 GitHub和Gitee GitHub和Gitee区别 速度不同&#xff1a;GitHub位于美国&#xff0c;而Gitee位于中国。这意味着在中国使用Gitee可能会有更快的访问速度和更好的稳定性。如果我们希望体验Git飞一般的速度&…