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

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

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 (3.2%) to scientific vocabulary
Last synced: 11 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: ai-forever
  • Language: Java
  • Default Branch: main
  • Size: 283 KB
Statistics
  • Stars: 17
  • Watchers: 10
  • Forks: 2
  • Open Issues: 0
  • Releases: 10
Created over 1 year ago · Last pushed about 1 year ago
Metadata Files
Readme

README.md

GigaChat Java SDK

GigaChat — это Java-библиотека для работы с REST API GigaChat.

Библиотека управляет авторизацией запросов и предоставляет все необходимые методы для работы с API. Кроме этого она поддерживает:

[!TIP] Больше примеров работы с библиотекой — в папке gigachat-java-example.

Требования

Для работы библиотеки установите Java версии 17 или выше.

Установка

Чтобы установить библиотеку, подключите ее в зависимости.

Gradle

kotlin implementation("chat.giga:gigachat-java:0.1.10")

Maven

xml <dependency> <groupId>chat.giga</groupId> <artifactId>gigachat-java</artifactId> <version>0.1.10</version> </dependency>

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

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

Чтобы получить ключ авторизации:

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

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

Подробно о том, как создать проект GigaChat API — в официальной документации, в разделах Быстрый старт для физических лиц и Быстрый старт для ИП и юридических лиц.

Передайте полученный ключ авторизации в параметре authKey при инициализации объекта AuthClient.

Пример показывает как отправить простой запрос на генерацию с помощью библиотеки GigaChatClient:

```java //Укажите ключ авторизации, полученный в личном кабинете, в интерфейсе проекта GigaChat API public class CompletionExample {

public static void main(String[] args) {
    GigaChatClient client = GigaChatClient.builder()
            .verifySslCerts(false)
            .authClient(AuthClient.builder()
                    .withOAuth(OAuthBuilder.builder()
                            .scope(Scope.GIGACHAT_API_PERS)
                            .authKey("ваш_ключ_авторизации")
                            .build())
                    .build())
            .build();

    System.out.println(client.completions(CompletionRequest.builder()
            .model(ModelName.GIGA_CHAT_MAX)
            .message(ChatMessage.builder()
                    .content("Какие факторы влияют на стоимость страховки на дом?")
                    .role(Role.USER)
                    .build())
            .build()));
}

} ```

[!NOTE] Этот и другие примеры работы с библиотекой GigaChat — в папке gigachat-java-example.

Параметры объекта GigaChatClient

Для работы с GigaChat используется класс GigaChatClient, который предоставляет доступ ко всем необходимым методам работы с API.

Подробнее о методах и параметрах класса — в документации класса.

Способы аутентификации

Для аутентификации используется метод AuthClient.builder(), который вызывается при создании экземпляра GigaChatClient и возвращает экземпляр AuthClientBuilder

Методы AuthClientBuilder позволяют выполнить аутентификацию с помощью:

  • ключа авторизации;
  • токена доступа;
  • клиентского идентификатора (Client ID) и ключа (Client Secret);
  • TLS-сертификата;
  • имени пользователя и пароля.

Аутентификация с помощью ключа авторизации

При аутентификации с помощью ключа авторизации в методе scope() нужно передать версию API, к которой будут выполняться запросы.

Возможные значения:

  • GIGACHAT_API_PERS — версия API для физических лиц;
  • GIGACHAT_API_B2B — версия API для ИП и юрлиц при работе по предоплате.
  • GIGACHAT_API_CORP — версия API для ИП и юрлиц при работе по постоплате.

По умолчанию запросы передаются в версию для физических лиц.

java GigaChatClient client = GigaChatClient.builder() .authClient(AuthClient.builder() .withOAuth(OAuthBuilder.builder() // Версия API .scope(Scope.GIGACHAT_API_B2B) .authKey("ключ_авторизации") .build()) .build()) .build();

[!TIP] Подробно о том, как создать проект GigaChat API — в официальной документации, в разделах Быстрый старт для физических лиц и Быстрый старт для ИП и юридических лиц.

Аутентификация с помощью токена доступа

Токен доступа (access token) получается в обмен на ключ авторизации в запросе POST /api/v2/oauth.

Токен действует в течение 30 минут и содержит данные о версии API, к которой предоставляется доступ, поэтому ее не нужно указывать дополнительно.

java GigaChatClient client = GigaChatClient.builder() .authClient(AuthClient.builder() .withProvidedTokenAuth("токен_доступа").build()) .build();

Аутентификация с помощью клиентского идентификатора и ключа

Как и при использовании ключа авторизации, при аутентификации с помощью Client ID и Client Secret нужно указывать версию API, к которой будут выполняться запросы.

java GigaChatClient client = GigaChatClient.builder() .authClient(AuthClient.builder() .withOAuth(OAuthBuilder.builder() .scope(Scope.GIGACHAT_API_B2B) .clientId("test-client-id") .clientSecret("test-scope") .build()) .build()) .logRequests(true) .logResponses(true) .build();

Аутентификация с помощью имени пользователя и пароля

java GigaChatClient client = GigaChatClient.builder() .authClient(AuthClient.builder() .withUserPassword( UserPasswordAuthBuilder.builder() .user("user") .password("password") .authApiUrl("https://api.ru/v1") .scope(Scope.GIGACHAT_API_PERS) .build()).build() ) .build();

Аутентификация с помощью TLS-сертификата

java GigaChatClient client = GigaChatClient.builder() .authClient(AuthClient.builder() .withCertificatesAuth(new JdkHttpClientBuilder() .httpClientBuilder(HttpClient.newBuilder()) .ssl(SSL.builder() .truststorePassword("password") .trustStoreType("PKCS12") .truststorePath("/Users/test/ssl/client_truststore.p12") .keystorePassword("password") .keystoreType("PKCS12") .keystorePath("/Users/test/ssl/client_keystore.p12") .build()) .build()) .build()) .build();

Установка корневого сертификата НУЦ Минцифры

Чтобы библиотека GigaChat могла передавать запросы в GigaChat API, вам нужно установить корневой сертификат НУЦ Минцифры.

Для этого перейдите в папку JAVA_HOME/bin и выполните в консоли, запущенной от имени администратора, команду:

shell keytool -importcert -storepass changeit -noprompt -alias rus_root_ca -cacerts -trustcacerts -file /<путь_к_файлу_сертификата>/russian_trusted_root_ca_pem.crt

При необходимости вы можете отключить проверку сертификатов. Для этого, создайте экземпляр GigaChatClient, с параметром verifySslCerts(false):

java GigaChatClient client = GigaChatClient.builder() // Отключение проверки сертификатов .verifySslCerts(false) .authClient(AuthClient.builder() .withOAuth(OAuthBuilder.builder() .scope(Scope.GIGACHAT_API_PERS) .authKey("ключ_авторизации") .build()) .build()) .build();

[!WARNING] Отключение проверки сертификатов снижает безопасность обмена данными.

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: 10
  • Issues event: 4
  • Release event: 9
  • Watch event: 18
  • Delete event: 2
  • Issue comment event: 3
  • Member event: 6
  • Push event: 41
  • Pull request review event: 6
  • Pull request review comment event: 5
  • Pull request event: 5
  • Fork event: 4
Last Year
  • Create event: 10
  • Issues event: 4
  • Release event: 9
  • Watch event: 18
  • Delete event: 2
  • Issue comment event: 3
  • Member event: 6
  • Push event: 41
  • Pull request review event: 6
  • Pull request review comment event: 5
  • Pull request event: 5
  • Fork event: 4

Committers

Last synced: about 1 year ago

All Time
  • Total Commits: 79
  • Total Committers: 7
  • Avg Commits per committer: 11.286
  • Development Distribution Score (DDS): 0.57
Past Year
  • Commits: 79
  • Committers: 7
  • Avg Commits per committer: 11.286
  • Development Distribution Score (DDS): 0.57
Top Committers
Name Email Commits
Бочарова Дарья Михайловна D****a@s****u 34
Сафонов Сергей S****v@s****u 17
Sergey Safonov s****v@s****u 15
Обручнев Игорь Юрьевич i****v@s****u 10
Lytkini i****8@g****m 1
Andrey Kozlov n****8@g****m 1
Обручнев Игорь Юрьевич I****v@s****u 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 11 months ago

All Time
  • Total issues: 4
  • Total pull requests: 6
  • Average time to close issues: 13 days
  • Average time to close pull requests: about 14 hours
  • Total issue authors: 2
  • Total pull request authors: 2
  • Average comments per issue: 0.5
  • Average comments per pull request: 0.67
  • Merged pull requests: 4
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 4
  • Pull requests: 6
  • Average time to close issues: 13 days
  • Average time to close pull requests: about 14 hours
  • Issue authors: 2
  • Pull request authors: 2
  • Average comments per issue: 0.5
  • Average comments per pull request: 0.67
  • Merged pull requests: 4
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • isergeymd (3)
  • pr1st (1)
Pull Request Authors
  • Lytkini (4)
  • kozlov-aa (2)
Top Labels
Issue Labels
Pull Request Labels

Dependencies

build.gradle.kts maven
gigachat-http-client/build.gradle.kts maven
  • org.assertj:assertj-core 3.27.3 testImplementation
  • org.junit.jupiter:junit-jupiter * testImplementation
  • org.mockito:mockito-junit-jupiter 5.15.2 testImplementation
gigachat-http-client-jdk/build.gradle.kts maven
  • org.slf4j:slf4j-api 2.0.16 implementation
  • commons-io:commons-io 2.18.0 testImplementation
  • org.assertj:assertj-core 3.27.3 testImplementation
  • org.junit.jupiter:junit-jupiter * testImplementation
  • org.mockito:mockito-junit-jupiter 5.15.2 testImplementation
gigachat-java/build.gradle.kts maven
  • com.fasterxml.jackson.core:jackson-databind 2.18.2 implementation
  • commons-io:commons-io 2.18.0 testImplementation
  • org.assertj:assertj-core 3.27.3 testImplementation
  • org.junit.jupiter:junit-jupiter * testImplementation
  • org.mockito:mockito-junit-jupiter 5.15.2 testImplementation
gigachat-java-example/build.gradle.kts maven
  • ch.qos.logback:logback-classic 1.5.8 implementation
  • org.junit.jupiter:junit-jupiter * testImplementation
.github/workflows/publish.yml actions
  • actions/checkout v2 composite
  • actions/setup-java v1 composite
buildSrc/build.gradle.kts maven
  • com.diffplug.spotless:spotless-plugin-gradle 7.0.2 implementation
  • com.vanniktech:gradle-maven-publish-plugin 0.28.0 implementation