review-copilot
Version:
ReviewCopilot - AI-powered code review assistant with customizable prompts
82 lines (81 loc) • 3.63 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DeepSeekProvider = void 0;
const base_provider_1 = require("./base-provider");
const chalk_1 = __importDefault(require("chalk"));
const ai_messages_1 = require("../constants/ai-messages");
class DeepSeekProvider extends base_provider_1.BaseProvider {
constructor(config) {
super(config);
}
formatContent(prompt, content) {
return JSON.stringify(`${prompt}. Content to review:\n${content}`
.replace(/\n{1,}/g, ' ')
.trim());
}
async review(prompt, content) {
try {
console.log(chalk_1.default.blue('\nSending request to DeepSeek:'));
console.log(chalk_1.default.gray('Model:'), this.config.model);
console.log(chalk_1.default.gray('BaseURL:'), this.config.baseURL);
console.log(chalk_1.default.gray('Prompt:'), prompt.slice(0, 100) + '...');
console.log(chalk_1.default.gray('Content:'), JSON.stringify(content));
if (!content.trim()) {
return 'No content to review.';
}
const requestBody = {
model: this.config.model || 'deepseek-chat',
messages: [
{
role: 'system',
content: ai_messages_1.SYSTEM_MESSAGES.CODE_REVIEW(this.config.reviewLanguage),
},
{
role: 'user',
content: this.formatContent(prompt, content),
},
],
temperature: 0.5,
stream: false,
max_tokens: 8192,
};
console.log(chalk_1.default.gray('Request body:'), requestBody);
const response = await this.client.chat.completions.create(requestBody);
if (!response.choices?.[0]?.message?.content) {
throw new Error('Empty response from DeepSeek API');
}
const result = response.choices[0].message.content;
console.log(chalk_1.default.green('\nReceived response from DeepSeek'));
console.log(chalk_1.default.gray('Response:'), result);
return result;
}
catch (error) {
console.error(chalk_1.default.red('\nDeepSeek API Error:'), error);
if (error instanceof Error) {
const errorMessage = error.message;
if (errorMessage.includes('401')) {
throw new Error('DeepSeek API authentication failed. Please check your API key.');
}
else if (errorMessage.includes('404')) {
throw new Error('DeepSeek API endpoint not found. Please check the API URL.');
}
else if (errorMessage.includes('429')) {
throw new Error('DeepSeek API rate limit exceeded. Please try again later.');
}
else if (errorMessage.includes('500')) {
throw new Error('DeepSeek API internal server error. Please try again later.');
}
console.error(chalk_1.default.red('Error details:'), {
message: error.message,
name: error.name,
stack: error.stack,
});
}
throw error;
}
}
}
exports.DeepSeekProvider = DeepSeekProvider;