SuperAPI AI 工具集

configure-sdk-options

编程与开发

查看项目

更新于 10-16 02:10

技能介绍

用途

该技能用于配置已存在的 Speakeasy SDK,而不是首次生成 SDK。适用于设置各语言的 gen.yaml 选项、SDK 钩子、异步模式或发布方式,以及配置应用代码中的运行时行为(重试、超时、服务器选择)。当用户提到 "configure SDK"、"gen.yaml options"、"SDK config"、"runtime override"、"per-call config",或询问 Zod、Pydantic、NuGet、PyPI、npm、Maven Central、Packagist、RubyGems 时使用。

若为新的 SDK 项目,应改用 start-new-sdk-project 技能。

前置条件

需要已有 SDK,且已创建 .speakeasy/workflow.yaml。若没有,可运行:

speakeasy quickstart --skip-interactive --output console \
  -s openapi.yaml -t <language> -n "MySDK" -p "<package-name>"

输入要求:已有 SDK(必需)、目标语言(TypeScript、Python、Go、Java、C#、PHP 或 Ruby,必需)。输出为更新后的 gen.yaml、各语言配置以及启用时的自定义钩子文件。

主要能力

通用配置(所有语言)

适用于 gen.yaml 中所有 SDK 目标:版本、包名、方法签名(maxMethodParams、flatteningOrder)、错误处理(responseFormat、clientServerStatusCodesAsErrors)。

TypeScript

支持模块格式(esm、commonjs、dual)、Zod 版本(v3、v4、v4-mini)、自定义代码区域、React Query 钩子。支持 JSR 和 npm 发布;可用 moduleFormat: dual + standalone functions 实现 tree-shaking。

Python

支持 Pydantic 模型、异步模式(both 或 split)、包管理器(uv 或 poetry)、环境变量前缀。both 模式下同时提供同步与异步方法,split 模式提供 SDK() 与 AsyncSDK()。

Go

支持响应格式、接口生成(ifacemaker)、Mock(mockery)、K8s 集成。

Java

支持 Builder 模式、通过 build-extras.gradle 自定义构建、发布到 Maven Central。

C#

支持 async/await、SSE 流式(EventStream<T>)、取消令牌、DI 集成、NuGet 发布。

PHP

要求 PHP 8.2+,使用 Guzzle HTTP 客户端(可配置超时),支持 Packagist 发布,以及用于令牌刷新的安全回调。

Ruby

支持可选 Sorbet 类型(typingStrategy: sorbet)、Faraday HTTP 客户端、RubyGems 发布。

SDK Hooks(所有语言)

通过 enableCustomCodeRegions: true 启用自定义钩子,钩子文件在重新生成时会被保留。

运行时覆盖

可在 SDK 实例化时或每次调用时覆盖 gen.yaml 默认值:服务器选择(在 OpenAPI 规范中用 x-speakeasy-server-id 定义,运行时选择)、重试覆盖、超时覆盖。

分页

当规范中设置 x-speakeasy-pagination 时,SDK 自动生成分页辅助方法,支持自动遍历与手动分页。

使用方式

根据语言在 gen.yaml 中配置相应选项,修改后需提示用户重新生成 SDK:

speakeasy run --output console

gen.yaml 的更改仅在重新生成后生效。

适用场景与限制

已存在 .speakeasy/workflow.yaml 的 SDK 配置,涵盖各语言选项、钩子、异步模式、发布和运行时行为调整。不适用于首次 SDK 生成;不要编辑自定义代码区域之外的生成文件;不要修改 src/ 中非保留目录(hooks、extra)下的文件。

该技能还提供各语言故障排查建议(如 TypeScript 包过大用独立函数、Python 异步分页阻塞需启用 fixFlags.asyncPaginationSep2025、PHP 需 8.2+ 等),并关联 start-new-sdk-project、customize-sdk-hooks、manage-openapi-overlays 等相关技能。