embed method

  1. @override
Future<List<double>> embed(
  1. String text
)

Generates embeddings for the given text.

Returns a list of doubles representing the vector embedding. Throws UnsupportedError if the provider doesn't support embeddings.

Implementation

@override
Future<List<double>> embed(String text) async {
  final url =
      '$_baseUrl/models/text-embedding-004:embedContent?key=${config.apiKey}';

  final response = await _httpClient.post(
    Uri.parse(url),
    headers: {'Content-Type': 'application/json'},
    body: jsonEncode({
      'model': 'models/text-embedding-004',
      'content': {
        'parts': [
          {'text': text}
        ]
      },
    }),
  );

  final json = jsonDecode(response.body) as Map<String, dynamic>;
  if (response.statusCode != 200) {
    throw _parseError(response.statusCode, json);
  }

  final embedding = json['embedding'] as Map<String, dynamic>;
  return (embedding['values'] as List).cast<double>();
}