Сейчас много клиентов на базе веба и Electron — мне не нравится, что они тяжелые и громоздкие. Поэтому, мне захотелось создать свой велосипед, то есть, минималистичный, быстрый, удобный и нативный инструмент, который будет работать плавно и легко на Mac, без лишних зависимостей.
Во вложении архив с программой со всеми необходимыми вирусами (шутка, без них).
Что должно быть в приложении
- Поле для ввода API ключа (с возможностью сохранения)
- Кнопка "Тест соединения" для проверки доступности API
- Поле для текста запроса к GPT
- Поле с ответом, из которого можно легко скопировать результат
- Поле для вывода ошибок
- Переключатель моделей: GPT-3.5-turbo, GPT-4, GPT-4o
Как работает API OpenAI
Чтобы общаться с GPT, нужно использовать API OpenAI и пополнить баланс, конечно же:
- Запросы идут на
https://api.openai.com/v1/chat/completions
- В заголовках передаётся API ключ
- Тело запроса — JSON с моделью и сообщениями
- В ответ приходит JSON с текстом ответа
Пример тела запроса для GPT-4o:
{
"model": "gpt-4o",
"messages": [
{"role": "user", "content": "Привет, Олег!"}
]
}
Как получить API ключ и оплатить тариф
- Зарегистрируйтесь на https://platform.openai.com/.
- Создайте API ключ в разделе API Keys.
- Для доступа к GPT-4 и другим моделям нужно выбрать тариф и добавить платёжные данные.
- Тарифы (примерные):
- GPT-3.5-turbo: $0.0005 / 1K токенов
- GPT-4: $0.03 / 1K токенов (вывод)
- GPT-4o: $0.015 / 1K токенов (вывод)
Баланс и расход отображается в аккаунте OpenAI.
Технические детали реализации
- Я выбрал SwiftUI для интерфейса — он отлично подходит для macOS и позволяет быстро собрать минималистичный UI.
- Для запросов использую
URLSession
с JSON-кодированием. - Ключ хранится в
UserDefaults
с возможностью обновления. - Есть переключатель моделей — просто меняем параметр
"model"
в запросе. - Ответ и ошибки выводятся в отдельных текстовых полях.
- Возможность копировать ответ в буфер обмена.
И самое интересное:
Недостатки использования GPT через API
Хотя OpenAI API мощный и гибкий, у него есть серьёзные ограничения, особенно если вы привыкли к опыту работы с ChatGPT на сайте:
0. Нет встроенной истории и контекста
1. Каждый запрос — это полностью отдельный диалог. API не "помнит" ничего, если вы сами не передаёте это вручную.
2. Потеря связности диалога
Без сохранения истории запросов и ответов — невозможно построить настоящий диалог, где ИИ "помнит", о чём шла речь.
Это особенно разочаровывает при работе над текстами, рассказами или проектами, требующими последовательности.
Но я над этим работаю.
То есть, если вам нужен связный диалог, то лучше выбрать браузерную версию, а если много одиночных вопросов - добро пожаловать на борт!