yandex_gpt_rest_api 1.0.2 copy "yandex_gpt_rest_api: ^1.0.2" to clipboard
yandex_gpt_rest_api: ^1.0.2 copied to clipboard

A library for using YandexGPT API, such as generating text and obtain embeddings.

YandexGPT API Client #

Test CI codecov

Dart library for working with YandexGPT API.

Getting started #

Create YandexGptApi instance.


// For passing BaseOptions or Dio use other constructors.
final api = YandexGptApi(
  token: AuthToken.api("your_token"), // or AuthToken.iam
  // Not necessary, by default uses catalog from AuthToken account.
  catalog: "catalog_id?",
);

Now you can use the YandexGPT API.

API calls #

The names of methods YandexGptApi are same to the names of API methods.

Available API calls:

Text Generation

When generating large text with configured small dio.options.receiveTimeout a timeout error may occur.

Generate sync text #

final response = await api.generateText(
  TextGenerationRequest(
    model: GModel.yandexGpt('folder_id'),
    messages: const [
      Message.system("Some joke"),
      Message.user("Generate joke"),
    ],
  ),
);
print(response.alternatives.first.message);
print(response.usage.totalTokens);

Generate async text #

The generateAsyncText returns the Operation object.

For handling Operation you can use getOperationTextGenerate.

final response = await api.generateAsyncText(
  TextGenerationRequest(
    model: GModel.yandexGpt('folder_id'),
    messages: const [
      Message.system("Some joke"),
      Message.user("Generate joke"),
    ],
  ),
);
print(response.done);

Fetch async generation status #

final asyncText = await api.generateAsyncText(/*request*/);
final response = await api.getOperationTextGenerate(asyncText.id);
print(response.done);
Tokenize

Tokenize completion #

final response = await api.tokenizeCompletion(
  TextGenerationRequest(
    model: GModel.yandexGpt('folder_id'),
    messages: const [
      Message.system("Some joke"),
      Message.user("Generate joke"),
    ],
  ),
);
print(response.tokens.length);

Tokenize text #

final response = await api.tokenizeText(
  TokenizeTextRequest(
    model: GModel.yandexGpt('folder_id'),
    text: 'some_response_text',
  ),
);
print(response.tokens.length);
Embeddings

Text embedding #

final response = await api.getTextEmbedding(
  EmbeddingRequest(
    model: VModel.documentation('folder_id'),
    text: 'Some text',
  ),
);
print(response.embedding);

Handling errors #

It is enough to catch an error of type ApiError.

try {
  await api.generateText(/*request*/);
} on ApiError catch (e) {
  // Handle YandexGPT API errors
} on DioException catch (e) {
  // Handle network errors
}

If you need information about the error:

try {
  await api.generateText(/*request*/);
} on DetailedApiError catch (e) {
  // Handle DetailedApiError
} on ShortApiError catch (e) {
  // Handle ShortApiError
} on DioException catch (e) {
  // Handle network errors
}

Cancel requests #

To cancel requests use Dio CancelToken by passing API requests with cancelToken param.

The handling cancellation is similar to the example from the Dio doc.

3
likes
140
pub points
47%
popularity

Publisher

unverified uploader

A library for using YandexGPT API, such as generating text and obtain embeddings.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT-0 (LICENSE)

Dependencies

dio

More

Packages that depend on yandex_gpt_rest_api