createEmbeddings method

Future<EmbeddingsResult> createEmbeddings({
  1. required dynamic input,
  2. required EmbeddingModel model,
  3. int? dimensions,
  4. String? encodingFormat,
  5. String? user,
})

Create text embeddings.

final res = await client.createEmbeddings(
  input: 'The food was delicious and the waiter...',
  model: 'text-embedding-3-small',
);

print(res.vectors.first.length);        // 1536, 1024, … depending on model

For multiple inputs pass a List<String> (or List<List<int>> of tokens).

Implementation

Future<EmbeddingsResult> createEmbeddings({
  /// Single string · List<String> · List<List<int>>
  required dynamic input,

  /// e.g. text-embedding-3-large, ada-002, …
  required EmbeddingModel model,

  /// Target dimensionality (supported by text-embedding-3 + later).
  int? dimensions,

  /// `"float"` (default) or `"base64"`.
  String? encodingFormat,

  /// End-user identifier for abuse monitoring.
  String? user,
}) async {
  final resp = await postJson('/embeddings', {
    'input': input,
    'model': model.toJson(),
    if (dimensions != null) 'dimensions': dimensions,
    if (encodingFormat != null) 'encoding_format': encodingFormat,
    if (user != null) 'user': user,
  });

  if (resp.statusCode == 200) {
    return EmbeddingsResult.fromJson(jsonDecode(resp.body));
  }
  throw OpenAIRequestException.fromHttpResponse(resp);
}