https://github.com/ai-forever/spring-ai-gigachat

https://github.com/ai-forever/spring-ai-gigachat

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (2.9%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: ai-forever
  • Language: Java
  • Default Branch: main
  • Size: 2.04 MB
Statistics
  • Stars: 27
  • Watchers: 6
  • Forks: 11
  • Open Issues: 4
  • Releases: 4
Created over 1 year ago · Last pushed 10 months ago
Metadata Files
Readme

README.md

spring-ai-gigachat

Данная библиотека позволяет интегрироваться с GigaChat API с использованием фреймворка Spring AI.

Реализованы: * Вызов Chat модели, включая: * * потоковую обработку (streaming) * * вызов внешних функций, в том числе доп.возможности GigaChat (fewShotExample/returnParameters и т.д.) - подробнее в tools.md * работу с файлами и изображениями * Вызов Embedding модели * Observability

Требования

  • Java 17+
  • Spring Boot 3.4/3.5

Быстрый старт

Для работы с библиотекой вам понадобится ключ авторизации API.

Чтобы получить ключ авторизации: 1. Создайте проект GigaChat API в личном кабинете Studio. 2. В интерфейсе проекта, в левой панели выберите раздел Настройки API. 3. Нажмите кнопку Получить ключ.

В открывшемся окне скопируйте и сохраните значение поля Client Secret. Этот ключ отображается только один раз и не хранится в личном кабинете. При компрометации или утере ключа авторизации вы можете сгенерировать его повторно.

1) Подключите в ваш pom.xml зависимость

xml <dependency> <groupId>chat.giga</groupId> <artifactId>spring-ai-starter-model-gigachat</artifactId> <version>1.0.3</version> </dependency>

2) Пропишите параметры подключения к GigaChat в application.yml:

yaml spring: ai: gigachat: auth: bearer: api-key: ${GIGACHAT_API_KEY} # Ваш Authorization Key, полученный в личном кабинете GigaChat scope: GIGACHAT_API_PERS # доступны также GIGACHAT_API_B2B, GIGACHAT_API_CORP unsafe-ssl: true # отключает проверку серверных сертификатов, не рекомендуется использовать в production!

3) Создайте Main-класс:

```java @SpringBootApplication public class Main { public static void main(String[] args) { SpringApplication.run(Main.class, args); }

@Bean
public CommandLineRunner runner(ChatClient.Builder builder) {
    return args -> {
        ChatClient chatClient = builder.build();
        String response = chatClient.prompt("Расскажи шутку").call().content();
        System.out.println(response);
    };
}

} ```

Конфигурация

В application.yml можно задать дефолтные параметры для запроса к API GigaChat, а также параметры для подключения и авторизации.

Описание параметров можно найти в официальной документации.

yaml spring: ai: gigachat: chat: options: # дефолтные параметры для обращения к API GigaChat. model: GigaChat # GigaChat по дефолту, список доступных моделей - https://developers.sber.ru/docs/ru/gigachat/models temperature: 0.5 # null по дефолту top-p: 0.5 # null по дефолту max-tokens: 200 # null по дефолту repetition-penalty: 1 # null по дефолту update-interval: 0 # null по дефолту embedding: options: model: Embeddings # Embeddings по дефолту dimensions: 1024 # null по дефолту, вычисляется при первом обращении к Embedding-модели

Способы авторизации

По Authorization Key (apiKey)

Пример application.yml для авторизации по Authorization Key:

yaml spring: ai: gigachat: auth: bearer: api-key: <ваш_authorization_key> # Ваш Authorization Key, можно посмотреть в личном кабинете GigaChat в разделе "Настройки API" в вашем проекте scope: GIGACHAT_API_PERS # Можно посмотреть в личном кабинете GigaChat в разделе "Настройки API" в вашем проекте

Также необходимо настроить доверие сертифкатам НУЦ Минцифры или отключить проверку серверных сертификатов (не рекомендуется!).

По Client ID + Client Secret

Пример application.yml для авторизации по Client ID и Client Secret:

yaml spring: ai: gigachat: auth: bearer: client-id: <ваш_client_id> # Можно посмотреть в личном кабинете GigaChat в разделе "Настройки API" в вашем проекте client-secret: <ваш_client_secret> # Можно посмотреть в личном кабинете GigaChat в разделе "Настройки API" в вашем проекте scope: GIGACHAT_API_PERS

Также необходимо настроить доверие сертифкатам НУЦ Минцифры или отключить проверку серверных сертификатов (не рекомендуется!).

С помощью TLS-сертификатов

Пример application.yml для подключения к GigaChat с помощью TLS-сертификатов:

yaml spring: ai: gigachat: auth: certs: certificate: file:/path/to/tls.crt # Путь до вашего сертификата. Если у вас терминация TLS настроена на Egress-gateway, то можно пропустить этот параметр private-key: file:/path/to/tls.key # Путь до вашего сертификата. Если у вас терминация TLS настроена на Egress-gateway, то можно пропустить этот параметр ca-certs: file:/path/to/ca.crt # Путь до ваших доверенных сертификатов. Если у вас терминация TLS настроена на Egress-gateway, то можно пропустить этот параметр scope: GIGACHAT_API_PERS

Пример application.yml для подключения к GigaChat с помощью TLS-сертификатов, объявленных через Spring Boot SSL Bundles:

yaml spring: ai: gigachat: auth: certs: ssl-bundle: "gigachat-ssl-bundle" # Название вашего ssl-bundle scope: GIGACHAT_API_PERS ssl: bundle: gigachat-ssl-bundle: keystore: private-key: file:/path/to/tls.key # Путь до вашего сертификата certificate: file:/path/to/tls.crt # Путь до вашего сертификата truststore: certificates: file:/path/to/ca.crt # Путь до ваших доверенных сертификатов

Настройка доверия сертификатам НУЦ Минцифры

Для настройки доверия сертификатам НУЦ Минцифры, необходимо: 1) Скачать сертификат https://gu-st.ru/content/Other/doc/russiantrustedroot_ca.cer 2) Указать путь до сертификата application.yml:

yaml spring: ai: gigachat: auth: certs: ca-certs: file:/path/to/russian_trusted_root_ca.cer

Примеры

Примеры работы с библиотекой - в отдельном модуле spring-ai-gigachat-example.

Owner

  • Name: AI Forever
  • Login: ai-forever
  • Kind: organization
  • Location: Armenia

Creating ML for the future. AI projects you already know. We are non-profit organization with members from all over the world.

GitHub Events

Total
  • Create event: 11
  • Release event: 1
  • Issues event: 21
  • Watch event: 24
  • Issue comment event: 22
  • Push event: 26
  • Pull request review event: 18
  • Pull request review comment event: 9
  • Pull request event: 20
  • Fork event: 7
Last Year
  • Create event: 11
  • Release event: 1
  • Issues event: 21
  • Watch event: 24
  • Issue comment event: 22
  • Push event: 26
  • Pull request review event: 18
  • Pull request review comment event: 9
  • Pull request event: 20
  • Fork event: 7

Committers

Last synced: about 1 year ago

All Time
  • Total Commits: 15
  • Total Committers: 4
  • Avg Commits per committer: 3.75
  • Development Distribution Score (DDS): 0.267
Past Year
  • Commits: 15
  • Committers: 4
  • Avg Commits per committer: 3.75
  • Development Distribution Score (DDS): 0.267
Top Committers
Name Email Commits
Linar Abzaltdinov a****v@g****m 11
a-simeshin 8****n 2
d.sviridov d****a@y****u 1
Sergey Basharkin r****l@b****u 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 17
  • Total pull requests: 24
  • Average time to close issues: 16 days
  • Average time to close pull requests: 1 day
  • Total issue authors: 5
  • Total pull request authors: 6
  • Average comments per issue: 0.53
  • Average comments per pull request: 0.29
  • Merged pull requests: 18
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 17
  • Pull requests: 24
  • Average time to close issues: 16 days
  • Average time to close pull requests: 1 day
  • Issue authors: 5
  • Pull request authors: 6
  • Average comments per issue: 0.53
  • Average comments per pull request: 0.29
  • Merged pull requests: 18
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • linarkou (6)
  • a-simeshin (6)
  • OlegNyr (3)
  • dmitry-sviridov (1)
  • yvi1 (1)
Pull Request Authors
  • linarkou (16)
  • a-simeshin (3)
  • SergeyBasharkin (2)
  • dmitry-sviridov (1)
  • Hakky54 (1)
  • callmesensey (1)
Top Labels
Issue Labels
enhancement (5) bug (2) question (1)
Pull Request Labels
enhancement (2)

Packages

  • Total packages: 4
  • Total downloads: unknown
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 16
repo1.maven.org: chat.giga:spring-ai-gigachat

GigaChat models support

  • Versions: 4
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 34.6%
Stargazers count: 47.1%
Average: 47.6%
Dependent packages count: 49.5%
Forks count: 59.2%
Last synced: 10 months ago
repo1.maven.org: chat.giga:spring-ai-gigachat-parent

GigaChat models support parent

  • Versions: 4
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 34.6%
Stargazers count: 47.1%
Average: 47.6%
Dependent packages count: 49.5%
Forks count: 59.2%
Last synced: 10 months ago
repo1.maven.org: chat.giga:spring-ai-starter-model-gigachat

GigaChat models support Spring Boot Starter

  • Versions: 4
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 34.6%
Stargazers count: 47.1%
Average: 47.6%
Dependent packages count: 49.5%
Forks count: 59.2%
Last synced: 10 months ago
repo1.maven.org: chat.giga:spring-ai-autoconfigure-model-gigachat

GigaChat models support autoconfiguration

  • Versions: 4
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 34.6%
Stargazers count: 47.1%
Average: 47.6%
Dependent packages count: 49.5%
Forks count: 59.2%
Last synced: 10 months ago

Dependencies

pom.xml maven
spring-ai-gigachat/pom.xml maven
  • org.projectlombok:lombok provided
  • io.github.hakky54:sslcontext-kickstart-for-pem
  • org.springframework.ai:spring-ai-core
  • org.springframework.ai:spring-ai-retry
  • org.springframework:spring-web
  • org.springframework:spring-webflux
spring-ai-gigachat-example/pom.xml maven
  • ai.forever.gigachat:spring-ai-gigachat-spring-boot-starter 1.0.0-M5-SNAPSHOT
  • org.projectlombok:lombok
  • org.springframework.boot:spring-boot-starter-actuator
  • org.springframework.boot:spring-boot-starter-web
  • org.springframework.boot:spring-boot-starter-webflux
.github/workflows/maven-build.yml actions
  • actions/checkout v4 composite
  • actions/setup-java v3 composite
.github/workflows/maven-integration-tests.yml actions
  • actions/checkout v4 composite
  • actions/setup-java v3 composite
.github/workflows/publish-release.yml actions
  • actions/checkout v4 composite
  • actions/setup-java v4 composite
spring-ai-autoconfigure-model-gigachat/pom.xml maven
  • org.projectlombok:lombok provided
  • chat.giga:spring-ai-gigachat
  • org.springframework.ai:spring-ai-autoconfigure-model-chat-observation
  • org.springframework.ai:spring-ai-autoconfigure-model-embedding-observation
  • org.springframework.ai:spring-ai-autoconfigure-model-tool
  • org.springframework.ai:spring-ai-autoconfigure-retry
  • org.springframework.boot:spring-boot-configuration-processor
  • org.springframework.boot:spring-boot-starter
  • org.springframework.boot:spring-boot-starter-web test
spring-ai-starter-model-gigachat/pom.xml maven
  • chat.giga:spring-ai-autoconfigure-model-gigachat
  • chat.giga:spring-ai-gigachat
  • org.springframework.ai:spring-ai-autoconfigure-model-chat-client
  • org.springframework.ai:spring-ai-autoconfigure-model-chat-memory
  • org.springframework.boot:spring-boot-starter