Настройте лимит сессий
Установите maxAiCredits софтлимит AI Credits для текущего бухгалтерского окна сессии. Использование проверяется после возвращения вызовов модели, поэтому один ответ может превысить заданное значение до того, как время выполнения блокирует следующий вызов модели. SDK пересылает это значение Copilot CLI при создании или возобновлении сессии.
const session = await client.createSession({
onPermissionRequest: approveAll,
sessionLimits: {
maxAiCredits: 30,
},
});
const resumed = await client.resumeSession(session.sessionId, {
onPermissionRequest: approveAll,
sessionLimits: {
maxAiCredits: 30,
},
});
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,
},
)
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),
},
})
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,
},
});
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();
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?;
Наблюдайте за бюджетными событиями
Приложения могут подписываться на события сессий для обновления интерфейса, когда меняется мягкий лимит или сессия достигает исчерпанного бюджета.
| Тип события | Когда он излучается | Важные области |
|---|---|---|
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,
});
}
});