세션 제한 구성
maxAiCredits를 세션의 현재 정산 기간에 대한 AI 크레딧 소프트 캡으로 설정하세요. 모델 호출이 반환된 후 사용량이 확인되므로 런타임이 다음 모델 호출을 차단하기 전에 하나의 응답이 구성된 값을 초과할 수 있습니다. 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``session 제한이 활성화되지 않음을 의미합니다. | 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,
});
}
});