embedInputs method
Future<List<List<double> > >
embedInputs({
- required String model,
- required List<
Content> contents, - int? dimensions,
- String? inputType,
- List<
String> ? modality, - NvidiaEmbeddingEncodingFormat? encodingFormat,
- NvidiaEmbeddingTruncate? truncate,
Implementation
Future<List<List<double>>> embedInputs({
required String model,
required List<Content> contents,
int? dimensions,
String? inputType,
List<String>? modality,
NvidiaEmbeddingEncodingFormat? encodingFormat,
NvidiaEmbeddingTruncate? truncate,
}) async {
List<NvidiaEmbeddingValue> embeddingValues =
contents.map(_toEmbeddingValue).toList();
String resolvedModality = _resolveModality(
values: embeddingValues,
modality: modality,
);
String resolvedInputType =
inputType ?? _defaultInputType(resolvedModality);
Uri uri = _buildUri('/embeddings');
http.Response response = await http.post(
uri,
headers: <String, String>{
'Authorization': 'Bearer $apiKey',
'Content-Type': 'application/json',
'Accept': 'application/json',
},
body: jsonEncode({
'input': embeddingValues.map((NvidiaEmbeddingValue i) => i.input).toList(),
'model': model,
'input_type': resolvedInputType,
'modality': [resolvedModality],
'encoding_format':
(encodingFormat ?? embeddingEncodingFormat).wireValue,
'truncate': (truncate ?? embeddingTruncate).wireValue,
if (dimensions != null) 'dimensions': dimensions,
}),
);
if (response.statusCode == 202) {
throw NvidiaApiException(
statusCode: response.statusCode,
message:
'NVIDIA embeddings returned 202 pending status. Polling pending requests is not implemented.',
responseBody: response.body,
);
}
if (response.statusCode < 200 || response.statusCode >= 300) {
throw NvidiaApiException(
statusCode: response.statusCode,
message: 'NVIDIA embeddings request failed.',
responseBody: response.body,
);
}
Object? decoded = jsonDecode(response.body);
Map<String, dynamic> body = _requireMap(decoded);
Object? dataValue = body['data'];
if (dataValue is! List) {
throw NvidiaApiException(
statusCode: response.statusCode,
message:
'Expected NVIDIA embeddings response to contain a data array.',
responseBody: response.body,
);
}
return dataValue.map(_parseEmbedding).toList();
}