Skip to content
pranit1453Public

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TokenUsageAdvisor:
String userID = (String) chatClientRequest.context().get(ChatMemory.CONVERSATION_ID); long used = tokenUsageService.getUsedTokens(userId); if (used >= 50_000) { throw new TokenLimitExceededException("Monthly token limit exceeded");}

CREATE TABLE user_token_usage ( user_id VARCHAR(100) PRIMARY KEY, used_tokens BIGINT NOT NULL, quota_limit BIGINT NOT NULL, reset_at TIMESTAMP NOT NULL );

public void checkAndReset(String userId) { UserTokenUsage usage = repository.findByUserId(userId); LocalDateTime now = LocalDateTime.now(); if (now.isAfter(usage.getResetAt())) { usage.setUsedTokens(0); usage.setResetAt(now.plusDays(1)); repository.save(usage); } if (usage.getUsedTokens() >= usage.getQuotaLimit()) { throw new TokenLimitExceededException("Daily token limit exceeded."); } }

public void addTokens(String userId, long tokens) { UserTokenUsage usage = repository.findByUserId(userId); usage.setUsedTokens(usage.getUsedTokens() + tokens); repository.save(usage); }

@Override public ChatClientResponse adviseCall(ChatClientRequest request,CallAdvisorChain chain) { String userId = (String) request.context().get("userId"); tokenUsageService.checkAndReset(userId); ChatClientResponse response = chain.nextCall(request); long tokens = response.chatResponse() .getMetadata() .getUsage() .getTotalTokens(); tokenUsageService.addTokens(userId, tokens); return response; }

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages