gigachat-go

0

Описание

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

Языки

  • Go100%
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
README.md

🤖 GigaChat Go SDK - Интеграция с российской AI-платформой

GigaChat Golang SDK

Go Version License Go Report Card

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 необходимо получить авторизационные данные:

  1. Перейдите в личный кабинет Sber AI
  2. Создайте новый проект и скопируйте Client ID и Client Secret
  3. Сгенерируйте 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. Для создания изображений используйте глагол "нарисуй" в промпте и параметр

function_call: auto
.

Базовое использование

Генерация с системным промптом (стилизация)

Раздельная генерация и скачивание

Доступные методы для работы с изображениями

МетодОписаниеВозвращает
GenerateImage(prompt, options...)
Генерирует изображение и возвращает ответ API
*ChatResponse
DownloadImage(fileID)
Скачивает изображение по ID
string
(base64)
CreateImage(prompt, options...)
Генерирует и скачивает изображение в одном вызове
*ImageResult

Опции генерации изображений

Обработка ошибок при генерации изображений

Примеры промптов для генерации

Важно: Для генерации изображений промпт должен содержать глагол "нарисуй" или аналогичные команды рисования. API автоматически определяет необходимость вызова функции text2image при наличии параметра

function_call: auto
.

⚠️ Обработка ошибок

SDK предоставляет специализированные типы ошибок для различных сценариев:

📖 **Подробнее об ошибках **: Официальная документация 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

Решение:

  1. Проверьте корректность формата Authorization Key (должен быть Base64)
  2. Убедитесь, что используете правильный Client ID и Client Secret
  3. Проверьте, что ключи не содержат лишних пробелов или символов

Проблема: SSL/TLS ошибки

Симптомы:

x509: certificate signed by unknown authority

Решение:

Проблема: Превышен лимит токенов

Симптомы:

HTTP 402: Payment Required

Решение:

  1. Проверьте баланс токенов в личном кабинете
  2. Оптимизируйте промпты для уменьшения расхода
  3. Используйте параметр
    max_tokens
    для ограничения ответов
  4. Рассмотрите переход на более высокий тарифный план

Проблема: Медленные ответы

Решение:

  1. Используйте streaming для больших ответов
  2. Выберите подходящую модель (GigaChat-2 быстрее, чем GigaChat-2-Max)
  3. Сократите размер промпта и истории диалога
  4. Проверьте сетевое соединение

❓ Часто задаваемые вопросы (FAQ)

Какая модель лучше для моей задачи?

  • GigaChat-2: Подходит для простых диалогов, FAQ-ботов, базовой генерации текста
  • GigaChat-2-Pro: Оптимален для сложных задач, креативного письма, анализа текстов
  • GigaChat-2-Max: Используйте для профессиональных задач, требующих максимальной точности

Можно ли использовать SDK в production?

Да, SDK разработан с учетом production-требований:

  • Полная обработка ошибок
  • Потокобезопасность
  • Автоматическое управление токенами
  • Comprehensive тестирование

Как ограничить расход токенов?

Поддерживается ли работа через прокси?

Да, используйте custom HTTP client:

Как обрабатывать большие файлы?

Разбивайте файлы на чанки и обрабатывайте последовательно:

Можно ли использовать несколько моделей одновременно?

Да, создайте несколько клиентов или используйте опции:

🚀 Производительность и масштабирование

Параллельная обработка запросов

Пул соединений

🔐 Безопасность

Рекомендации по безопасности

  1. Никогда не коммитьте credentials в Git

  2. Используйте переменные окружения

  3. Ротация ключей Регулярно обновляйте Client ID и Client Secret в личном кабинете

  4. Валидация пользовательского ввода

  5. Rate limiting на стороне приложения

🤝 Вклад в проект

Вклад приветствуется! Пожалуйста, не стесняйтесь отправлять Pull Request.

  1. Сделайте Fork репозитория
  2. Создайте ветку для новой функции (
    git checkout -b feature/amazing-feature
    )
  3. Зафиксируйте изменения (
    git commit -m 'Add some amazing feature'
    )
  4. Отправьте в ветку (
    git push origin feature/amazing-feature
    )
  5. Откройте Pull Request

Гайдлайны для контрибьюторов

  • Следуйте стилю кода проекта (используйте
    gofmt
    )
  • Добавляйте тесты для новой функциональности
  • Обновляйте документацию при изменении API
  • Пишите понятные commit messages
  • Проверяйте, что все тесты проходят перед PR

📝 Лицензия

Этот проект лицензирован под лицензией MIT - см. файл LICENSE для деталей.

👤 Автор

Igor Sazonov

🙏 Благодарности

  • Sber GigaChat за потрясающий AI API
  • Сообществу Go за отличные инструменты и библиотеки

📊 Статус проекта

Проект активно поддерживается. Если вы столкнулись с проблемами или у вас есть предложения, пожалуйста, откройте issue.