Amazon Bedrock 实践 | 动手玩转 Claude 3

生成式 AI 和大模型在 2024 年已经进入落地实践阶段。因此,围绕开发者在生成式应用程序开发中的主要痛点和需求,我们组织了这个 “Amazon Bedrock 实践” 的系列,希望可以帮助开发者高效地上手生成式 AI 和大模型的应用开发,本篇为第一篇。

Amazon Bedrock 是亚马逊云科技提供的一项服务,可以让开发者轻松使用称为基础模型(Foundation Model)的强大 AI 模型。以下是其关键功能概述:

  • 访问高性能基础模型: Amazon Bedrock 提供对由领先 AI 公司和亚马逊自身开发的各种基础模型的访问权限。这些基础模型在大量数据上进行训练,可以执行各种任务,包括文本生成、图像识别和代码完成等
  • 统一的 API: 开发者可以通过单个 API 与所有可用的基础模型进行交互,简化了在应用程序中使用基础模型的复杂过程,这消除了为每个基础模型学习不同 API 的必要性
  • 轻松集成: Amazon Bedrock 是一项完全托管的服务,这意味着亚马逊云科技会负责管理底层基础设施,使开发者可以专注于构建应用程序,而无需担心服务器设置和维护
  • 安全性和隐私性: Amazon Bedrock 提供了相关的功能来帮助开发者构建安全和私密的 AI 应用程序,开发者可以控制对基础模型和数据的访问,从而保护开发者的数据隐私
  • 专注于生成式 AI: 虽然基础模型可以执行各种任务,但 Amazon Bedrock 特别关注生成式 AI 应用程序,这些应用程序使用 AI 创建新内容,例如文本、图像或代码等

总体而言,Amazon Bedrock 是一个功能强大的工具,适用于希望利用尖端 AI 模型的功能的开发人员,而无需管理底层基础设施的复杂性。

本文主要以 Claude 3 模型为例,探讨如何使用 Amazon Bedrock 构建不同业务场景的生成式 AI 应用程序。本文主要包括四部分内容:

  • 在 Amazon Bedrock 中设置和获取模型访问权限
  • 在 Amazon Bedrock 控制台中使用模型
  • 调用 Amazon Bedrock API 来使用模型
  • Amazon Bedrock 参考资料

本篇探讨的 Anthropic Claude 3 模型,目前仅在亚马逊云科技的海外账户可用。

在 Amazon Bedrock 中设置和获取模型访问权限

首先我们需要在 Amazon Bedrock 中,获取特定模型的访问权限。以下将以 Claude 3 模型为例,逐步指导开发者们配置和获取模型的访问权限。

第一步:进入到 Amazon Bedrock 的 UI 控制台。 点击 Get started:

image.png

在这里我们可以看到 Amazon Bedrock 支持多个基础模型(foundation model),其中包括 Amazon Titan,Claude,Jurassic,Command,Mistral,Stable Diffusion 以及 Llama2。如下图所示:

image.png

确认右上角区域,若已是 Oregon,这一步跳过。若不是,请在右上角选择 Oregon,选择 us-west-2:

image.png

左侧的导航栏中点击 Model access,如下图所示:

image.png

若已有相应模型权限,即模型后面是 Access granted,可跳过这一步。否则,点击 Manage model access:

image.png

点击“Submit use case details” 来申请访问相关模型。如果你有详细的使用场景案例,你可以简述你的使用场景。对于一般测试,你可参考下图填写相关内容。在这个弹出的窗口里填写完成后,点击“Submit”提交:

image.png

成功提交之后,选择左上角的 CheckBox 选中所有 model,之后点击“Request model access”:

image.png

如果你已经完成提交并已经获得模型的访问权,你会看到如下图所示:

image.png

接下来,我们先探索在控制台使用 Playgrounds 的方式,测试 Claude 3 模型。

首先,在左侧的导航栏中点击 “Playgrounds – Chat” 进入聊天界面:

image.png

点击 Select model 来选择我们要使用的基础模型

image.png

我们选择 Anthropic 的 Claude 3 模型(Sonnet v1 或者 Haiku v 1)来体验其强大的推理能力和中文处理能力,点击“Apply”:

image.png

可以调整右侧的参数,然后就可以在聊天窗口中输入提示词和上传图片,回车或点击 “Run” 按钮获取模型输出。如下图所示:

image.png

至此,我们已经完全了解了如何在 Amazon Bedrock 中,获取 Claude 3 模型的访问权限。

在下一节里,我们将通过几种实际场景,详细诠释如何在控制台使用 Claude 3 模型。

在Amazon Bedrock 控制台中使用模型

本节将以 Claude 3 模型为例,阐述如何在Amazon Bedrock 控制台中使用模型。

翻译场景

首先我们测试下 Claude 3 模型的翻译场景。

测试的内容节选自了 3 月初 NVIDIA CEO (Jensen Huang) 在 Stanford University 的访谈视频。如果你是 AI 和机器学习行业的开发者、工程师、数据科学家等,该视频非常值得观看。在这个一小时左右的视频中,Jensen 在分享他眼中 AI 的未来之外,也分享了他对创业、人生选择、以及人类未来命运等经验和精彩观点,这些经验和观点建议,对从事该领域的年轻人非常有借鉴意义。

视频在 B 站上的链接如下:www.bilibili.com/video/BV15S… (有中文字幕)

回到我们这个用 Claude 3 测试翻译场景的例子。

我们先在 Amazon Bedrock Playground 中,输入以下提示词(prompt)。其中“<org></org>”定义的英文脚本,节选自以上访谈视频的内容:

你是一个帮助翻译剧本的助理。 你的任务是将中的英文源文本翻译成中文。翻译时,请遵守以下规则:

1/ 不要改变初衷

2/ 翻译前先了解上下文,保持语义连贯,阅读流畅,但不要故意夸大

3/ 原文大多是对话式的,因此翻译仍应符合 TikTok/ 短视频/视频博客 /Youtube 视频的上下文。注意避免使用通常不用于日常聊天的词语

4/适当的时候保留一些专有名词或专业术语未翻译,注意前后一致

5/ 在<result><result>中回复翻译。不要包含任何额外的内容

<org> “Stanford Business Graduate School of Business student Jose: My name’s Jose, I’m a class with the 2023 from the GSB. My question is, are you worried at all about the pace at which we’re developing AI? And do you believe that any sort of regulation might be needed? Thank you.

Jensen Huang: Yeah, the answer is yes and no. The greatest breakthrough in modern AI, of course deep learning, and it enabled great progress. But another incredible breakthrough is something that humans know and we practice all the time. And we just invented it for language models called grounding, reinforcement learning human feedback. I provide reinforcement learning human feedback every day. That’s my job. And for the parents in the room, you’re providing reinforcement learning human feedback all the time, okay? Now, we just figured out how to do that at a systematic level for artificial intelligence.” </org>

image.png

点击“Run”,查看模型输出的翻译结果。如下图所示:

image.png

由翻译结果可见,Claude 3 还是翻译地比较自然的。

事实问答场景

接下来我们探索事实问答场景。在 Playground 中输入以下提示词(prompt)。

先用英文向 Claude 3 模型发问:

Could you please list the major events that happened in Istanbul between 1800 and 1900?

image.png

再用中文向 Claude 3 模型发问:

请罗列在 1800-1900 年伊斯坦布尔发生的大事。

image.png

可见,无论是中文还是英文发问,Claude 3 都抓住了历史上的主要事件,没有明显的事实错误和编造。

各位开发者可以自行修改提示词中的内容,进行更多事实问答的测试。

小说续写场景

然后是小说续写场景,看看如何用 Claude 3 大模型来写一篇精彩的小说。

在 Playground 中输入以下提示词(prompt):

小说续写 “剑·花·烟雨江南" 要有画面感和沧桑感,字数在 300 字以内

image.png

我们修改下 prompt,增加 story 风格的要求,修改提示词(prompt)如下:

模仿小说家古龙的风格, 小说续写 “剑·花·烟雨江南" 要有画面感和沧桑感,字数在 300 字以内

image.png

我们修改下 prompt,再修改下对故事风格的要求,修改的提示词(prompt)如下:

模仿莎士比亚的风格, 小说续写 “剑·花·烟雨江南" 要有画面感和沧桑感,字数在 300 字以内

image.png

你也可以在 Chat playground 里,比较两个不同的 Claude 3 模型(Haiku 和 Sonnet)的反应速度和输出,打开如下这个开关即可:

image.png

你会发现 Claude 3 Haiku 反应非常之快,对比于 Claude 3 Sonnet 模型,使用同样的提示词(prompt):

模仿小说家古龙的风格, 小说续写 “剑·花·烟雨江南" 要有画面感和沧桑感,字数在 300 字以内

在你点击完“Run”按钮之后,几乎 1 秒内就得到了返回结果。如下图所示:

image.png

图像理解场景

接下来是图像理解场景。

下图我在广州高铁站的星巴克里消费的一张小票,我准备发给 Claude 3 模型去理解,看看它怎么分析这张小票。

image.pngimage.png

如果我们继续输入对 Claude 3 模型的要求,比如:

请用简体中文描述你理解的图片中的内容

image.png

好的, 我用简体中文描述图片中的内容:

这是一张星巴克咖啡店的收银小票,位于广州市南站 3F-A5 店铺。小票上显示了店铺地址、顾客姓名(张 Ashley)、订购的商品和价格、总金额以及交易时间。图片中没有出现任何人物照片,因此不需要避免识别人物身份。

小结

我们发现 Claude 3 理解基本正确,除了把这张收据上的“Ashley ZHANG”理解成了顾客(其实是星巴克当时的下单售货员)。其实这也不是 Claude 3 的错,因为在这张原始的收据上,从字面并没有说清楚“Ashley ZHANG”到底是顾客,还是星巴克的销售员呢!

还有很多有趣并实用的场景,我们将在下一集提高篇里,继续和大家分享。

调用 Amazon Bedrock API 使用模型

在前面的章节里,我们探讨了在 Amazon Bedrock 控制台访问模型。在本节中,我们将探讨如何编写一些简单代码,调用 Amazon Bedrock API 来使用模型。

运行环境配置

本例中使用了 Amazon SageMaker Notebook instances 环境,来调用 Amazon Bedrock API 访问各种大模型。如下图所示:

image.png

提醒:运行这个 notebook instance 的 role,需要具有访问 Amazon Bedrock 的权限。

本例中作者配置了 sagemaker-demo-role-haowen 这个自定义的 role 来运行 notebook instance。这个自定义的 role 中,包含了可以完全访问 Bedrock 的策略AmazonBedrockFullAcess,这个策略赋予了访问 Bedrock 服务的 full access 权限。如下图所示:

image.png

如果你想在本地电脑运行以上代码,需要在你的本地电脑先配置 Credentials,具体可参考: boto3.amazonaws.com/v1/document…

代码功能分析

我们仍然以 Claude 3 模型为例,以下 Python 代码示例展示了如何使用 Amazon Bedrock,分别调用 Claude 3 的 Sonnet 模型和 Haiku 模型,描述一个输入的图像,并打印出其耗时等信息。另外,代码还比较了非流式、流式两种不同的调用方式。

代码涉及的主要功能如下:

编码图像:将给定图像转换为用于传输的 base64 编码字符串

调用大型语言模型生成文本:调用了两个模型(Sonnet 和 Haiku)来生成文本

处理模型响应:以两种模式(流式和非流式)分别来捕获模型输出

测量性能指标:记录输入和输出文本片段(token)计数、首字节延迟和整体调用延迟

完整代码如下所示:

python复制代码!pip install -qU boto3 import json
import os
import sys
import boto3
import base64
import requests
import time
import pprint
from datetime import datetime#获得模型的modelARN
region = 'us-east-1'#'us-west-2' #
boto3_bedrock = boto3.client('bedrock',region)
boto3_bedrock.list_foundation_models()#获得实验图像,你也可以在这里替换为任何你自己想描述的图像
!wget https://cats.com/wp-content/uploads/2020/10/tabby-maine-coon-768x384.jpgstream = False
# Function to encode the image 编码图像的函数
def encode_image(image_path):with open(image_path, "rb") as image_file:return base64.b64encode(image_file.read()).decode('utf-8')# non streaming mode 非流式调用方式
def anthropic_claude_3(modelId,image_path,max_tokens):bedrock_runtime = boto3.client('bedrock-runtime')base64_image = encode_image(image_path)payload = {"modelId": modelId,"contentType": "application/json","accept": "application/json","body": {"anthropic_version": "bedrock-2023-05-31","max_tokens": max_tokens,"messages": [{"role": "user","content": [{"type": "image","source": {"type": "base64","media_type": "image/png","data": base64_image}},{"type": "text",#"text": "Write me a detailed description of these two photos, and then a poem talking about it.""text": f"What’s in this image? output {max_tokens} tokens"}]}]}}# Convert the payload to bytes 转换负荷到字节body_bytes = json.dumps(payload['body']).encode('utf-8')# Invoke the model 调用模型response = bedrock_runtime.invoke_model(body=body_bytes,contentType=payload['contentType'],accept=payload['accept'],modelId=payload['modelId'])# Process the response 处理响应response_body = json.loads(response['body'].read().decode('utf-8'))pprint.pprint(response_body)#return round(end-start,2),response_body["usage"]["input_tokens"],response_body["usage"]["output_tokens"]return round(float(response['ResponseMetadata']['HTTPHeaders']['x-amzn-bedrock-invocation-latency'])/1000,2),int(response['ResponseMetadata']['HTTPHeaders']['x-amzn-bedrock-input-token-count']),int(response['ResponseMetadata']['HTTPHeaders']['x-amzn-bedrock-output-token-count'])# streaming mode 流式调用方式
def anthropic_claude_3_stream(modelId,image_path,max_tokens):bedrock_runtime = boto3.client('bedrock-runtime')base64_image = encode_image(image_path)payload = {"modelId": modelId,"contentType": "application/json","accept": "application/json","body": {"anthropic_version": "bedrock-2023-05-31","max_tokens": max_tokens,"messages": [{"role": "user","content": [{"type": "image","source": {"type": "base64","media_type": "image/png","data": base64_image}},{"type": "text",#"text": "Write me a detailed description of these two photos, and then a poem talking about it.""text": f"What’s in this image? output {max_tokens} tokens"}]}]}}# Convert the payload to bytesbody_bytes = json.dumps(payload['body']).encode('utf-8')# Invoke the modelresponse = bedrock_runtime.invoke_model_with_response_stream(body=body_bytes, modelId=payload['modelId'], accept=payload['accept'], contentType=payload['contentType'])stream = response.get('body')chunk_obj = {}if stream:for event in stream:chunk = event.get('chunk')if chunk:chunk_obj = json.loads(chunk.get('bytes').decode())pprint.pprint(chunk_obj)# Process the response#response_body = json.loads(response['body'].read().decode('utf-8'))#pprint.pprint(response_body){'type': 'message_stop', 'amazon-bedrock-invocationMetrics': {'inputTokenCount': 92, 'outputTokenCount': 277, 'invocationLatency': 3679, 'firstByteLatency': 677}}return round(float(chunk_obj['amazon-bedrock-invocationMetrics']['firstByteLatency'])/1000,2),round(float(chunk_obj['amazon-bedrock-invocationMetrics']['invocationLatency'])/1000,2),chunk_obj['amazon-bedrock-invocationMetrics']['inputTokenCount'],chunk_obj['amazon-bedrock-invocationMetrics']['outputTokenCount']# 调用结果
image_path = "tabby-maine-coon-768x384.jpg"
max_tokens = 200
#haiku
print("Haiku:")
modelId = "anthropic.claude-3-haiku-20240307-v1:0"
print(anthropic_claude_3(modelId,image_path,max_tokens))
print(anthropic_claude_3_stream(modelId,image_path,max_tokens))  
#sonnet
print("Sonnet:")
modelId = "anthropic.claude-3-sonnet-20240229-v1:0"
print(anthropic_claude_3(modelId,image_path,max_tokens))
print(anthropic_claude_3_stream(modelId,image_path,max_tokens))
模型输出分析

以下摘要分析了两个不同的模型(Haiku 和Sonnet)的有趣输出结果。

对于 Haiku 模型

vbnet复制代码{'content': [{'text': 'This image depicts a beautiful Maine Coon cat sitting ''on a scratching post or cat tree. The cat has a thick, ''fluffy coat with a distinctive tabby pattern of stripes ''and markings. Its eyes are alert and focused, adding a '"regal and intelligent expression to the feline's "'appearance. The background appears to be a cozy indoor ''setting, with the cat perched comfortably on the ''scratching post. Maine Coon cats are known for their ''large size, friendly personalities, and impressive ''physical features, and this image captures the essence ''of this majestic breed perfectly.','type': 'text'}],
……
{'amazon-bedrock-invocationMetrics': {'firstByteLatency': 291,'inputTokenCount': 489,'invocationLatency': 3431,'outputTokenCount': 128},
……

对于 Sonnet 模型

vbnet复制代码{'content': [{'text': 'This image shows a beautiful Maine Coon cat resting on ''a cat tree or scratching post. The Maine Coon is a ''large semi-longhaired breed known for its fluffy fur, ''tufted ears, and bushy tail.\n''\n''The cat in the picture has a brown tabby coat with ''distinctive striped markings. Its face has a ''distinctive "M" marking above the eyes, typical of '"tabby cats. The cat's large, expressive eyes are a "'striking yellow-green color, giving it an intense yet ''gentle gaze.\n''\n''The feline is lounging comfortably on a beige carpeted ''platform, with one paw tucked under its body and the ''other extending forward. The cat tree or post appears ''to be made of sisal rope wrapped around a wooden frame, ''providing an ideal surface for the cat to scratch and ''stretch.\n''\n''The background is slightly blurred, but it seems to be ''an indoor setting, perhaps a living room','type': 'text'}],
……
{'amazon-bedrock-invocationMetrics': {'firstByteLatency': 1752,'inputTokenCount': 443,'invocationLatency': 9279,'outputTokenCount': 139},'type': 'message_stop'}

从 invocationLatency 指标以及firstByteLatency 指标,可以清晰的看到 Haiku 模型比 Sonnet 模型响应速度快得多,这一点和 Claude 3 模型系列的亚马逊官方网站介绍是一致的,即:

“该系列包括三种型号:Claude 3 Haiku,最快、最紧凑的型号,可实现近乎即时的响应;Claude 3 Sonnet,技能和速度的理想平衡模型;Claude 3 Opus,最智能的产品,可在高度复杂的任务上实现顶级性能。”

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

资源分享

图片

大模型AGI学习包

图片

图片

资料目录

  1. 成长路线图&学习规划
  2. 配套视频教程
  3. 实战LLM
  4. 人工智能比赛资料
  5. AI人工智能必读书单
  6. 面试题合集

人工智能\大模型入门学习大礼包》,可以扫描下方二维码免费领取

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

图片

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩

图片

3.LLM

大家最喜欢也是最关心的LLM(大语言模型)

图片

人工智能\大模型入门学习大礼包》,可以扫描下方二维码免费领取

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

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

相关文章

SMS群发信息API接口安全性有哪些保障方法?

SMS群发信息API接口支持哪些格式&#xff1f;如何使用API接口&#xff1f; SMS群发信息API接口被广泛应用于企业营销、客户服务、身份验证等多个领域。确保SMS群发信息API接口的安全性&#xff0c;已成为企业和开发者们必须重视的问题。AoKSend将探讨几种保障SMS群发信息API接…

GeoServer改造Springboot源码十(样式管理设计)

GeoServer改造Springboot源码一&#xff08;公共部分&#xff09; GeoServer改造Springboot源码二&#xff08;数据源管理设计&#xff09; GeoServer改造Springboot源码三&#xff08;数据源管理代码&#xff09; GeoServer改造Springboot源码四&#xff08;图层管理设计&a…

CNN的小体验

用的pytorch。 训练代码cnn.py&#xff1a; import torch import torch.nn as nn import torch.optim as optim import torchvision import torchvision.transforms as transforms import torch.nn.functional as F# 定义超参数 num_epochs 10 batch_size 100 learning_rat…

使用Python绘制彩虹效果:动态彩虹动画

文章目录 引言准备工作前置条件 代码实现与解析导入必要的库初始化Pygame定义绘制彩虹函数定义颜色列表主循环 完整代码 引言 彩虹是自然界中最美丽的现象之一。通过编程&#xff0c;我们可以将这一奇妙的景象带到屏幕上。在这篇博客中&#xff0c;我们将使用Python来创建一个…

聊聊 golang 的 map

1、哈希表 哈希表是一个很常见的数据结构&#xff0c;用来存储无序的 key/value 对&#xff0c;给定的 key 可以在 O(1) 时间复杂度内查找、更新或删除对应的 value。 设计一个好的哈希表&#xff0c;需要着重关注两个关键点&#xff1a;哈希函数、冲突处理。 1.1 哈希函数 …

Redis 高级数据结构业务实践

0、前言 本文所有代码可见 > 【gitee code demo】 本文会涉及 hyperloglog 、GEO、bitmap、布隆过滤器的介绍和业务实践 1、HyperLogLog 1.1、功能 基数统计&#xff08;去重&#xff09; 1.2、redis api 命令作用案例PFADD key element [element ...]添加元素到keyPF…

力扣 用队列实现栈(Java)

核心思想&#xff1a;因为队列都是一端进入另一端出&#xff08;先进先出&#xff0c;后进后出&#xff09;&#xff0c;因此一个队列肯定是不能实现栈的功能的&#xff0c;这里就创建两个队列来模拟栈的先进后出&#xff0c;后进先出。 比如说如果是push操作我们肯定是要弹出栈…

STM32自己从零开始实操08:电机电路原理图

一、LC滤波电路 其实以下的滤波都可以叫低通滤波器。 1.1倒 “L” 型 LC 滤波电路 1.1.1定性分析 1.1.2仿真实验 电感&#xff1a;通低频阻高频的。仿真中高频信号通过电感&#xff0c;因为电感会阻止电流发生变化&#xff0c;故说阻止高频信号 电容&#xff1a;隔直通交。…

65、基于卷积神经网络的调制分类(matlab)

1、基于卷积神经网络的调制分类的原理及流程 基于卷积神经网络&#xff08;CNN&#xff09;的调制分类是一种常见的信号处理任务&#xff0c;用于识别或分类不同调制方式的信号。下面是基于CNN的调制分类的原理和流程&#xff1a; 原理&#xff1a; CNN是一种深度学习模型&a…

SpringBoot学习06-[SpringBoot与AOP、SpringBoot自定义starter]

SpringBoot自定义starter SpringBoot与AOP SpringBoot与AOP 使用AOP实现用户接口访问日志功能 添加AOP场景启动器 <!--添加AOP场景启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</…

都2024了,现在搞本HCIE真的还来得及?

信息技术的迅猛发展&#xff0c;网络的飞速进步&#xff0c;网络工程师这一职业的需求也在不断增加。 作为华为认证体系中的顶级认证&#xff0c;HCIE一直以来都是网络工程师追求的目标之一。 都2024了&#xff0c;厂商认证都火了十几年来&#xff0c;很多人犹犹豫豫&#xff0…

Mybatis1(JDBC编程和ORM模型 MyBatis简介 实现增删改查 MyBatis生命周期)

目录 一、JDBC编程和ORM模型 1. JDBC回顾 2. JDBC的弊端 3. ORM模型 Mybatis和hibernate 区别: 4. mybatis 解决了jdbc 的问题 二、MyBatis简介 1. MyBatis快速开始 1.1 导入jar包 1.2 引入 mybatis-config.xml 配置文件 1.3 引入 Mapper 映射文件 1.3 测试 …

Ubuntu Server 和 Ubuntu Desktop 组合使用

1.常见的组合使用方式 Ubuntu Server 和 Ubuntu Desktop 确实可以组合使用&#xff0c;但具体要看你的需求和使用场景。以下是一些常见的组合使用方式&#xff1a; 单一设备上安装&#xff1a;你可以在一台设备上同时安装 Ubuntu Server 和 Ubuntu Desktop。这样&#xff0c;你…

【ARM系列】1of N SPI

1 of N模式 SPI 概述配置流程 概述 GIC-600AE支持1 of N模式SPI。在此模式下可以将SPI target到多个core&#xff0c;并且GIC-600AE可以选择哪些内核接收SPI。 GIC-600AE只向处于powered up 并且使能中断组的core发送SPI。 GIC-600AE会优先考虑那些被认为是active的核&#xf…

OOCL东方海外不定位置旋转验证码识别代码

样例图如下 这款验证码的识别最大难度在于&#xff0c;旋转的位置不固定&#xff0c;需要识别旋转图片的位置。 第二大难点就是旋转角度的识别。所以我们采集了大量样例图片进行训练&#xff0c;如下图所示 最终训练得到的模型需要两张图片输入&#xff0c;才能完成旋转角度识…

阿里 Mobile-Agent-v2:基于大模型的安卓鸿蒙自动化工具

与之前介绍的 DigiRL类似, Mobile-Agent-v2是一个支持安卓和鸿蒙系统的自动化工具&#xff0c;它使用视觉模型理解手机屏幕&#xff0c;并利用 ADB 来实现操作手机&#xff0c;你可以在本地运行&#xff0c;或者通过手机截图在线体验 Mobile-Agent-v2 从演示来看&#xff0c;可…

短信接口平台的核心功能有哪些?如何使用?

短信接口平台怎么有效集成&#xff1f;选择短信接口平台的技巧&#xff1f; 短信接口平台作为一种重要的通信工具&#xff0c;广泛应用于各种企业和组织。通过短信接口平台&#xff0c;企业能够高效、便捷地与客户进行互动和沟通。AoKSend将详细介绍短信接口平台的核心功能。 …

Android --- 新电脑安装Android Studio 使用 Android 内置模拟器电脑直接卡死,鼠标和键盘都操作不了

新电脑安装Android Studio 使用 Android 内置模拟器电脑直接卡死&#xff0c;鼠标和键盘都操作不了 大概原因就是,初始化默认Google的安卓模拟器占用的RAM内存是2048&#xff0c;如果电脑的性能和内存一般的话就可能卡死&#xff0c;解决方案是手动修改安卓模拟器的config文件&…

Python酷库之旅-第三方库openpyxl(20)

目录 一、 openpyxl库的由来 1、背景 2、起源 3、发展 4、特点 4-1、支持.xlsx格式 4-2、读写Excel文件 4-3、操作单元格 4-4、创建和修改工作表 4-5、样式设置 4-6、图表和公式 4-7、支持数字和日期格式 二、openpyxl库的优缺点 1、优点 1-1、支持现代Excel格式…

架构练习题目

【2022下架构真题第24题&#xff1a;红色】 24.在分布式系统中&#xff0c;中间件通常提供两种不同类型的支持&#xff0c;即&#xff08;27) A.数据支持和交互支持 B.交互支持和提供公共服务 C.数据支持和提供公共服务 D.安全支持和提供公共服务 解答&#xff1a;答案选择B。…