feat: add gemini 2.5 pro model

This commit is contained in:
Carl-Robert Linnupuu 2025-04-06 18:29:50 +01:00
parent 1ec5e3ad58
commit 4247cbddfb
4 changed files with 26 additions and 23 deletions

View file

@ -24,10 +24,7 @@ class CodeGPTProjectActivity : ProjectActivity {
override suspend fun execute(project: Project) {
EditorActionsUtil.refreshActions()
val settings = service<GeneralSettings>().state
if (settings.selectedService == ServiceType.CODEGPT) {
project.service<CodeGPTService>().syncUserDetailsAsync()
}
project.service<CodeGPTService>().syncUserDetailsAsync()
if (!ApplicationManager.getApplication().isUnitTestMode
&& service<ConfigurationSettings>().state.checkForNewScreenshots

View file

@ -16,7 +16,7 @@ object CodeGPTAvailableModels {
return when (pricingPlan) {
null, ANONYMOUS -> listOf(
CodeGPTModel("o3-mini", "o3-mini", Icons.OpenAI, INDIVIDUAL),
CodeGPTModel("GPT-4o", "gpt-4o", Icons.OpenAI, INDIVIDUAL),
CodeGPTModel("Gemini 2.5 Pro", "gemini-pro-2.5", Icons.Google, INDIVIDUAL),
CodeGPTModel("Claude 3.7 Sonnet", "claude-3.7-sonnet", Icons.Anthropic, INDIVIDUAL),
CodeGPTModel("DeepSeek R1", "deepseek-r1", Icons.DeepSeek, INDIVIDUAL),
CodeGPTModel("Gemini 2.0 Flash", "gemini-flash-2.0", Icons.Google, ANONYMOUS),
@ -25,22 +25,23 @@ object CodeGPTAvailableModels {
FREE -> listOf(
CodeGPTModel("o3-mini", "o3-mini", Icons.OpenAI, INDIVIDUAL),
CodeGPTModel("GPT-4o", "gpt-4o", Icons.OpenAI, INDIVIDUAL),
CodeGPTModel("Gemini 2.5 Pro", "gemini-pro-2.5", Icons.Google, INDIVIDUAL),
CodeGPTModel("Claude 3.7 Sonnet", "claude-3.7-sonnet", Icons.Anthropic, INDIVIDUAL),
CodeGPTModel("DeepSeek R1", "deepseek-r1", Icons.DeepSeek, INDIVIDUAL),
CodeGPTModel("DeepSeek V3", "deepseek-v3", Icons.DeepSeek, FREE),
CodeGPTModel("Qwen 2.5 Coder (32B)", "qwen-2.5-32b-chat", Icons.Qwen, FREE),
CodeGPTModel("Llama 3.1 (405B)", "llama-3.1-405b", Icons.Meta, FREE),
CodeGPTModel("Gemini 2.0 Flash", "gemini-flash-2.0", Icons.Google, ANONYMOUS),
CodeGPTModel("GPT-4o mini", "gpt-4o-mini", Icons.OpenAI, ANONYMOUS),
)
INDIVIDUAL -> listOf(
CodeGPTModel("o3-mini", "o3-mini", Icons.OpenAI, INDIVIDUAL),
CodeGPTModel("GPT-4o", "gpt-4o", Icons.OpenAI, INDIVIDUAL),
CodeGPTModel("Claude 3.7 Sonnet", "claude-3.7-sonnet", Icons.Anthropic, INDIVIDUAL),
CodeGPTModel("Gemini 2.5 Pro", "gemini-pro-2.5", Icons.Google, INDIVIDUAL),
CodeGPTModel("DeepSeek R1", "deepseek-r1", Icons.DeepSeek, INDIVIDUAL),
CodeGPTModel("DeepSeek V3", "deepseek-v3", Icons.DeepSeek, FREE),
CodeGPTModel("Gemini 2.0 Flash", "gemini-flash-2.0", Icons.Google, ANONYMOUS),
)
}
}
@ -51,7 +52,7 @@ object CodeGPTAvailableModels {
CodeGPTModel("GPT-4o", "gpt-4o", Icons.OpenAI, INDIVIDUAL),
CodeGPTModel("GPT-4o mini", "gpt-4o-mini", Icons.OpenAI, ANONYMOUS),
CodeGPTModel("Claude 3.7 Sonnet", "claude-3.7-sonnet", Icons.Anthropic, INDIVIDUAL),
CodeGPTModel("Gemini 1.5 Pro", "gemini-pro-1.5", Icons.Google, INDIVIDUAL),
CodeGPTModel("Gemini 2.5 Pro", "gemini-pro-2.5", Icons.Google, INDIVIDUAL),
CodeGPTModel("Gemini 2.0 Flash", "gemini-flash-2.0", Icons.Google, ANONYMOUS),
CodeGPTModel("Qwen 2.5 Coder (32B)", "qwen-2.5-32b-chat", Icons.Qwen, FREE),
CodeGPTModel("Llama 3.1 (405B)", "llama-3.1-405b", Icons.Meta, FREE),

View file

@ -11,7 +11,7 @@ import ee.carlrobert.codegpt.settings.GeneralSettings
import ee.carlrobert.codegpt.settings.service.codegpt.CodeGPTUserDetailsNotifier.Companion.CODEGPT_USER_DETAILS_TOPIC
import kotlinx.coroutines.*
@Service
@Service(Service.Level.PROJECT)
class CodeGPTService private constructor(val project: Project) {
private val serviceScope = CoroutineScope(SupervisorJob() + Dispatchers.Default)
@ -22,22 +22,26 @@ class CodeGPTService private constructor(val project: Project) {
fun syncUserDetailsAsync(apiKey: String?) {
serviceScope.launch {
val userDetails = withContext(Dispatchers.IO) {
if (apiKey.isNullOrEmpty()) null
else CompletionClientProvider.getCodeGPTClient().getUserDetails(apiKey)
}
if (userDetails != null && userDetails.pricingPlan != null) {
CODEGPT_USER_DETAILS.set(project, userDetails)
if (!userDetails.fullName.isNullOrEmpty()) {
service<GeneralSettings>().state.run {
displayName = userDetails.fullName
avatarBase64 = userDetails.avatarBase64 ?: ""
try {
val userDetails = withContext(Dispatchers.IO) {
if (apiKey.isNullOrEmpty()) null
else CompletionClientProvider.getCodeGPTClient().getUserDetails(apiKey)
}
if (userDetails != null && userDetails.pricingPlan != null) {
CODEGPT_USER_DETAILS.set(project, userDetails)
if (!userDetails.fullName.isNullOrEmpty()) {
service<GeneralSettings>().state.run {
displayName = userDetails.fullName
avatarBase64 = userDetails.avatarBase64 ?: ""
}
}
}
project.messageBus
.syncPublisher<CodeGPTUserDetailsNotifier>(CODEGPT_USER_DETAILS_TOPIC)
.userDetailsObtained(userDetails)
} catch (ex: Exception) {
// ignore
}
project.messageBus
.syncPublisher<CodeGPTUserDetailsNotifier>(CODEGPT_USER_DETAILS_TOPIC)
.userDetailsObtained(userDetails)
}
}
}

View file

@ -277,6 +277,7 @@ class UserInputPanel(
return when (service<GeneralSettings>().state.selectedService) {
ServiceType.CUSTOM_OPENAI,
ServiceType.ANTHROPIC,
ServiceType.GOOGLE,
ServiceType.AZURE,
ServiceType.OLLAMA -> true
@ -284,7 +285,7 @@ class UserInputPanel(
listOf(
"gpt-4o",
"gpt-4o-mini",
"gemini-pro-1.5",
"gemini-pro-2.5",
"claude-3-opus",
"claude-3.5-sonnet",
"claude-3.7-sonnet"