YandexGPT API Client
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.