セッション制限を構成する
maxAiCreditsを、セッションの現在の会計期間におけるAIクレジットのソフトキャップに設定します。 モデル呼び出しが戻った後に使用状況がチェックされるため、ランタイムが次のモデル呼び出しをブロックする前に、1 つの応答が構成された値を超える可能性があります。 SDK は、セッションを作成または再開すると、この値を Copilot CLI に転送します。
TypeScript
const session = await client.createSession({
onPermissionRequest: approveAll,
sessionLimits: {
maxAiCredits: 30,
},
});
const resumed = await client.resumeSession(session.sessionId, {
onPermissionRequest: approveAll,
sessionLimits: {
maxAiCredits: 30,
},
});
Python
session = await client.create_session(
on_permission_request=PermissionHandler.approve_all,
session_limits={
"max_ai_credits": 30,
},
)
resumed = await client.resume_session(
session.session_id,
on_permission_request=PermissionHandler.approve_all,
session_limits={
"max_ai_credits": 30,
},
)
Go
session, err := client.CreateSession(ctx, &copilot.SessionConfig{
OnPermissionRequest: copilot.PermissionHandler.ApproveAll,
SessionLimits: &rpc.SessionLimitsConfig{
MaxAiCredits: copilot.Float64(30),
},
})
resumed, err := client.ResumeSession(ctx, session.SessionID, &copilot.ResumeSessionConfig{
OnPermissionRequest: copilot.PermissionHandler.ApproveAll,
SessionLimits: &rpc.SessionLimitsConfig{
MaxAiCredits: copilot.Float64(30),
},
})
.NET
var session = await client.CreateSessionAsync(new SessionConfig
{
OnPermissionRequest = PermissionHandler.ApproveAll,
SessionLimits = new SessionLimitsConfig
{
MaxAiCredits = 30,
},
});
var resumed = await client.ResumeSessionAsync(session.SessionId, new ResumeSessionConfig
{
OnPermissionRequest = PermissionHandler.ApproveAll,
SessionLimits = new SessionLimitsConfig
{
MaxAiCredits = 30,
},
});
Java
CopilotSession session = client
.createSession(new SessionConfig()
.setOnPermissionRequest(PermissionHandler.APPROVE_ALL)
.setSessionLimits(new SessionLimitsConfig(30.0)))
.get();
CopilotSession resumed = client
.resumeSession(session.getSessionId(), new ResumeSessionConfig()
.setOnPermissionRequest(PermissionHandler.APPROVE_ALL)
.setSessionLimits(new SessionLimitsConfig(30.0)))
.get();
Rust
let limits = SessionLimitsConfig {
max_ai_credits: Some(30.0),
};
let session = client
.create_session(
SessionConfig::new()
.approve_all_permissions()
.with_session_limits(limits.clone()),
)
.await?;
let resumed = client
.resume_session(
ResumeSessionConfig::new(session.id().clone())
.approve_all_permissions()
.with_session_limits(limits),
)
.await?;
予算イベントを観察する
アプリケーションはセッション イベントをサブスクライブして、ソフト キャップが変更されたとき、またはセッションが予算不足フローに達したときに UI を更新できます。
| イベントの種類 | 出力される場合 | 重要なフィールド |
|---|---|---|
session.session_limits_ | アクティブなセッション制限が変更されました。 | |
null | ||
sessionLimits値は、制限がアクティブでないことを意味します。 | session | |
session.usage_checkpoint | ランタイムは、再開時および課金のために、永続化された集計使用量を記録します。 | |
totalNanoAiu、total | ||
session_limits_ | セッションは予算不足のフローに達し、続行する前にユーザーの決定が必要です。 | |
requestId、maxAiCredits、usedAiCredits | ||
session_limits_ | 上限到達のプロンプトは解消されました。 | |
requestId、response.action、response.additional、response.max |
使用している SDK 言語に対して生成されたイベントの種類を使用します。 たとえば、TypeScript は event.typeで絞り込まれます。
session.on((event) => {
if (event.type === "session_limits_exhausted.requested") {
showBudgetDialog({
requestId: event.data.requestId,
maxAiCredits: event.data.maxAiCredits,
usedAiCredits: event.data.usedAiCredits,
});
}
});