ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

使用 AWS SDK for Go V2 调用 Amazon Bedrock:基础模型列表实战指南

使用 AWS SDK for Go V2 调用 Amazon Bedrock:基础模型列表实战指南 示例工程教程后端【免费下载链接】aws-doc-sdk-examplesWelcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.项目地址https://gitcode.com/gh_mirrors/aw/aws-doc-sdk-examples点击查看免费下载本文基于aws-doc-sdk-examples仓库中 gov2/bedrock 的官方代码示例系统讲解如何用 AWS SDK for Go V2 初始化 Amazon Bedrock 客户端、调用ListFoundationModels列出账户可用基础模型并通过真实源码、运行命令与测试方式帮助你快速掌握生成式 AI 场景下的 Bedrock Go 开发起点。一、概览Amazon Bedrock 与 SDK for Go V2Amazon Bedrock 是 AWS 提供的托管式生成式 AI 服务让你能够通过统一 API 使用多家厂商的**基础模型Foundation ModelFM**来构建和扩展生成式 AI 应用。仓库中的 gov2/bedrock/README.md 明确说明该示例模块展示了如何使用AWS SDK for Go V2与 Amazon Bedrock 交互。从仓库结构看本模块围绕基础模型这一个核心动作展开代码组织为三个相互配合的部分目录/文件作用hello/hello.go入门示例创建 Bedrock 客户端并列出可用基础模型actions/foundation_model.go将ListFoundationModels封装为可复用的单动作Single Actionstubs/foundation_model_stubs.go单元测试用的 AWS 调用桩Stub不发真实请求actions/foundation_model_test.go基于桩驱动的单元测试模块依赖关系记录在 gov2/bedrock/go.mod 中其中核心依赖为github.com/aws/aws-sdk-go-v2/service/bedrock v1.16.2与github.com/aws/aws-sdk-go-v2/config v1.27.33Go 版本要求为1.21。二、前置条件账户、凭据与模型访问权限根据 gov2/bedrock/README.md 与 gov2/README.md 中的要求运行本模块代码前需要满足AWS 账户必须拥有 AWS 账户并按 AWS 共享配置与凭据参考指南配置好默认凭据~/.aws/credentials和默认区域~/.aws/config。Go 环境需要 Go 1.18 或更高版本本模块 go.mod 声明为 1.21。模型访问权限关键且容易踩坑⚠️ 使用前必须先为账户申请request目标模型的访问权限。如果尚未申请就通过 API 或控制台调用该模型会收到错误提示。详细流程见 Amazon Bedrock 用户指南的模型访问Model access章节。IAM 最小权限官方强烈建议遵循最小权限原则Grant least privilege只授予完成当前任务所需的最少权限对ListFoundationModels而言通常只需bedrock:ListFoundationModels权限。三、Hello Amazon Bedrock第一个可运行示例仓库在 hello/hello.go 中提供了完整的入门示例它只做一件事加载 SDK 配置 → 创建 Bedrock 客户端 → 列出基础模型。完整源码如下package main import ( context fmt github.com/aws/aws-sdk-go-v2/config github.com/aws/aws-sdk-go-v2/service/bedrock ) const region us-east-1 // main uses the AWS SDK for Go (v2) to create an Amazon Bedrock client and // list the available foundation models in your account and the chosen region. // This example uses the default settings specified in your shared credentials // and config files. func main() { ctx : context.Background() sdkConfig, err : config.LoadDefaultConfig(ctx, config.WithRegion(region)) if err ! nil { fmt.Println(Couldnt load default configuration. Have you set up your AWS account?) fmt.Println(err) return } bedrockClient : bedrock.NewFromConfig(sdkConfig) result, err : bedrockClient.ListFoundationModels(ctx, bedrock.ListFoundationModelsInput{}) if err ! nil { fmt.Printf(Couldnt list foundation models. Heres why: %v\n, err) return } if len(result.ModelSummaries) 0 { fmt.Println(There are no foundation models.) } for _, modelSummary : range result.ModelSummaries { fmt.Println(*modelSummary.ModelId) } }逐段解读客户端初始化与调用链区域硬编码与可覆盖示例用config.WithRegion(region)显式指定us-east-1。这说明 Bedrock 的区域行为需要特别留意——README 提醒过本代码并未在每个 AWS 区域测试不同区域可用的基础模型列表可能不同。默认配置加载config.LoadDefaultConfig会按 SDK 标准顺序解析共享配置文件、环境变量、IAM 角色等来源与前置条件中的默认凭据与区域配置直接对应。请求构造ListFoundationModels的请求体是空的bedrock.ListFoundationModelsInput{}即不附带任何过滤条件返回账户在指定区域下全部可用基础模型的摘要列表ModelSummaries。响应遍历每个modelSummary.ModelId是该模型的唯一标识符例如 Anthropic Claude、Amazon Titan 等模型的 ID后续调用推理接口时需要用到。运行方式在 gov2/bedrock 目录下执行go run ./hello运行成功后会按行打印可用的基础模型 ID如果账户尚未申请任何模型访问权限输出为空或返回错误此时应先回到前置条件的模型访问权限步骤。四、单动作封装ListFoundationModels 的复用写法入门示例把逻辑直接写在main中而可复用的姿势是将其封装为独立的动作Action。仓库在 actions/foundation_model.go 中定义了FoundationModelWrapper// FoundationModelWrapper encapsulates Amazon Bedrock actions used in the examples. // It contains a Bedrock service client that is used to perform foundation model actions. type FoundationModelWrapper struct { BedrockClient *bedrock.Client } // ListPolicies lists Bedrock foundation models that you can use. func (wrapper FoundationModelWrapper) ListFoundationModels(ctx context.Context) ([]types.FoundationModelSummary, error) { var models []types.FoundationModelSummary result, err : wrapper.BedrockClient.ListFoundationModels(ctx, bedrock.ListFoundationModelsInput{}) if err ! nil { log.Printf(Couldnt list foundation models. Heres why: %v\n, err) } else { models result.ModelSummaries } return models, err }设计要点结构体封装客户端FoundationModelWrapper持有*bedrock.Client后续若要扩展其他 Bedrock 动作如模型推理、自定义模型管理等只需在同一结构体上增加方法即可符合仓库中单服务动作的组织惯例。动作方法返回领域类型方法返回[]types.FoundationModelSummary而非原始响应对象调用方无需关心 HTTP 细节直接遍历模型 ID 即可。错误处理约定出错时记录日志并同时返回err由上层调用方决定如何处理hello 示例中是打印后退出。五、测试无需真实 AWS 请求的桩驱动单元测试README 提醒运行测试可能产生 AWS 费用但好消息是本模块的单元测试通过桩stub模拟 AWS 响应不会发出真实请求也就不会产生任何费用。桩的定义stubs/foundation_model_stubs.go 用testtools.Stub定义了预期的操作名、输入与输出func StubListFoundationModels(raiseErr *testtools.StubError) testtools.Stub { var modelSummaries []types.FoundationModelSummary return testtools.Stub{ OperationName: ListFoundationModels, Input: bedrock.ListFoundationModelsInput{}, Output: bedrock.ListFoundationModelsOutput{ModelSummaries: modelSummaries}, Error: raiseErr, } }测试的执行路径actions/foundation_model_test.go 通过testtools.RunScenarioTests驱动测试流程SetupDataAndStubs先注入桩RunSubTest再真正调用FoundationModelWrapper.ListFoundationModels并打印模型 ID。其底层机制见 gov2/testtools/awsm_stubber.goAwsmStubber利用 AWS SDK for Go V2 的中间件middleware机制在Serialize步骤之前插入拦截函数比对实际调用与预期操作的名称和输入参数匹配后直接短路返回桩输出——请求从未到达 AWS。若桩上挂有StubError且ContinueAfter为 false则测试到此停止用于验证错误处理分支。运行测试在 gov2/bedrock 目录下执行单元测试go test ./...若需运行会真实创建/销毁 AWS 资源并可能产生费用的集成测试则需加上integration标签详见 gov2/README.mdgo test -tagsintegration ./...此外gov2 目录还提供了批量运行脚本 run_all_tests.shLinux/macOS与 run_all_tests.batWindows以及一键代码格式化/静态检查脚本 lint_all_go.sh、lint_all_go.bat。六、其他场景的运行入口cmd runnerREADME 提到所有场景scenario都可以通过统一的cmdrunner 启动。若模块中包含更复杂的多步场景可在目录下执行go run ./cmd -h该命令会列出可用场景列表及各场景的参数帮助部分示例需要命令行参数用-h查看具体说明。本 Bedrock 模块目前以入门示例和单动作示例为主cmdrunner 是为后续场景扩展预留的统一入口其运行约定见 gov2/README.md。七、运行注意事项与成本控制最后回顾 gov2/bedrock/README.md 中的四条重要提醒它们同样适用于任何基于本模块的二次开发费用运行示例代码和测试都可能向你的 AWS 账户计费请关注 AWS 定价与免费套餐。最小权限IAM 策略尽量只授予当前任务所需的最小权限避免使用过宽的权限范围。区域差异本代码未在每个 AWS 区域测试Bedrock 并非所有区域都提供相同的模型能力跨区域部署时请确认目标区域的模型可用性。模型访问使用任何模型前必须先申请访问权限否则调用会失败。八、更多学习资源gov2/bedrock/actions/foundation_model.go单动作封装源码gov2/bedrock/actions/foundation_model_test.go单元测试源码gov2/testtools/awsm_stubber.go桩驱动的测试基础设施gov2/README.mdSDK for Go V2 全部示例的通用前置条件、运行与测试约定官方资料Amazon Bedrock 用户指南、Bedrock API 参考、SDK for Go V2 Bedrock 包参考pkg.go.dev上的github.com/aws/aws-sdk-go-v2/service/bedrockCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0赞分享示例工程教程后端【免费下载链接】aws-doc-sdk-examplesWelcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.项目地址https://gitcode.com/gh_mirrors/aw/aws-doc-sdk-examples点击查看免费下载相关推荐CANN/asc-devkit__ll2half_rn函数\_\_ll2half\_rn 产品支持情况 ! npu950 id1 Ascend 950PR/Ascend 950DT支持 ! end id1示例工程教程后端Zutilo深度解析提升Zotero文献管理效率的实用插件指南Zutilo深度解析提升Zotero文献管理效率的实用插件指南 Zutilo是一款专为Zotero文献管理软件设计的功能增强插件它为研究人员、学者和学生提供示例工程教程后端使用 AWS SDK for .NET 调用 Amazon Bedrock RuntimeConverse、工具调用与图像生成实战指南使用 AWS SDK for .NET 调用 Amazon Bedrock RuntimeConverse、工具调用与图像生成实战指南 导读 本文以开源仓库示例工程教程后端上一篇Vibe Coding 实战用 AI 从零构建 VS Code 智能项目助手插件 AI Project Bot下一篇5步掌握vJoy虚拟手柄从零开始打造你的游戏控制中心创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表