mirror of
https://github.com/freeedcom/ai-codereviewer.git
synced 2025-04-21 01:56:47 +00:00
Add token limit
This commit is contained in:
parent
9c6f0593c9
commit
433f267f60
1 changed files with 24 additions and 1 deletions
25
src/main.ts
25
src/main.ts
|
@ -9,6 +9,7 @@ const GITHUB_TOKEN: string = core.getInput("GITHUB_TOKEN");
|
||||||
const OPENAI_API_KEY: string = core.getInput("OPENAI_API_KEY");
|
const OPENAI_API_KEY: string = core.getInput("OPENAI_API_KEY");
|
||||||
const OPENAI_API_MODEL: string = core.getInput("OPENAI_API_MODEL");
|
const OPENAI_API_MODEL: string = core.getInput("OPENAI_API_MODEL");
|
||||||
const MAX_FILES: number = 25;
|
const MAX_FILES: number = 25;
|
||||||
|
const MAX_TOKENS: number = 4096;
|
||||||
|
|
||||||
const octokit = new Octokit({ auth: GITHUB_TOKEN });
|
const octokit = new Octokit({ auth: GITHUB_TOKEN });
|
||||||
|
|
||||||
|
@ -145,14 +146,36 @@ ${chunk.changes
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Rough estimation of tokens (4 chars ~= 1 token)
|
||||||
|
function estimateTokens(text: string): number {
|
||||||
|
return Math.ceil(text.length / 4);
|
||||||
|
}
|
||||||
|
|
||||||
async function getAIResponse(prompt: string): Promise<Array<{
|
async function getAIResponse(prompt: string): Promise<Array<{
|
||||||
lineNumber: string;
|
lineNumber: string;
|
||||||
reviewComment: string;
|
reviewComment: string;
|
||||||
}> | null> {
|
}> | null> {
|
||||||
|
// Estimate prompt tokens and ensure we don't exceed model limits
|
||||||
|
const estimatedPromptTokens = estimateTokens(prompt);
|
||||||
|
const maxResponseTokens = 700;
|
||||||
|
|
||||||
|
// If prompt is too long, truncate it while keeping essential parts
|
||||||
|
if (estimatedPromptTokens + maxResponseTokens > MAX_TOKENS) {
|
||||||
|
const allowedPromptTokens = MAX_TOKENS - maxResponseTokens;
|
||||||
|
const truncateAt = allowedPromptTokens * 4; // Convert back to characters
|
||||||
|
|
||||||
|
// Keep the beginning instructions and truncate the diff part
|
||||||
|
const parts = prompt.split("Git diff to review:");
|
||||||
|
if (parts.length === 2) {
|
||||||
|
const truncatedDiff = parts[1].slice(-truncateAt);
|
||||||
|
prompt = parts[0] + "Git diff to review:" + truncatedDiff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const queryConfig = {
|
const queryConfig = {
|
||||||
model: OPENAI_API_MODEL,
|
model: OPENAI_API_MODEL,
|
||||||
temperature: 0.2,
|
temperature: 0.2,
|
||||||
max_tokens: 700,
|
max_tokens: maxResponseTokens,
|
||||||
top_p: 1,
|
top_p: 1,
|
||||||
frequency_penalty: 0,
|
frequency_penalty: 0,
|
||||||
presence_penalty: 0,
|
presence_penalty: 0,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue