mcpField
V
volcengine-sdk-generator

volcengine-sdk-generator

github.com/bytedanceクラウド・DevOps47743 回インストール1 日前に更新
リポジトリ

volcengine-sdk-generator について

volcengine-sdk-generatorは、自然言語の依頼からVolcengine SDKコードを生成し、設定に関する質問にも対応するスキルです。API Explorerのメタデータを調べ、指定言語や構成に応じた実行可能な例を作成します。

主な機能

  1. 01サービス、操作、対象言語の特定
  2. 02API ExplorerでサービスとAPI情報を検索
  3. 03API仕様に基づくSDKコード例の生成
  4. 04リトライ、タイムアウト、認証設定への対応

活用シーン

  1. 01操作内容からクラウドAPIコードを生成
  2. 02API操作に対応するサービスとパラメーターの特定
  3. 03プロキシやコネクションプール設定の追加
  4. 04Volcengine SDKの設定方法の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/bytedance/agentkit-samples --skill volcengine-sdk-generator

インストール後、Claude Code で/volcengine-sdk-generatorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
references/
sdk-integration-go.md
sdk-integration-java.md
sdk-integration-nodejs.md
sdk-integration-php.md
sdk-integration-python.md

詳細

Volcengine SDK コードジェネレーター

自然言語による説明から、実行可能な完全な Volcengine SDK コードを生成し、SDK の設定に関する質問に回答します。

ワークフロー

ユーザーが Volcengine API の操作を説明した場合は、次の手順に従います。

Step 1: 対象サービス、操作、高度な設定の必要性を特定する

ユーザーの説明を解析して、以下を特定します。

  • 対象サービス:対象となる Volcengine サービス(例:ECS、VPC、TOS、billing)

  • 対象操作:実行する操作(例:インスタンスの一覧表示、VPC の作成、請求情報の照会)

  • 対象言語:使用するプログラミング言語(Go、Python、PHP、Java、Node.js)。指定がない場合は、ユーザーに確認します。

  • 高度な設定の必要性:ユーザーが次のいずれかについて言及しているか、またはシナリオから必要性が示唆されるかどうか:

    • リトライ:ユーザーが「リトライ」「フォールトトレランス」に言及している、または操作が書き込み/作成タイプである(スロットリングが発生しやすい)
    • タイムアウト:ユーザーが「タイムアウト」に言及している、または操作に大量のデータが関わる(一括クエリ、ファイルのアップロード)
    • 認証情報:ユーザーが「STS」「AssumeRole」「一時的な認証情報」「OIDC」に言及している、または AK/SK のハードコードを明示的に避けたいと考えている
    • プロキシ/ネットワーク:ユーザーが「プロキシ」または「内部ネットワーク」に言及している
    • デバッグモード:ユーザーが「デバッグ」または「ログ」に言及している
    • コネクションプーリング:ユーザーが「コネクションプール」「高い並行性」または「プール」に言及している

    ユーザーがこれらを明示的に要求した場合は、生成コードに対応する設定を含めます。明示的な要求はなくても、シナリオから必要性が示唆される場合(例:リソースの作成では通常リトライが有効)は、推奨設定をコメントとして含めます。

Step 2: Volcengine API Explorer でサービスのメタデータを照会する

正しいサービスコード、バージョン、アクション名を確認するには、次の API を使用します。この手順は重要です。推測すると誤ったコードになりやすいため、API Explorer を信頼できる情報源として使用してください。

2a. ServiceCode を確認する

サービスカタログを取得します。

GET https://api.volcengine.com/api/common/explorer/services

レスポンスの構造:

{
  "Result": {
    "Categories": [
      {
        "CategoryName": "...",
        "Services": [
          {
            "ServiceCn": "Cloud Server",
            "ServiceCode": "ecs",
            "Product": "ECS",
            "IsSdkAvailable": true,
            "RegionType": "regional"
          }
        ]
      }
    ]
  }
}

ServiceCn、Product、カテゴリ名に基づいて、ユーザーの意図に合う ServiceCode を特定します。

2b. API バージョンを確認する

GET https://api.volcengine.com/api/common/explorer/versions?ServiceCode={ServiceCode}

レスポンス:

{
  "Result": {
    "Versions": [
      {
        "ServiceCode": "billing",
        "Version": "2022-01-01",
        "IsDefault": 0
      }
    ]
  }
}

IsDefault == 1 のバージョンを使用します。デフォルトバージョンがない場合は、利用可能な最新バージョンを使用します。

2c. Action 名を確認する

GET https://api.volcengine.com/api/common/explorer/apis?ServiceCode={ServiceCode}&Version={Version}&APIVersion={Version}

レスポンス:

{
  "Result": {
    "Groups": [
      {
        "Name": "Instance",
        "Apis": [
          {
            "Action": "DescribeInstances",
            "NameCn": "Query instance list",
            "Description": "..."
          }
        ]
      }
    ]
  }
}

Action 名と NameCn(中国語名)を使って、ユーザーの意図に合うものを特定します。

2c-alt: API を検索する(直接検索で見つからない場合)

サービスカタログや API 一覧からユーザーの説明に合うものを明確に特定できない場合(たとえば、ユーザーの表現が曖昧、ServiceCode に直接対応しない中国語名を使っている、または API 一覧に目的の API が見当たらない場合)は、フォールバックとして検索 API を使用します。

GET https://api.volcengine.com/api/common/search/all?Query={URL-encoded search term}&Channel=api&Limit=10

検索語は中国語でも英語でも構いません。ユーザーの説明に最も合う言語を使用します。

レスポンスの構造:

{
  "Result": {
    "List": [
      {
        "BizInfo": {
          "Action": "ListProjects",
          "ServiceCn": "Access Control",
          "ServiceCode": "iam",
          "Version": "2021-08-01"
        },
        "Highlight": [
          {"Field": "title", "Summary": "Get <em>project</em> <em>list</em>"}
        ]
      }
    ],
    "Total": 200
  }
}

ServiceCn、Action、ハイライトテキストに基づいて最適な候補を選び、ステップ 2d に進みます。

検索 API は、特に次のような場合に役立ちます。

  • ユーザーが操作を自然言語で説明しているものの、どのサービスが担当するか分からない
  • サービスの API が多すぎて、手動で一覧を確認するのが難しい
  • 説明が複数のサービスにまたがる(検索ではすべてのサービスから結果が返される)

2d. API パラメーターの詳細をすべて取得する

GET https://api.volcengine.com/api/common/explorer/api-swagger?ServiceCode={ServiceCode}&Version={Version}&APIVersion={Version}&ActionName={Action}

完全な Swagger/OpenAPI 仕様が返されます。次の情報が含まれます。

  • HTTP メソッド(GET/POST)
  • 型、必須フラグ、説明を含む、すべてのリクエストパラメーター
  • レスポンスの構造
  • 制約と検証ルール
  • x-demo フィールド:公式の例を含む requestDemo と responseDemo

正確なコードの生成に不可欠なため、この仕様を注意深く確認してください。

2e. パラメーターの例の値を抽出する(x-demo の requestDemo から)

Swagger レスポンスの info.x-demo 配列には、公式のリクエスト例である requestDemo が含まれています。生成コードに設定する、現実的なパラメーター値をここから抽出します。 抽出手順:

  1. info.x-demo[0].requestDemo を特定し、リクエストボディの JSON を解析します
  2. 生成するコードの例には requestDemo の値を使用します。これらは、独自に考えた値よりも正確で現実的です
  3. マスクされた値(例:cc5silum********)はマスク形式のまま使用し、実際の値に置き換えるよう促すコメントを追加します
  4. パラメーター値が JSON 文字列(例:Config フィールド)の場合は、見やすく整形し、各サブフィールドにコメントを付けます

例:VKE CreateAddon の requestDemo には次の値が含まれています:

{
    "ClusterId": "cc5silum********",
    "Name": "ingress-nginx",
    "DeployMode": "Unmanaged",
    "DeployNodeType": ["VirtualNode"],
    "Config": "{\"Replica\":1,\"Resource\":{\"Request\":{\"Cpu\":\"0.25\",\"Memory\":\"512Mi\"},\"Limit\":{\"Cpu\":\"0.5\",\"Memory\":\"1024Mi\"}},\"PrivateNetwork\":{\"SubnetId\":\"subnet-2d61qn69iji****\",\"IpVersion\":\"IPV4\"}}"
}

空のプレースホルダーの代わりに、これらの値をそのまま使用します。

2f. 複雑なパラメーターの詳細な設定を取得する

一部のパラメーターの description フィールドには、詳細な設定ガイドを示すドキュメントリンク(例:https://www.volcengine.com/docs/...)が含まれています。複雑なパラメーターについては、詳細を確認するためにこれらのリンクを取得します。

ドキュメントを参照するタイミング:

  • パラメーター値が JSON 文字列で、description に「詳細な設定を参照」といった記述がある場合(例:VKE の Config)
  • パラメーターが、サブフィールドの形式が外部で文書化されている入れ子構造である場合
  • enum 値の意味が不明確で、ドキュメントで説明されている場合

処理の流れ:

  1. パラメーターの description に volcengine.com/docs のリンクが含まれているか確認します
  2. 含まれている場合は、WebFetch を使用してリンク先のページを取得し、パラメーターに関連する設定の詳細を抽出します
  3. ドキュメントの例を、コメントまたは構造化されたパラメーターとして生成コードに組み込みます
  4. ドキュメントにアクセスできない場合は、requestDemo の例の値を使用します

2g. 必須パラメーターと推奨パラメーターを判定する

必須フィールドの判定では、required 配列だけでなく、複数の情報源を参照します。

  1. 明示的な必須項目:Swagger の required 配列に記載されている項目
  2. 説明文から推定される必須項目:説明文に「指定する必要があります」「必須」など、同等の表現が含まれている項目
  3. 論理的に必須の項目:正式に必須と指定されていなくても、意味的に不可欠な項目(例:リソース作成時のインスタンスタイプやネットワーク設定)
  4. 条件付き必須項目:説明文に「X=Y の場合に必須」と記載されている項目。ユーザーのシナリオに該当する場合は含めます

パラメーター値の優先順位:

  1. requestDemo の例の値(最優先):公式の例をそのまま使用します
  2. example フィールド:Swagger 仕様の各パラメーターの example 値
  3. enum 値:最も一般的な選択肢、または汎用性の高い選択肢を選びます
  4. ドキュメントの推奨値:リンク先のドキュメントから取得した値
  5. 業界慣例:クラウドコンピューティングの一般的な規範に沿った妥当なデフォルト値(例:CIDR には 172.16.0.0/16、インスタンスには説明的な名前)
ステップ 3:SDK 設定リファレンスを参照する(必要に応じて)

ステップ 1 で高度な設定が必要と判断された場合は、対象言語の対応するリファレンスファイルを読み、正確な設定コードを確認します。

言語リファレンスファイル
Goreferences/sdk-integration-go.md
Pythonreferences/sdk-integration-python.md
Javareferences/sdk-integration-java.md
Node.jsreferences/sdk-integration-nodejs.md
PHPreferences/sdk-integration-php.md

これらのファイルには、リトライ、タイムアウト、認証情報、プロキシ、コネクションプーリング、デバッグの設定について、検証済みのコードスニペットが記載されています。こうしたパターンは記憶に頼って書くのではなく、そのまま使用してください。SDK の設定は言語によって大きく異なるため、リファレンスファイルを使うことで正確さを確保できます。

ステップ 4:完全な SDK コードを生成する

次のルールに従って、実行可能な完全なコード例を生成します。

共通ルール(すべての言語)
  1. 認証:デフォルトでは、環境変数 VOLCENGINE_ACCESS_KEY と VOLCENGINE_SECRET_KEY から AK/SK を読み取ります。別の認証方式(STS、AssumeRole、OIDC)が必要な場合は、リファレンスファイルにある該当パターンを使用してください。読み取り方法は言語によって異なります。各言語のセクションとリファレンスファイルを参照してください。
  2. リージョン:リージョンサービスでは、デフォルトを cn-beijing にします。ユーザーが変更できることをコメントで記載してください。
  3. 必須パラメーター:ステップ 2g のソースを使って、すべての必須パラメーターを含めます。requestDemo またはサンプルフィールドから、現実的な値を使用してください。各値の隣に、その意味と出典を説明するコメントを追加してください。
  4. パラメーター値の品質:値には、単純なプレースホルダーではなく、現実的な形式とビジネス上の意味を持たせてください。
    • インスタンス ID:i-abc123****** のようなマスク形式を使用します(requestDemo から取得)。
    • CIDR:172.16.0.0/16 のような適切な範囲を使用します。
    • 列挙値:最も一般的な選択肢を使用します。
    • ネストされた JSON 設定:フィールドごとにコメントを付けた読みやすい複数行形式に展開します。
  5. 複雑なパラメーターの処理:値が JSON 文字列のパラメーター(VKE Config など)は、長い文字列を直接記述するのではなく、まず構造体または辞書を作成してから JSON にシリアライズします。これにより、コードが読みやすく、変更しやすくなります。
  6. オプションのパラメーター:ページネーションなど、よく使われるオプションのパラメーターは、説明を添えてコメントアウトした行として含めます。
  7. エラー処理:対象言語の標準的なエラー処理を含めます。
  8. 出力:レスポンスを読みやすい形式(整形済み JSON など)で出力します。
  9. コメント:コードの目的を説明するヘッダーコメントを追加します。分かりにくいパラメーターにはインラインコメントを付けます。コメントの言語はユーザーのプロンプトの言語に合わせてください。
  10. 高度な設定の統合:ユーザーに高度な設定の要望がある場合は、別ブロックではなくメインコードに自然に組み込み、単一の実行可能ファイルにします。
    • 再試行:クライアント/設定の初期化時に再試行設定を追加し、デフォルト値と調整可能なパラメーターをコメントで説明します。
    • タイムアウト:クライアントの初期化時にグローバルタイムアウトを設定します。必要に応じて、リクエストごとのタイムアウトの使い方も示します。
    • 認証情報:デフォルトの AK/SK 認証コードを、ユーザーが指定した方式(STS、AssumeRole など)に置き換えます。
    • プロキシ:クライアント設定にプロキシ設定を追加します。
    • デバッグ:クライアント設定でデバッグモードを有効にします。
    • コネクションプール:クライアント設定でプールのパラメーターを設定します。
Go

Go SDK では {Action}Request ではなく {Action}Input 構造体を使用します。サービスは {service}.New(sess) でインスタンス化します。

package main

import (
    "fmt"
    "os"
    "github.com/volcengine/volcengine-go-sdk/service/{service}"
    "github.com/volcengine/volcengine-go-sdk/volcengine"
    "github.com/volcengine/volcengine-go-sdk/volcengine/credentials"
    "github.com/volcengine/volcengine-go-sdk/volcengine/session"
)

func main() {
    ak := os.Getenv("VOLCENGINE_ACCESS_KEY")
    sk := os.Getenv("VOLCENGINE_SECRET_KEY")
    region := "cn-beijing"

    config := volcengine.NewConfig().
        WithRegion(region).
        WithCredentials(credentials.NewStaticCredentials(ak, sk, ""))

    // [Advanced config — add as needed, see references/sdk-integration-go.md]
    // Retry: config.WithMaxRetries(5)
    // Timeout: config.WithHTTPClient(&http.Client{Timeout: 60 * time.Second})
    // Proxy: config.WithHTTPProxy("http://proxy:8080")
    // Debug: config.WithDebug(true)

    sess, err := session.NewSession(config)
    if err != nil {
        panic(err)
    }
    svc := {service}.New(sess)

    input := &{service}.{Action}Input{
        // Set required parameters here
    }
    resp, err := svc.{Action}(input)
    if err != nil {
        panic(err)
    }
    fmt.Println(resp)
}

要点:

  • パッケージパス:github.com/volcengine/volcengine-go-sdk/service/{service}(小文字。例:billing、ecs、vpc)
  • 設定チェーン:volcengine.NewConfig().WithRegion(region).WithCredentials(credentials.NewStaticCredentials(ak, sk, ""))
  • セッション:session.NewSession(config)(セッションとエラーを返します)
  • サービスクライアント:{service}.New(sess)(例:billing.New(sess)、ecs.New(sess))
  • リクエスト構造体:{Action}Input(例:ListAvailableInstancesInput、DescribeInstancesInput)
  • メソッド:svc.{Action}(input)。アクション名はパスカルケースです。
Python

Python SDK では、{SERVICE}Api(サービス名は大文字)と {Action}Request モデルを使用します。

from __future__ import print_function
import os
import volcenginesdkcore
import volcenginesdk{service}
from volcenginesdkcore.rest import ApiException

if __name__ == '__main__':
    configuration = volcenginesdkcore.Configuration()
    configuration.ak = os.environ.get("VOLCENGINE_ACCESS_KEY")
    configuration.sk = os.environ.get("VOLCENGINE_SECRET_KEY")
    configuration.region = "cn-beijing"

    # [Advanced config — add as needed, see references/sdk-integration-python.md]
    # Retry: configuration.max_retry_attempts = 5
    # Timeout: configuration.connection_timeout = 10; configuration.read_timeout = 60
    # Proxy: configuration.proxy = "http://proxy:8080"
    # Debug: configuration.debug = True

    volcenginesdkcore.Configuration.set_default(configuration)

    api_instance = volcenginesdk{service}.{SERVICE}Api()
    request = volcenginesdk{service}.{Action}Request(
        # Set required parameters here
    )

    try:
        resp = api_instance.{action_snake_case}(request)
        print(resp)
    except ApiException as e:
        print("API exception: %s\n" % e)

主なポイント:

  • パッケージ:volcenginesdkcore + volcenginesdk{service}(すべて小文字で、区切り文字なし。例:volcenginesdkbilling、volcenginesdkecs)
  • 設定:volcenginesdkcore.Configuration() を使用し、.ak、.sk、.region を設定してから set_default() を呼び出します
  • API クラス:volcenginesdk{service}.{SERVICE}Api() — サービス名はすべて大文字です(例:BILLINGApi、ECSApi、VPCApi)
  • リクエストクラス:volcenginesdk{service}.{Action}Request(...)(パスカルケース。例:ListAvailableInstancesRequest)
  • メソッド:api_instance.{action_snake_case}(request) — スネークケース(例:list_available_instances、describe_instances)
  • 例外:from volcenginesdkcore.rest import ApiException
Java

Java SDK では、com.volcengine.{service} 名前空間の下にある {ServiceName}Api と {Action}Request モデルを使用します。

package com.volcengine.sample;

import com.volcengine.ApiClient;
import com.volcengine.ApiException;
import com.volcengine.sign.Credentials;
import com.volcengine.{service}.{ServiceName}Api;
import com.volcengine.{service}.model.*;

public class Example {
    public static void main(String[] args) throws Exception {
        String ak = System.getenv("VOLCENGINE_ACCESS_KEY");
        String sk = System.getenv("VOLCENGINE_SECRET_KEY");
        String region = "cn-beijing";

        ApiClient apiClient = new ApiClient()
                .setCredentials(Credentials.getCredentials(ak, sk))
                .setRegion(region);

        // [Advanced config — add as needed, see references/sdk-integration-java.md]
        // Retry: apiClient.setRetrySettings(new RetrySettings().setMaxAttempts(5));
        // Timeout: apiClient.setConnectionTimeout(5000); apiClient.setReadTimeout(30000);
        // Proxy: apiClient.setHttpProxy("http://proxy:8080");
        // Debug: apiClient.setDebugging(true);

        {ServiceName}Api api = new {ServiceName}Api(apiClient);

        {Action}Request request = new {Action}Request();
        // request.setParamName(value);

        try {
            {Action}Response resp = api.{actionCamelCase}(request);
            System.out.println(resp);
        } catch (ApiException e) {
            System.out.println(e.getResponseBody());
        }
    }
}

主なポイント:

  • パッケージ:com.volcengine.{service}(小文字。例:com.volcengine.billing、com.volcengine.ecs)
  • ApiClient:new ApiClient().setCredentials(Credentials.getCredentials(ak, sk)).setRegion(region)
  • API クラス:{ServiceName}Api(パスカルケース。例:BillingApi、EcsApi)— コンストラクターには apiClient を渡します
  • リクエストクラス:{Action}Request(例:ListAvailableInstancesRequest)— セッターでパラメーターを設定します
  • メソッド:api.{actionCamelCase}(request) — キャメルケース(例:listAvailableInstances、describeInstances)
  • 例外:ApiException。詳細を確認するには e.getResponseBody() を使用します
Node.js

Node.js SDK では、コマンドパターンとして {SERVICE}Client + {Action}Command を使用します。

import { {SERVICE}Client, {Action}Command } from "@volcengine/{service}";

// Automatically reads VOLCENGINE_ACCESS_KEY and VOLCENGINE_SECRET_KEY from env
const client = new {SERVICE}Client({
    region: "cn-beijing",
    // [Advanced config — add as needed, see references/sdk-integration-nodejs.md]
    // maxRetries: 5,                          // retry count
    // autoRetry: false,                       // disable auto-retry
    // httpOptions: { timeout: 30000 },        // timeout (ms)
    // httpOptions: { proxy: { protocol: "http", host: "127.0.0.1", port: 8888 } },  // proxy
});

async function main() {
    try {
        const command = new {Action}Command({
            // Set required parameters here
        });
        const response = await client.send(command);
        console.log(JSON.stringify(response, null, 2));
    } catch (error) {
        console.error("Error:", error);
    }
}

main();

主なポイント:

  • パッケージ:@volcengine/{service}(小文字。例:@volcengine/ecs、@volcengine/vpc)
  • クライアント:{SERVICE}Client(サービス名はすべて大文字。例:ECSClient、VPCClient)
  • コマンド:{Action}Command(パスカルケース。例:DescribeInstancesCommand、CreateVpcCommand)
  • 呼び出し:client.send(command) — 非同期で、Promise を返します
  • 認証:環境変数 VOLCENGINE_ACCESS_KEY と VOLCENGINE_SECRET_KEY を自動的に読み取ります。クライアントのコンストラクターに accessKeyId/secretAccessKey を渡すこともできます
PHP

PHP SDK では、\Volcengine\{Service}\ 名前空間の下にあるクラスを使用します。

<?php
require_once(__DIR__ . '/vendor/autoload.php');

$config = \Volcengine\Common\Configuration::getDefaultConfiguration()
    ->setAk(getenv("VOLCENGINE_ACCESS_KEY"))
    ->setSk(getenv("VOLCENGINE_SECRET_KEY"))
    ->setRegion("cn-beijing");

// [Advanced config — add as needed, see references/sdk-integration-php.md]
// Proxy and timeout are configured via GuzzleHttp\Client options
$httpClient = new GuzzleHttp\Client([
    // 'proxy' => 'http://proxy:8080',              // proxy
    // 'timeout' => 60,                              // request timeout (seconds)
    // 'connect_timeout' => 10,                      // connection timeout (seconds)
]);

$apiInstance = new \Volcengine\{Service}\Api\{SERVICE}Api(
    $httpClient,
    $config
);

$request = new \Volcengine\{Service}\Model\{Action}Request();
// $request->setParamName("value");

try {
    $resp = $apiInstance->{actionCamelCase}($request);
    print_r($resp);
} catch (Exception $e) {
    echo 'API exception: ', $e->getMessage(), PHP_EOL;
}

主なポイント:

  • 設定:\Volcengine\Common\Configuration::getDefaultConfiguration()->setAk()->setSk()->setRegion()
  • API クラス:\Volcengine\{Service}\Api\{SERVICE}Api — 名前空間ではパスカルケースの Service(例:Billing)、クラス名ではすべて大文字(例:BILLINGApi)を使用します
  • コンストラクター:GuzzleHttp\Client() と $config を受け取ります
  • リクエストクラス:\Volcengine\{Service}\Model\{Action}Request(例:\Volcengine\Billing\Model\ListAvailableInstancesRequest)
  • セッターでパラメーターを設定します:$request->setProduct("value")
  • メソッド:$apiInstance->{actionCamelCase}($request)(例:listAvailableInstances)
ステップ 5:結果を提示する

コードを生成した後:

  1. 正しい言語タグを付けたコードブロックに、コード全体を表示します
  2. ユーザーがインストールする必要のある依存関係を列挙します(go get、pip install、npm install、composer require、Maven/Gradle の座標)
  3. 環境変数を設定するようユーザーに注意を促します:
    export VOLCENGINE_ACCESS_KEY="your-access-key"
    export VOLCENGINE_SECRET_KEY="your-secret-key"
    
  4. API 仕様に関する重要な制約事項(レート制限、必要な権限、データ範囲の制限など)を記載します
  5. コードに高度な設定が含まれる場合は、各設定の目的、デフォルト値、調整時のアドバイスを簡潔に説明します。例:
    • 「リトライのデフォルトは 3 回で、ネットワークエラーとスロットリングを対象とします。WithMaxRetries で調整できます」
    • 「接続タイムアウトのデフォルトは 30s です。大規模なバッチクエリでは延長を検討してください」

SDK 設定に関する質問への回答

ユーザーが Volcengine SDK の設定方法や使い方(API 呼び出しコードの生成ではなく)を尋ねた場合は、次の手順に従います:

ステップ 1:ユーザーのニーズを特定する

一般的な設定項目:

  • 認証:AK/SK、STS トークン、AssumeRole、OIDC、SAML
  • 再試行:有効化/無効化、最大試行回数、バックオフ戦略、カスタム再試行条件
  • タイムアウト:接続タイムアウト、読み取りタイムアウト、リクエストごとのタイムアウト
  • プロキシ:HTTP/HTTPS プロキシの設定
  • エンドポイント:カスタムエンドポイント、リージョンに基づく解決、デュアルスタック(IPv6)
  • SSL/HTTPS:SSL 検証の無効化、TLS バージョン、HTTP と HTTPS の切り替え
  • 接続プーリング:プールサイズ、キープアライブ、アイドル接続
  • デバッグ:デバッグモード、ロギング、ミドルウェア
  • エラー処理:例外の種類、再試行可能エラーと再試行不可能エラー
  • 環境変数:SDK ごとにサポートされる環境変数
ステップ 2:リファレンスドキュメントを確認する

ユーザーが使用する言語に対応したリファレンスファイルを読みます。

言語リファレンスファイル
Goreferences/sdk-integration-go.md
Pythonreferences/sdk-integration-python.md
Javareferences/sdk-integration-java.md
Node.jsreferences/sdk-integration-nodejs.md
PHPreferences/sdk-integration-php.md

これらのファイルには、主要な設定項目ごとの簡潔なコード例が記載されています。該当するファイルを読み、正確でコピーしてすぐに実行できるコードを使って回答してください。

ユーザーの質問がリファレンスファイルで扱われていない場合や、さらに詳しい情報が必要な場合は、GitHub から上流のドキュメントを取得してください。

言語上流ドキュメントの URL
Gohttps://raw.githubusercontent.com/volcengine/volcengine-go-sdk/master/SDK_Integration.md
Pythonhttps://raw.githubusercontent.com/volcengine/volcengine-python-sdk/master/SDK_Integration.md
Javahttps://raw.githubusercontent.com/volcengine/volcengine-java-sdk/master/SDK_Integration.md
Node.jshttps://raw.githubusercontent.com/volcengine/volcengine-nodejs-sdk/master/SDK_Integration.md
PHPhttps://raw.githubusercontent.com/volcengine/volcengine-php-sdk/main/SDK_Integration.md
ステップ 3:明確に回答する
  • 設定を示す、完全で実行可能なコードスニペットを提示する
  • 各設定の目的とデフォルト値を説明する
  • 注意点を伝える(例:「SSL 検証の無効化はテスト環境でのみ適切です」)
  • ユーザーが言語を指定していない場合は、使用している言語を尋ねる
  • 回答の言語はユーザーのプロンプトの言語に合わせる

重要な注意事項

  • 常に API Explorer からデータを取得してください。Volcengine API は頻繁に更新されるため、Explorer が信頼できる情報源です。記憶に頼らないでください。
  • ユーザーの説明が曖昧で、複数のサービスや操作に該当する可能性がある場合は、選択肢を列挙して確認を求めてください。
  • サービスの IsSdkAvailable: false の場合は、公式 SDK がそのサービスをまだサポートしていない可能性があることをユーザーに伝え、代替手段として HTTP リクエストの例を提示してください。
  • リージョン別サービスの場合、ユーザーのリソースが cn-beijing にない場合は、リージョン設定を変更するよう案内してください。

コメント