gigachat-go
Описание
GigaChat Go/Golang SDK — современная библиотека для интеграции с российской AI-платформой GigaChat. Поддерживает генерацию текста, потоковую передачу, создание изображений и управление диалогами. Идеально для чат-ботов, контент-генерации и AI-ассистентов с нативной поддержкой русского языка.
Языки
- Go100%
🤖 GigaChat Go SDK - Интеграция с российской AI-платформой

GigaChat Go SDK — это современная библиотека на языке Go для бесшовной интеграции с российской AI-платформой GigaChat от Сбера. SDK предоставляет разработчикам мощные инструменты для создания интеллектуальных приложений с поддержкой русского языка, потоковой передачи данных и генерации изображений.
🌐 Язык: Русский | English
🔗 GitHub Repository: https://github.com/tigusigalpa/gigachat-go
📦 Пакет: pkg.go.dev/github.com/tigusigalpa/gigachat-go
🎯 Обзор проекта
GigaChat Go SDK представляет собой профессиональное решение для интеграции передовой российской нейросети GigaChat в экосистему Go. Библиотека открывает доступ к передовым возможностям искусственного интеллекта для разработки современных приложений: от интеллектуальных чат-ботов до систем автоматической генерации контента.
Ключевые преимущества
- 🇷🇺 Отечественная разработка: Полная поддержка российской AI-платформы для импортозамещения
- ⚡ Оптимизированная производительность: Эффективная обработка больших объемов данных и потоковая передача
- 🔒 Продвинутая безопасность: Автоматическое управление токенами с потокобезопасным кешированием
- 🏭 Готовность к production: Надежная обработка ошибок, строгая типобезопасность и полное тестирование
- 🎯 Интуитивный интерфейс: Простой API с использованием паттерна функциональных опций
- 📚 Детальная документация: Комплексные примеры и руководство по всем сценариям использования
Применение в реальных проектах
🤖 Разработка интеллектуальных ассистентов
Создавайте продвинутых чат-ботов для мессенджеров, веб-платформ и корпоративных систем. SDK обеспечивает управление контекстом диалога, позволяя AI-ассистентам сохранять историю общения и предоставлять персонализированные ответы.
✍️ Автоматизация создания контента
Используйте возможности GigaChat для генерации уникального контента: маркетинговых материалов, технической документации, постов для социальных сетей, email-рассылок. Идеально подходит для контент-маркетинга и автоматизации рутинных задач.
🎨 AI-генерация визуального контента
Создавайте уникальные изображения по текстовым описаниям для дизайна, маркетинговых кампаний, иллюстраций. SDK поддерживает стилизацию в различных художественных направлениях и позволяет генерировать контент в заданном стиле.
� Аналитика и обработка данных
Применяйте AI для анализа документов, извлечения ключевой информации, суммирования больших объемов текста. Оптимизируйте обработку отзывов клиентов, анализ конкурентов, подготовку аналитических отчетов.
🔍 Интеллектуальный поиск
Реализуйте системы семантического поиска с использованием векторных представлений текста. Находите релевантные документы даже при различных формулировках запроса.
🎓 Образовательные технологии
Разрабатывайте интерактивные обучающие платформы, персонализированные системы репетиторства, AI-помощники для проверки знаний и адаптивного обучения.
Сравнение с альтернативными решениями
| Характеристика | GigaChat Go SDK | Конкуренты |
|---|---|---|
| Поддержка русского языка | ✅ Нативная поддержка | ⚠️ Ограниченная |
| Потоковая передача | ✅ Полная реализация | ⚠️ Частичная |
| Генерация изображений | ✅ Встроенная функция | ❌ Требует отдельных API |
| Управление токенами | ✅ Автоматическое | ⚠️ Ручное управление |
| Типобезопасность | ✅ Строгая типизация | ⚠️ Минимальная |
| Документация | ✅ На русском языке | ⚠️ Только английский |
| Примеры кода | ✅ Все функции покрыты | ⚠️ Базовые примеры |
🚀 Функциональные возможности
- 🔌 Бесшовная интеграция с GigaChat API через простой интерфейс
- 🔐 Интеллектуальное управление OAuth и токенами с потокобезопасным кешированием
- 🎯 Полная поддержка всех моделей (GigaChat-2, GigaChat-2-Pro, GigaChat-2-Max)
- 📝 Управление диалогами с сохранением контекста и истории
- ⚡ Потоковая передача данных для ответов в реальном времени
- 🎨 Встроенная генерация изображений через функцию text2image
- 🖼️ Автоматическая обработка изображений с скачиванием и кодированием в base64
- 🎭 Продвинутая стилизация изображений через системные промпты
- 🔧 Гибкая конфигурация с паттерном функциональных опций
- 🧪 Полный набор примеров для всех доступных функций
- 📚 Комплексная документация с примерами кода
- 🛡️ Строгая типобезопасность с корректной обработкой ошибок
📦 Быстрый старт
Установка библиотеки
Первоначальная настройка
1. Получение учетных данных
Для начала работы с GigaChat API необходимо получить авторизационные данные:
- Перейдите в личный кабинет Sber AI
- Создайте новый проект и скопируйте Client ID и Client Secret
- Сгенерируйте Authorization Key (Base64 кодировка от "Client ID:Client Secret")
💡 Подробное руководство: Создание проекта и получение ключей доступа
2. Конфигурация окружения
Установите необходимые переменные окружения:
� Практические примеры
Минимальный пример
### Работа с диалогами и контекстом
```go
// Создание диалога с системным промптом
conversation := gigachat.Conversation(
"Ты - профессиональный помощник по программированию на Go",
"Как создать эффективное REST API с использованием Gin framework?",
)
response, err := client.Chat(conversation)
if err != nil {
log.Fatal(err)
}
fmt.Println("Ассистент:", gigachat.ExtractContent(response))
// Продолжение диалога с сохранением контекста
conversation = append(conversation, gigachat.Message{
Role: "assistant",
Content: response.Choices[0].Message.Content,
})
conversation = gigachat.ContinueChat(conversation, "А как добавить middleware для JWT-аутентификации?")
response, err = client.Chat(conversation)
if err != nil {
log.Fatal(err)
}
fmt.Println("Ассистент:", gigachat.ExtractContent(response))
### Потоковая передача данных в реальном времени
```go
messages := []gigachat.Message{
{Role: "user", Content: "Напиши подробную историю о покорении Марса"},
}
fmt.Println("Генерация ответа в реальном времени:")
err := client.ChatStream(messages, func(event *gigachat.ChatResponse, done bool, err error) {
if err != nil {
log.Printf("Ошибка потока: %v", err)
return
}
if done {
fmt.Println("\n✅ Генерация завершена!")
return
}
if len(event.Choices) > 0 && event.Choices[0].Delta.Content != "" {
fmt.Print(event.Choices[0].Delta.Content)
}
})
if err != nil {
log.Fatal(err)
}
### Расширенная конфигурация и опции
```go
// Настройка менеджера токенов с дополнительными параметрами
tokenManager := gigachat.NewTokenManager(
authKey,
gigachat.WithScope("GIGACHAT_API_PERS"),
gigachat.WithInsecureSkipVerify(false), // Отключить проверку SSL для разработки
)
// Конфигурация клиента с кастомными настройками
client := gigachat.NewClient(
tokenManager,
gigachat.WithDefaultModel(gigachat.GigaChat2Pro),
gigachat.WithBaseURI("https://gigachat.devices.sberbank.ru"),
)
// Отправка сообщения с расширенными параметрами
messages := []gigachat.Message{
{Role: "system", Content: "Ты - эксперт по искусственному интеллекту"},
{Role: "user", Content: "Объясни концепцию нейронных сетей простыми словами"},
}
response, err := client.Chat(
messages,
gigachat.WithModel(gigachat.GigaChat2Pro),
gigachat.WithTemperature(0.7), // Креативность ответа
gigachat.WithMaxTokens(800), // Максимальная длина ответа
gigachat.WithTopP(0.9), // Параметр выборки
)
if err != nil {
log.Fatal(err)
}
fmt.Println("Ответ:", response.Choices[0].Message.Content)
fmt.Printf("Использовано токенов: %d\n", response.Usage.TotalTokens)
🤖 Доступные модели
GigaChat поддерживает несколько моделей для различных задач. Актуальный список моделей доступен в официальной документации.
Модели для генерации текста
| Модель | Описание | Использование |
|---|---|---|
| GigaChat-2 | Базовая модель второго поколения | Общие задачи, диалоги |
| GigaChat-2-Pro | Продвинутая модель с улучшенными возможностями | Сложные задачи, креативное письмо |
| GigaChat-2-Max | Максимальная модель для самых сложных задач | Профессиональные задачи, анализ |
Модели для эмбеддингов
| Модель | Описание | Использование |
|---|---|---|
| Embeddings | Базовая модель для векторного представления | Поиск по смыслу, кластеризация |
| EmbeddingsGigaR | Улучшенная модель для создания эмбеддингов | Точный поиск, семантический анализ |
Использование констант моделей
🔧 Параметры генерации
Доступные параметры для настройки генерации:
🎨 Генерация изображений
GigaChat поддерживает генерацию изображений с помощью встроенной функции text2image. Для создания изображений
используйте глагол "нарисуй" в промпте и параметр .
Базовое использование
Генерация с системным промптом (стилизация)
Раздельная генерация и скачивание
Доступные методы для работы с изображениями
| Метод | Описание | Возвращает |
|---|---|---|
| Генерирует изображение и возвращает ответ API | |
| Скачивает изображение по ID | (base64) |
| Генерирует и скачивает изображение в одном вызове | |
Опции генерации изображений
Обработка ошибок при генерации изображений
Примеры промптов для генерации
Важно: Для генерации изображений промпт должен содержать глагол "нарисуй" или аналогичные команды рисования. API автоматически определяет необходимость вызова функции text2image при наличии параметра
.function_call: auto
⚠️ Обработка ошибок
SDK предоставляет специализированные типы ошибок для различных сценариев:
📖 **Подробнее об ошибках **: Официальная документация GigaChat API
📚 Примеры
Репозиторий включает полные примеры:
- Базовое использование - Простой чат и список моделей
- Streaming - Потоковые ответы в реальном времени
- Генерация изображений - Генерация и сохранение изображений
- Диалоги - Многоходовые диалоги
- Продвинутое - Продвинутая настройка и опции
Запуск примеров:
🔧 Опции конфигурации
Опции менеджера токенов
Опции клиента
🧪 Тестирование
📖 Документация
- Официальная документация GigaChat API
- Модели GigaChat
- Справочник API
- Коды ошибок
- Руководство по быстрому старту
🏗️ Архитектура SDK
Основные компоненты
TokenManager
Управляет OAuth-аутентификацией и жизненным циклом токенов:
- Автоматическое получение access token через OAuth 2.0
- Потокобезопасное кеширование токенов
- Автоматическое обновление при истечении срока действия
- Поддержка custom HTTP клиентов для прокси и специальных настроек
Client
Основной интерфейс для взаимодействия с GigaChat API:
- Методы для чата, streaming, генерации изображений
- Управление моделями и параметрами генерации
- Встроенная обработка ошибок с типизированными исключениями
- Поддержка функциональных опций для гибкой настройки
Models
Типобезопасные структуры данных:
- Константы для всех доступных моделей
- Валидация параметров запросов
- Структуры для ответов API
- Хелперы для работы с сообщениями и диалогами
Поток данных
Приложение → Client → TokenManager → OAuth Server
↓
GigaChat API
↓
Response → Client → Приложение
💡 Лучшие практики
Управление контекстом диалогов
Обработка rate limits
Оптимизация использования токенов
Безопасное хранение credentials
Graceful shutdown для streaming
🔍 Устранение неполадок
Проблема: Ошибка аутентификации
Симптомы:
Authentication error: Can't decode 'Authorization' header
Решение:
- Проверьте корректность формата Authorization Key (должен быть Base64)
- Убедитесь, что используете правильный Client ID и Client Secret
- Проверьте, что ключи не содержат лишних пробелов или символов
Проблема: SSL/TLS ошибки
Симптомы:
x509: certificate signed by unknown authority
Решение:
Проблема: Превышен лимит токенов
Симптомы:
HTTP 402: Payment Required
Решение:
- Проверьте баланс токенов в личном кабинете
- Оптимизируйте промпты для уменьшения расхода
- Используйте параметр
для ограничения ответовmax_tokens - Рассмотрите переход на более высокий тарифный план
Проблема: Медленные ответы
Решение:
- Используйте streaming для больших ответов
- Выберите подходящую модель (GigaChat-2 быстрее, чем GigaChat-2-Max)
- Сократите размер промпта и истории диалога
- Проверьте сетевое соединение
❓ Часто задаваемые вопросы (FAQ)
Какая модель лучше для моей задачи?
- GigaChat-2: Подходит для простых диалогов, FAQ-ботов, базовой генерации текста
- GigaChat-2-Pro: Оптимален для сложных задач, креативного письма, анализа текстов
- GigaChat-2-Max: Используйте для профессиональных задач, требующих максимальной точности
Можно ли использовать SDK в production?
Да, SDK разработан с учетом production-требований:
- Полная обработка ошибок
- Потокобезопасность
- Автоматическое управление токенами
- Comprehensive тестирование
Как ограничить расход токенов?
Поддерживается ли работа через прокси?
Да, используйте custom HTTP client:
Как обрабатывать большие файлы?
Разбивайте файлы на чанки и обрабатывайте последовательно:
Можно ли использовать несколько моделей одновременно?
Да, создайте несколько клиентов или используйте опции:
🚀 Производительность и масштабирование
Параллельная обработка запросов
Пул соединений
🔐 Безопасность
Рекомендации по безопасности
-
Никогда не коммитьте credentials в Git
-
Используйте переменные окружения
-
Ротация ключей Регулярно обновляйте Client ID и Client Secret в личном кабинете
-
Валидация пользовательского ввода
-
Rate limiting на стороне приложения
🤝 Вклад в проект
Вклад приветствуется! Пожалуйста, не стесняйтесь отправлять Pull Request.
- Сделайте Fork репозитория
- Создайте ветку для новой функции (
)git checkout -b feature/amazing-feature - Зафиксируйте изменения (
)git commit -m 'Add some amazing feature' - Отправьте в ветку (
)git push origin feature/amazing-feature - Откройте Pull Request
Гайдлайны для контрибьюторов
- Следуйте стилю кода проекта (используйте
)gofmt - Добавляйте тесты для новой функциональности
- Обновляйте документацию при изменении API
- Пишите понятные commit messages
- Проверяйте, что все тесты проходят перед PR
📝 Лицензия
Этот проект лицензирован под лицензией MIT - см. файл LICENSE для деталей.
👤 Автор
Igor Sazonov
- GitVerse: @tigusigalpa
- Email: sovletig@gmail.com
🙏 Благодарности
- Sber GigaChat за потрясающий AI API
- Сообществу Go за отличные инструменты и библиотеки
📊 Статус проекта
Проект активно поддерживается. Если вы столкнулись с проблемами или у вас есть предложения, пожалуйста, откройте issue.