JetBrains добавил возможность подключать сторонние LLM API к своему AI Assistant. Теперь можно использовать не только встроенные модели, но и любые другие — например, от OpenAI или Anthropic. Удобно для тех, кто хочет кастомизировать помощника под свои нужды. 🔥
Технический обзор
JetBrains AI Assistant получил возможность работы со сторонними LLM API благодаря проекту ProxyAsLocalModel. Это решение позволяет использовать модели вроде Gemini, Qwen и Claude в среде JetBrains IDE, обходя ограничения бесплатного тарифа официального AI Assistant.
Архитектура решения
ProxyAsLocalModel — это прокси-сервер, реализованный на Ktor и kotlinx.serialization, который:
- Эмулирует API LM Studio и Ollama
- Поддерживает streaming chat completion
- Работает как fat JAR и GraalVM native image
Ключевые технические особенности:
- Отказ от рефлексии: Использование Ktor и kotlinx.serialization обеспечило совместимость с GraalVM
- Горячая перезагрузка конфигурации: Изменения в config.yml применяются без перезапуска сервера
- Поддержка множества провайдеров: OpenAI, Claude, Qwen, Gemini, Deepseek, Mistral, SiliconFlow
Практическое применение
Настройка прокси-сервера:
- Запустите приложение (JAR или native image)
- Отредактируйте автоматически созданный config.yml
- Укажите API-ключи и модели для каждого провайдера
Пример конфигурации для OpenAI:
apiProviders:
OpenAI:
type: OpenAi
baseUrl: https://api.openai.com/v1
apiKey:
<your_api_key>
modelList:
- gpt-4oТехнические преимущества
- Кроссплатформенность: Нативные образы для Windows x64
- Производительность: Быстрый старт благодаря GraalVM
- Гибкость: Возможность использовать любые совместимые LLM API
Ограничения
- Поддерживается только streaming chat completion API
- Требуется ручная настройка конфигурации
Заключение
ProxyAsLocalModel открывает новые возможности для разработчиков, использующих JetBrains IDE:
- Обход квот бесплатного тарифа AI Assistant
- Использование предпочитаемых LLM моделей
- Гибкая настройка под конкретные задачи
Решение демонстрирует потенциал Kotlin-стека (Ktor + kotlinx.serialization) для создания высокопроизводительных proxy-решений.