ai-model-wechat について
wx.cloud.extend.AIを使ってWeChat Mini ProgramからAIモデルを呼び出すためのコーディングエージェント用スキルです。テキスト生成やストリーミングに対応し、providerとモデルを選ぶ前に課金資格とグループの準備状態を確認します。
主な機能
- 01wx.cloud.extend.AIでモデルを呼び出し
- 02テキスト生成とストリーミングに対応
- 03providerのグループ名とモデルIDを区別
- 04課金資格とグループの準備状態を確認
- 05マネージド・カスタムグループの設定
活用シーン
- 01Mini ProgramへのAIテキスト生成の追加
- 02生成レスポンスのストリーミング
- 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_modelOpenAPI 仕様が追加されています)
⛔ 停止 — 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: [...] }
});
判断手順(ユーザーが特定のモデルを指定した場合)
- ユーザーが「DeepSeek v3.2 を使う」「hunyuan thinking を使う」「Kimi k2.6 を使う」などと指定します。
- まず、以下の利用可否判定ツリーを実行してください。正しい
providerは、環境が Growth Plan の対象でユーザーがhunyuan-*モデルを指定した場合は"hunyuan-exp"、それ以外のマネージドカタログ内のモデルの場合は"cloudbase"の可能性があります。 - モデル ID を
data内のmodelフィールドに指定します:{ model: "deepseek-v3.2" }、{ model: "hunyuan-2.0-instruct-20251111" }、{ model: "kimi-k2.6" }、… - モデル 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 メイン管理グループを使用)です。
-
MCP ツール
queryEnv action=infoを使ってenvIdを取得します。 -
ユーザーの意図に応じて分岐を選択します。
| ユーザーの意図 | 最初に確認する利用資格 | 利用資格がある場合の 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 の両方の方法を提示 |
- 小程序成长计划への登録を確認します。
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 リソースパックの経路に切り替えるかを確認します。
- 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 で有効にする必要があります。
- 環境で現在設定されているグループとスイッチを照会します(
tcbActionDescribeAIModels、Version2018-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つすべてです。
- 対象モデルが
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.
},
})
- 両方の手順が完了してから、ミニプログラムのコードに
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 SDK | WeChat 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;
};
}
ベストプラクティス
- 業務コードを書く前に、2 段階の事前確認を順番どおりに実行してください。 固定の順序:①
DescribeActivityInfo/DescribeEnvPostpayPackageで課金対象か確認 → ②DescribeAIModelsでグループの準備状況を確認(必要に応じて、DescribeManagedAIModelListでカタログと料金を確認し、その後UpdateAIModelで対象モデルを有効化)。両方の確認を通過してから、wx.cloud.extend.AI.createModel(...)を記述してください。 createModel(provider)が受け付ける値は、次の 3 種類だけです。"hunyuan-exp"(成長計画専用のレガシーグループ)、"cloudbase"(メインのマネージドグループ。新規プロジェクトのデフォルト)、またはカスタムオンボーディングのGroupName(組み込み名/ベンダー名との衝突を避けるため、必ずcustom-で始めてください。例:custom-kimi、custom-openai-compat)。DescribeAIModelsが実際にdeepseekという名前のレガシー組み込みグループを返す場合を除き、createModel("deepseek")は絶対に記述しないでください。また、createModel("hunyuan")、createModel("kimi")、createModel("custom")も記述しないでください。これらはモデル名/ベンダー名またはプレースホルダーであり、GroupNameではありません。modelフィールドにはDescribeAIModelsから取得した値を指定してください。 選択したグループのModels[].Modelリストに実際に存在する値を渡してください。メインのマネージドグループでデフォルトで有効なのはdeepseek-v4-flashだけです。他のモデルを使うには、先にUpdateAIModelを呼び出してください。- Hunyuan モデルは成長計画に厳密に紐付いています。
hunyuan-*モデルを使うには、成長計画への加入が必要です。未加入の場合は、ユーザーにhttps://docs.cloudbase.net/ai/ai-inspire-planを案内するか、"cloudbase"とdeepseek-v4-flashに切り替えてください。確認を回避して、そのまま呼び出すことはしないでください。 - モデルを追加で有効化する前に、料金を確認してください。
DescribeManagedAIModelListはModelChargingInfo(一律料金のUniform/段階料金のTiered)とModelSpec.ContextLengthを返します。UpdateAIModelを呼び出す前に確認してください。Modelsは全置換です。渡す前に既存のリストと新しいエントリーを結合してください。 - 基本ライブラリのバージョンを確認してください。 3.7.1 以降が必要です。それより古いバージョンでは
wx.cloud.extend.AIがundefinedになります。モデルの問題としてデバッグしないでください。 - UI の更新にはコールバックを使ってください。
onTextはチャットバブルを段階的に更新するのに適しています。eventStreamから手動で文字列を連結すると、区切りが失われることがあります。 [DONE]を確認してください。eventStreamを反復処理するときは、event.data === "[DONE]"の場合にのみ停止してください。それ以外の場合、ストリームは次のフレームを待ち続けます。dataラッパーを忘れないでください。streamTextのパラメーターはdata: { ... }で囲む必要があります。これは JS/Node SDK とは異なります。これを忘れるとパラメーターエラーになります。- 「対象外/グループ未準備」と「呼び出し失敗」を区別してください。 前者の場合は、加入/購入/
UpdateAIModelの手順にユーザーを案内してください。後者は、プロンプト、パラメーター、またはネットワークのデバッグに関するものです。エラーメッセージも次のアクションもまったく異なります。 - ミニプログラムにサードパーティモデルの API キーをハードコードしないでください。 マネージドカタログにないモデルには
CreateAIModel(Secret.ApiKey)を使い、キーは CloudBase 側に保存してください。ミニプログラムにはGroupNameだけを保持してください。 - TypeScript では、型エラーを抑えるために
anyを使わないでください。wx.cloud.extend.AIの型が不足している場合は、実際に使う範囲に合わせて正確なinterfaceを宣言するか、ローカルの.d.tsで型を拡張してください。: any、as any、@ts-ignore、@ts-nocheckは絶対に使わないでください。 - 完了を宣言する前に、必ず自分で検証してください。 ミニプログラムをビルドし、WeChat DevTools シミュレーターで開いて、実際の
streamText/generateTextのフローをエンドツーエンドで実行し、(a)テキストチャンクがonText経由で届くこと、(b)[DONE]でストリームが終了すること、(c)新たなコンソールエラーがないことを確認してください。実際に実行せず「動作するはずです」と述べても、証拠にはなりません。