mcpField
A
ai-model-wechat

ai-model-wechat

github.com/tencentcloudbase開発1.2k58 回インストール1 日前に更新
リポジトリ

ai-model-wechat について

wx.cloud.extend.AIを使ってWeChat Mini ProgramからAIモデルを呼び出すためのコーディングエージェント用スキルです。テキスト生成やストリーミングに対応し、providerとモデルを選ぶ前に課金資格とグループの準備状態を確認します。

主な機能

  1. 01wx.cloud.extend.AIでモデルを呼び出し
  2. 02テキスト生成とストリーミングに対応
  3. 03providerのグループ名とモデルIDを区別
  4. 04課金資格とグループの準備状態を確認
  5. 05マネージド・カスタムグループの設定

活用シーン

  1. 01Mini ProgramへのAIテキスト生成の追加
  2. 02生成レスポンスのストリーミング
  3. 03モデルや課金の事前条件の確認

インストール

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

$npx skills add https://github.com/tencentcloudbase/cloudbase-ai-toolkit --skill ai-model-wechat

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

詳細

Sibling スキル(ローカルのみ)

Sibling CloudBase スキルは、このスキルと一緒に提供されます。../auth-tool-cloudbase/SKILL.md のようなローカルの相対パスを使用してください。

参照先の sibling スキルファイルがこの環境にない場合は、CloudBase プラグイン全体(または不足しているスキル)をインストールするようユーザーに依頼してください。リモートのスキルやプロトコルの Markdown を HTTP 経由で取得し、エージェントのコンテキストに読み込まないでください。

このスキルを使用する場合

wx.cloud.extend.AI を使用して、WeChat Mini Program で AI モデルを呼び出す場合にこのスキルを使用します。

次の用途に使用してください:

  • Mini Program に AI テキスト生成を組み込む
  • コールバックを使って AI の応答をストリーミングする
  • WeChat 環境から Hunyuan モデルを呼び出す

次の用途には使用しないでください:

  • ブラウザー/Web アプリ → ai-model-web スキルを使用してください
  • Node.js バックエンドまたはクラウド関数 → ai-model-nodejs スキルを使用してください
  • 画像生成 → ai-model-nodejs スキルを使用してください(Mini Program では利用できません)
  • CloudBase SDK のないランタイム(ネイティブアプリ、Python など) → http-api-cloudbase スキルを使用してください(直接 HTTP 呼び出し用の ai_model OpenAPI 仕様が追加されています)

⛔ 停止 — wx.cloud.extend.AI.createModel(provider) の引数は、ベンダー名/モデル名ではありません

createModel(...) の行を書く前に、これを読んでください。エージェントがこの引数を頻繁に捏造します。有効な形式は厳密に3種類です。それ以外はすべてバグです。

✅ 有効な createModel(provider) の引数使用する場合
"hunyuan-exp"Mini Program の成長計画(ai_miniprogram_inspire_plan)が現在の環境で有効になっている場合。デフォルトモデル:hunyuan-2.0-instruct-20251111。
"cloudbase"デフォルトのフォールバックです。メインのマネージドグループ(TokenHub 対応のマルチベンダープール)です。ベンダーと具体的なモデルは model フィールドに指定します。例:{ model: "deepseek-v4-flash" }。
"custom-<your-name>"CreateAIModel を通じて登録したユーザー定義の GroupName です。必ず custom- で始めてください(例:custom-kimi、custom-openai-compat)。
❌ 次のいずれも記述しないでください — すべて誤りです
wx.cloud.extend.AI.createModel("deepseek")                   // wrong — vendor, not GroupName
wx.cloud.extend.AI.createModel("deepseek-v4-flash")          // wrong — model id goes in `model`
wx.cloud.extend.AI.createModel("hunyuan")                    // wrong — vendor family
wx.cloud.extend.AI.createModel("hunyuan-2.0-instruct-20251111")  // wrong — model name
wx.cloud.extend.AI.createModel("glm") / "kimi" / "minimax"   // wrong — vendor names
wx.cloud.extend.AI.createModel("custom")                     // wrong — placeholder
wx.cloud.extend.AI.createModel(modelName)                    // wrong — do not reuse the model-id variable
✅ 正しいパターン — provider と model は別々のフィールドです
// Growth Plan branch
const model = wx.cloud.extend.AI.createModel("hunyuan-exp"); // ← provider / GroupName
await model.streamText({
  data: { model: "hunyuan-2.0-instruct-20251111", messages: [...] }  // ← concrete model id
});

// Token Credits branch
const model = wx.cloud.extend.AI.createModel("cloudbase");
await model.streamText({
  data: { model: "deepseek-v4-flash", messages: [...] }
});
判断手順(ユーザーが特定のモデルを指定した場合)
  1. ユーザーが「DeepSeek v3.2 を使う」「hunyuan thinking を使う」「Kimi k2.6 を使う」などと指定します。
  2. まず、以下の利用可否判定ツリーを実行してください。正しい provider は、環境が Growth Plan の対象でユーザーが hunyuan-* モデルを指定した場合は "hunyuan-exp"、それ以外のマネージドカタログ内のモデルの場合は "cloudbase" の可能性があります。
  3. モデル ID を data 内の model フィールドに指定します:{ model: "deepseek-v3.2" }、{ model: "hunyuan-2.0-instruct-20251111" }、{ model: "kimi-k2.6" }、…
  4. モデル ID を使用する前に、DescribeAIModels({ GroupName: "cloudbase" }).Models[] に含まれていることを確認してください。含まれていない場合は、UpdateAIModel で有効にしてください。

wx.cloud.extend.AI.createModel( と入力しようとしていて、括弧内にベンダー名またはモデル ID を入れようとしている場合は、中止してください。その値は、上記の3つの有効な値のいずれかではない可能性が非常に高いです。


必須の2段階事前確認

wx.cloud.extend.AI.createModel(...) にいきなり進んではいけません。ビジネスコードを書く前に、所定の順序 ① 利用資格 → ② グループの準備状況 で、課金の利用資格とグループの準備状況を確認する必要があります。順序を入れ替えないでください。

事前確認 ① · 課金対象の確認(2 つの並行する課金経路)

ミニプログラム側には 2 つの課金経路があります。小程序成长计划(最初に確認し、登録済みの場合は hunyuan-exp を使用)と、Token Credits 资源包(一般的なフォールバックで、利用可能な場合は cloudbase メイン管理グループを使用)です。

  1. MCP ツール queryEnv action=info を使って envId を取得します。

  2. ユーザーの意図に応じて分岐を選択します。

ユーザーの意図最初に確認する利用資格利用資格がある場合の createModel プロバイダーモデルの選択利用資格がない場合の案内
モデルの指定なし/デフォルトの呼び出しまず 小程序成长计划 への登録を確認し、未登録の場合は Token Credits リソースパックを確認登録済みの場合:"hunyuan-exp"、それ以外:"cloudbase"登録済みの場合:hunyuan-2.0-instruct-20251111(成长计划のデフォルト)。それ以外:ユーザーとテキストモデルを選択し、DescribeAIModels → DescribeManagedAIModelList → UpdateAIModel を使って "cloudbase" グループ内で確認/有効化プラン未登録 → https://docs.cloudbase.net/ai/ai-inspire-plan を案内。リソースパックがない → 購入リンクを提示
ユーザーが hunyuan-* モデルをリクエスト小程序成长计划 への登録"hunyuan-exp"(プラン専用の Token パック課金)hunyuan-2.0-instruct-20251111 があればそれを使用。なければ DescribeAIModels({ GroupName: "hunyuan-exp" }).Models[] で確認し、UpdateAIModel で有効化未登録 → 先に登録するか、"cloudbase" と非 hunyuan モデルに切り替える
ユーザーが deepseek-*/glm-*/kimi-*/minimax-*/その他の hunyuan 以外の管理対象モデルをリクエストToken Credits 资源包 の有効化"cloudbase"モデルがすでに有効になっていると想定してはいけません。DescribeAIModels → モデルがなければ、正規の Model 文字列を確認するために DescribeManagedAIModelList → Status: 1 を指定した UpdateAIModel(Models[] 全体を置き換え)リソースパックが有効化されていない → 購入リンクを提示
ユーザーがサードパーティ製/セルフホストの(管理対象外)モデルをリクエスト課金資格の確認をスキップし、「カスタムオンボーディング」へ進むカスタムの GroupName(custom- で始まる必要があります)CreateAIModel.Models[] で登録コンソールと CreateAIModel の両方の方法を提示
  1. 小程序成长计划への登録を確認します。
callCloudApi({
  service: "tcb",
  action: "DescribeActivityInfo",
  params: {
    ActivityNames: ["ai_miniprogram_inspire_plan"], // PascalCase preferred; switch to camelCase if InvalidParameter is returned
  },
})

利用資格の判定基準: レスポンスの attendRecords に、activityName === "ai_miniprogram_inspire_plan" を満たし、envId が現在の環境と一致するエントリーが 1 件以上含まれていること。利用資格がある場合、デフォルトで createModel("hunyuan-exp") と hunyuan-2.0-instruct-20251111 を使用します。課金にはプラン専用 Token パック pkg_hunyuan_token_la_inspire_100m を使用します。

利用資格がない場合: 何も伝えずにフォールバックしてはいけません。「現在の環境は小程序成长计划に登録されていません」とユーザーに伝え、登録ページ https://docs.cloudbase.net/ai/ai-inspire-plan を提示し、登録して再試行するか、非 hunyuan モデルを使う Token Credits リソースパックの経路に切り替えるかを確認します。

  1. Token Credits リソースパックを確認します(経路が "cloudbase" メイン管理グループに進む場合)。
callCloudApi({
  service: "tcb",
  action: "DescribeEnvPostpayPackage",
  params: {
    EnvId: "<current envId>",
  },
})

利用資格の判定基準: envPostpayPackageInfoList に、postpayPackageId が pkg_tcb_tokencredits_ で始まり、status ∉ [3, 4](期限切れでも無効化済みでもない)で、versionSwitchStatus がブロック状態ではないエントリーが含まれていること。

利用資格がない場合: 購入リンクを提示します({envId} を実際の ID に置き換えます。プレースホルダーのままにしてはいけません)。

https://buy.cloud.tencent.com/lowcode?buyType=resPack&envId={envId}&resourceType=token
事前確認 ② · グループの準備状況(すべてのミニプログラム AI 呼び出しで必須)

利用資格を満たしていても、対象モデルを呼び出せるとは限りません。"cloudbase" メインのマネージドグループでは、デフォルトで有効になっているモデルはありません。まず DescribeAIModels を呼び出して有効なモデルを確認し、モデルが見つからない場合は DescribeManagedAIModelList でサポート対象モデルの正式な一覧を取得してから、Status: 1 を指定した UpdateAIModel で有効にする必要があります。"hunyuan-exp" グループの準備状況は成長計画への登録によって決まります。登録するだけで hunyuan-2.0-instruct-20251111 を利用できますが、その他の hunyuan SKU はすべて DescribeAIModels({ GroupName: "hunyuan-exp" }).Models[] で確認し、見つからない場合は UpdateAIModel で有効にする必要があります。

  1. 環境で現在設定されているグループとスイッチを照会します(tcb Action DescribeAIModels、Version 2018-06-08)。
callCloudApi({
  service: "tcb",
  action: "DescribeAIModels",
  params: { EnvId: "<envId>" },
})

AIModelGroups: AIModelGroup[] が返されます。各 AIModelGroup には、GroupName(例:cloudbase/hunyuan-exp/カスタムグループ)、Type(builtin/custom)、Models: [{ Model, EnableMCP, Tags }]、Status(1=オン/2=オフ)が含まれます。グループの準備完了条件は、GroupName が存在すること、Status === 1 であること、対象の Model が Models[] に含まれていることの3つすべてです。

  1. 対象モデルが DescribeAIModels の応答にない場合は、DescribeManagedAIModelList でプラットフォームのモデル一覧と料金を照会します。ModelSpec(コンテキスト長など)と ModelChargingInfo(Uniform/Tiered の料金体系)を含む ManagedAIModelGroup[] が返されます。対象モデルを選び、UpdateAIModel で有効にします。
callCloudApi({
  service: "tcb",
  action: "UpdateAIModel",
  params: {
    EnvId: "<envId>",
    GroupName: "cloudbase",
    Status: 1, // 1=on, 2=off
    Models: [
      { Model: "deepseek-v4-flash", EnableMCP: false },
      { Model: "deepseek-v3.2", EnableMCP: false },   // append the new model to enable
    ],
    // ⚠️ `Models` is a FULL REPLACEMENT, not incremental; merge the old list + new entries before passing.
  },
})
  1. 両方の手順が完了してから、ミニプログラムのコードに wx.cloud.extend.AI.createModel("<GroupName>") を記述し、そのグループの Models[] に存在する model 値を渡してください。

順序は固定です。 利用資格がなければ、有効なモデルでも課金されません。グループの準備ができていなければ、利用資格があっても ModelNotEnabled クラスのエラーが発生します。ビジネスコードを書く前に、両方の手順を完了する必要があります。

API の大文字・小文字に関するヒント: tcb のパブリックサービスの Action では、正式には PascalCase(EnvId、GroupName、ActivityNames)が使われますが、一部のドキュメントでは camelCase が使われています。最初の呼び出しで InvalidParameter が発生した場合は、大文字・小文字を切り替えて再試行し、動作する形式をプロジェクトのラッパーに固定してください。


利用可能なプロバイダーとモデル

wx.cloud.extend.AI.createModel(provider) の provider 引数は、DescribeAIModels が返す GroupName と同じです。有効な値は3種類だけです。選択する前に判断ツリーを実行してください。

A. 小程序成长计划限定(登録済みの場合のデフォルト)
createModel providerデフォルトモデルその他の利用可能なモデル備考
"hunyuan-exp"hunyuan-2.0-instruct-20251111その他の hunyuan SKU(例:instruct/thinking/turbos/role の各バリアント)— 実行時に DescribeAIModels({ GroupName: "hunyuan-exp" }).Models[] で照会してください。ハードコードしないでくださいレガシーな Type=builtin の GroupName。pkg_hunyuan_token_la_inspire_100m で課金されます。成長計画に登録していない場合は使用しないでください
B. メインのマネージドグループ(Token Credits パックのシナリオ、推奨デフォルト)

"cloudbase" の GroupName は、Tencent Cloud TokenHub が提供する統合マネージドプールです。Hunyuan ファミリー(HY 2.0 Instruct、HY 2.0 Think、Hunyuan-role、Hy3 preview、…)、DeepSeek ファミリー(DeepSeek-V4-Pro、DeepSeek-V4-Flash、Deepseek-v3.2、Deepseek-v3.1、Deepseek-r1-0528、Deepseek-v3-0324、…)、Zhipu GLM(GLM-5、GLM-5-Turbo、GLM-5.1、GLM-5V-Turbo)、Kimi(K2.5、K2.6)、MiniMax(M2.5、M2.7)など、複数のファーストパーティおよびサードパーティのベンダーを対象としています。対象モデルは随時更新されるため、アプリケーションコードにリストをハードコードせず、必ず実行時に取得してください。

createModel のプロバイダーモデルの利用準備状況モデルを有効にする方法備考
"cloudbase"デフォルトでは有効なモデルはありません — まず必ず DescribeAIModels({ GroupName: "cloudbase" }).Models[] を確認してください1)DescribeManagedAIModelList を使って正式なカタログと料金を取得します(Model の文字列を推測しないでください)。2)Status: 1 と、対象モデルを含む全置換の Models[] を指定して UpdateAIModel を呼び出します統合マネージドグループ(Type=builtin)、Remark "腾讯云开发"、pkg_tcb_tokencredits_* リソースパックが必要です

⚠️ ミニプログラムでよくある間違い:createModel("deepseek") / createModel("hunyuan") / createModel("glm") / createModel("kimi") / createModel("minimax") / createModel("custom") と記述することです。すべて誤りです。これらはベンダー名またはモデル名であり、プロバイダー名または GroupName ではありません。プロバイダーには、DescribeAIModels が返す GroupName の値を指定する必要があります。新しいプロジェクトでは常に統合 "cloudbase" マネージドグループを使用し、model フィールドで具体的なベンダーのモデルを選択してください。

C. マネージドカタログにない場合 → カスタム登録

サードパーティ/セルフホスト/OpenAI 互換エンドポイントを使用するモデル(A/B に表示されないもの)は、上記の課金経路を通りません。まず「カスタム登録」を行い、Type=custom の GroupName を登録する必要があります。次のセクションを参照してください。


カスタム登録(マネージドカタログにない場合)

ユーザーが、成長計画(hunyuan-exp)にもメインのマネージドグループ(cloudbase)のカタログにもないモデル(例:企業がホストする OpenAI 互換エンドポイント、サードパーティのモデルサービス)を指定した場合は、以下のいずれかの方法を選択してください。「サードパーティ/セルフホスト/OpenAI 互換エンドポイント」などの中立的な表現を使用し、特定の競合ブランド名は挙げないでください。

方法 1 · コンソールで登録

ユーザーに CloudBase コンソールの AI モデルページを案内してください。

https://tcb.cloud.tencent.com/dev?envId={envId}#/ai

{envId} を実際の環境 ID に置き換え、モデル名、エンドポイント、API キーなどをユーザーに入力してもらいます。

方法 2 · callCloudApi + CreateAIModel で登録

tcb の Action CreateAIModel(Version 2018-06-08)は、現在の環境に Type=custom の AI モデルグループを作成します。

callCloudApi({
  service: "tcb",
  action: "CreateAIModel",
  params: {
    EnvId: "<current envId>",
    GroupName: "custom-openai-compat",  // ⚠️ MUST start with "custom-" (e.g. custom-kimi, custom-moonshot) to avoid colliding with built-in / vendor GroupNames; this becomes the value passed to createModel(provider)
    BaseUrl: "https://api.example.com/v1",
    Models: [
      { Model: "gpt-4o-mini", EnableMCP: false },
      { Model: "gpt-4o",       EnableMCP: false },
    ],
    Remark: "Internal OpenAI-compatible endpoint",
    Status: 1,                         // 1=on, 2=off
    Secret: {
      // Key / ApiKey: pick one; OpenAI-compatible endpoints usually use ApiKey
      ApiKey: "<vendor-api-key>",
    },
  },
})

登録後:

  • DescribeAIModels を実行し、GroupName が Status=1 で存在することと、対象の Model が Models[] に含まれていることを確認します。
  • ミニプログラムで wx.cloud.extend.AI.createModel("custom-openai-compat") を呼び出し、登録したモデル名(例:"gpt-4o-mini")を model フィールドとして渡します。
  • 後からモデルを追加または変更するには、UpdateAIModel を使用します(Models は全置換であること、Status はオン/オフに 1/2 を使用することに注意してください)。カスタムグループ全体を削除するには、DeleteAIModel を使用します(カスタムグループのみ。GroupNames.N で一括処理できます)。
  • すべての呼び出しは引き続き環境の課金経路を通ります。カスタムモデルでも Token 決済が必要な場合は、まず対象となるか確認する必要があります。

前提条件

  • WeChat 基盤ライブラリ 3.7.1+
  • SDK の追加インストールは不要です

初期化

// app.js
App({
  onLaunch: function() {
    wx.cloud.init({ env: "<YOUR_ENV_ID>" });
  }
})

generateText() - 非ストリーミング

⚠️ JS/Node SDK とは異なります: 戻り値はモデルの生レスポンスです。

前提条件:「Mandatory Two-Step Preflight」が完了しており、DescribeAIModels を通じて対象モデルが有効であることを確認済み(または、モデルがない場合は UpdateAIModel で有効化済み)です。以下の例では、現在の環境が小程序成长计划に登録されており、createModel("hunyuan-exp") と hunyuan-2.0-instruct-20251111 を使用することを前提としています。対象がリソースパックになった場合は、プロバイダーを "cloudbase" に変更し、model にはユーザーが選択し、たった今 UpdateAIModel で有効化したモデルを設定してください。deepseek-v4-flash がすでに有効だと決して決めつけないでください。

const model = wx.cloud.extend.AI.createModel("hunyuan-exp");

const res = await model.generateText({
  model: "hunyuan-2.0-instruct-20251111",  // plan-enrolled default
  messages: [{ role: "user", content: "hi" }],
});

// ⚠️ Return value is the RAW model response, NOT wrapped like JS/Node SDK
console.log(res.choices[0].message.content);  // access via choices array
console.log(res.usage);                        // token usage

streamText() - ストリーミング

⚠️ JS/Node SDK とは異なります: パラメーターは必ず data オブジェクトでラップする必要があります。コールバックもサポートされています。

前提条件:「Mandatory Two-Step Preflight」が完了しており、対象モデルが有効化されています。以下の例では成长计划の分岐を使用しています。リソースパックの分岐では、createModel("hunyuan-exp") を createModel("cloudbase") に変更し、model にはユーザーが選択し、たった今 UpdateAIModel で有効化したモデルを設定してください(デフォルトで有効なモデルはありません)。

const model = wx.cloud.extend.AI.createModel("hunyuan-exp");

// ⚠️ Parameters MUST be wrapped in a `data` object
const res = await model.streamText({
  data: {                              // ⚠️ Required wrapper
    model: "hunyuan-2.0-instruct-20251111",  // plan-enrolled default
    messages: [{ role: "user", content: "hi" }]
  },
  onText: (text) => {                  // Optional: incremental text callback
    console.log("New text:", text);
  },
  onEvent: ({ data }) => {             // Optional: raw event callback
    console.log("Event:", data);
  },
  onFinish: (fullText) => {            // Optional: completion callback
    console.log("Done:", fullText);
  }
});

// Async iteration is also available
for await (let str of res.textStream) {
  console.log(str);
}

// Check for completion via eventStream
for await (let event of res.eventStream) {
  console.log(event);
  if (event.data === "[DONE]") {       // ⚠️ Check for [DONE] to stop
    break;
  }
}

エラーハンドリングのパターン

前提条件:「Mandatory Two-Step Preflight」が完了しています。リソースパックの分岐では、"cloudbase" と、DescribeAIModels / UpdateAIModel を通じてたった今確認/有効化した特定のテキストモデルを使用してください。デフォルトで有効なモデルはありません。

const model = wx.cloud.extend.AI.createModel("cloudbase");

try {
  const res = await model.generateText({
    model: "deepseek-v4-flash",
    messages: [{ role: "user", content: "Write a welcome message" }],
  });

  console.log(res.choices[0].message.content);
} catch (error) {
  console.error("Mini Program AI request failed", error);
}

API の比較:JS/Node SDK と WeChat Mini Program

機能JS/Node SDKWeChat Mini Program
名前空間app.ai()wx.cloud.extend.AI
generateText のパラメーター直接オブジェクト直接オブジェクト
generateText の戻り値{ text, usage, messages }生データ:{ choices, usage }
streamText のパラメーター直接オブジェクト⚠️ data: {...} でラップ
streamText の戻り値{ textStream, dataStream }{ textStream, eventStream }
コールバック非対応onText、onEvent、onFinish
画像生成Node SDK のみ利用不可

型定義

streamText() の入力
interface WxStreamTextInput {
  data: {                              // ⚠️ Required wrapper object
    model: string;
    messages: Array<{
      role: "user" | "system" | "assistant";
      content: string;
    }>;
  };
  onText?: (text: string) => void;     // incremental text callback
  onEvent?: (prop: { data: string }) => void;  // raw event callback
  onFinish?: (text: string) => void;   // completion callback
}
streamText() の戻り値
interface WxStreamTextResult {
  textStream: AsyncIterable<string>;   // incremental text stream
  eventStream: AsyncIterable<{         // raw event stream
    event?: unknown;
    id?: unknown;
    data: string;                      // "[DONE]" when complete
  }>;
}
generateText() の戻り値
// Raw model response (OpenAI-compatible format)
interface WxGenerateTextResponse {
  id: string;
  object: "chat.completion";
  created: number;
  model: string;
  choices: Array<{
    index: number;
    message: {
      role: "assistant";
      content: string;
    };
    finish_reason: string;
  }>;
  usage: {
    prompt_tokens: number;
    completion_tokens: number;
    total_tokens: number;
  };
}

ベストプラクティス

  1. 業務コードを書く前に、2 段階の事前確認を順番どおりに実行してください。 固定の順序:① DescribeActivityInfo / DescribeEnvPostpayPackage で課金対象か確認 → ② DescribeAIModels でグループの準備状況を確認(必要に応じて、DescribeManagedAIModelList でカタログと料金を確認し、その後 UpdateAIModel で対象モデルを有効化)。両方の確認を通過してから、wx.cloud.extend.AI.createModel(...) を記述してください。
  2. createModel(provider) が受け付ける値は、次の 3 種類だけです。 "hunyuan-exp"(成長計画専用のレガシーグループ)、"cloudbase"(メインのマネージドグループ。新規プロジェクトのデフォルト)、またはカスタムオンボーディングの GroupName(組み込み名/ベンダー名との衝突を避けるため、必ず custom- で始めてください。例:custom-kimi、custom-openai-compat)。DescribeAIModels が実際に deepseek という名前のレガシー組み込みグループを返す場合を除き、createModel("deepseek") は絶対に記述しないでください。また、createModel("hunyuan")、createModel("kimi")、createModel("custom") も記述しないでください。これらはモデル名/ベンダー名またはプレースホルダーであり、GroupName ではありません。
  3. model フィールドには DescribeAIModels から取得した値を指定してください。 選択したグループの Models[].Model リストに実際に存在する値を渡してください。メインのマネージドグループでデフォルトで有効なのは deepseek-v4-flash だけです。他のモデルを使うには、先に UpdateAIModel を呼び出してください。
  4. Hunyuan モデルは成長計画に厳密に紐付いています。 hunyuan-* モデルを使うには、成長計画への加入が必要です。未加入の場合は、ユーザーに https://docs.cloudbase.net/ai/ai-inspire-plan を案内するか、"cloudbase" と deepseek-v4-flash に切り替えてください。確認を回避して、そのまま呼び出すことはしないでください。
  5. モデルを追加で有効化する前に、料金を確認してください。 DescribeManagedAIModelList は ModelChargingInfo(一律料金の Uniform/段階料金の Tiered)と ModelSpec.ContextLength を返します。UpdateAIModel を呼び出す前に確認してください。Models は全置換です。渡す前に既存のリストと新しいエントリーを結合してください。
  6. 基本ライブラリのバージョンを確認してください。 3.7.1 以降が必要です。それより古いバージョンでは wx.cloud.extend.AI が undefined になります。モデルの問題としてデバッグしないでください。
  7. UI の更新にはコールバックを使ってください。 onText はチャットバブルを段階的に更新するのに適しています。eventStream から手動で文字列を連結すると、区切りが失われることがあります。
  8. [DONE] を確認してください。 eventStream を反復処理するときは、event.data === "[DONE]" の場合にのみ停止してください。それ以外の場合、ストリームは次のフレームを待ち続けます。
  9. data ラッパーを忘れないでください。 streamText のパラメーターは data: { ... } で囲む必要があります。これは JS/Node SDK とは異なります。これを忘れるとパラメーターエラーになります。
  10. 「対象外/グループ未準備」と「呼び出し失敗」を区別してください。 前者の場合は、加入/購入/UpdateAIModel の手順にユーザーを案内してください。後者は、プロンプト、パラメーター、またはネットワークのデバッグに関するものです。エラーメッセージも次のアクションもまったく異なります。
  11. ミニプログラムにサードパーティモデルの API キーをハードコードしないでください。 マネージドカタログにないモデルには CreateAIModel(Secret.ApiKey)を使い、キーは CloudBase 側に保存してください。ミニプログラムには GroupName だけを保持してください。
  12. TypeScript では、型エラーを抑えるために any を使わないでください。 wx.cloud.extend.AI の型が不足している場合は、実際に使う範囲に合わせて正確な interface を宣言するか、ローカルの .d.ts で型を拡張してください。: any、as any、@ts-ignore、@ts-nocheck は絶対に使わないでください。
  13. 完了を宣言する前に、必ず自分で検証してください。 ミニプログラムをビルドし、WeChat DevTools シミュレーターで開いて、実際の streamText/generateText のフローをエンドツーエンドで実行し、(a)テキストチャンクが onText 経由で届くこと、(b)[DONE] でストリームが終了すること、(c)新たなコンソールエラーがないことを確認してください。実際に実行せず「動作するはずです」と述べても、証拠にはなりません。

コメント