refactor for better support of streaming and etc ...

This commit is contained in:
2026-09-26 10:46:14 +03:30
parent 9afa413c6f
commit ed8a66f432
6 changed files with 132 additions and 136 deletions
+17 -82
View File
@@ -37,11 +37,7 @@ namespace xAiApi.Providers
XAiApiConfiguration configuration,
ILogger<XAiEmbeddingServiceBase> logger,
string embeddingModelName = XAiApiConstants.XAiEmbeddingModelName
) : base(
dataProvider,
logger,
configuration
)
) : base(dataProvider, logger, configuration)
{
//
// Prepare Embedding Model Descriptor ...
@@ -75,15 +71,13 @@ namespace xAiApi.Providers
//
using var generator = GetEmbeddingGenerator();
//
GeneratedEmbeddings<Embedding<float>> response = null;
try
{
response = await generator.GenerateAsync([content]);
}
catch (Exception ex)
{
logger.LogError(ex.Message);
}
response = await generator.GenerateAsync(
values: [content],
cancellationToken: cancellationToken
);
//
if (response.IsNullOrDefault())
@@ -103,40 +97,6 @@ namespace xAiApi.Providers
XException.ActionFailed.Throw();
}
//
// Retrieve Ollama Client ...
// using var client = GetEmbeddingClient();
// //
// // Create Embedding Request ....
// var request = new EmbedRequest
// {
// Input = [content],
// Model = descriptor.LLM,
// };
// //
// // Make Request and Recieve Response ...
// var response = await client.EmbedAsync(
// request: request,
// cancellationToken: cancellationToken
// );
// if (response.IsNullOrDefault())
// {
// XException.ActionFailed.Throw();
// }
// //
// // Generae Result ...
// var result = response?
// .Embeddings?
// .FirstOrDefault()
// ?? [];
// if (result.Length == 0)
// {
// XException.ActionFailed.Throw();
// }
//
// Normalize ...
VectorHelper.Normalize(result);
@@ -166,41 +126,25 @@ namespace xAiApi.Providers
}
//
// Retrieve Ollama Client ...
using var client = GetEmbeddingClient();
using var generator = GetEmbeddingGenerator();
//
// Create Embedding Request ....
var request = new EmbedRequest
{
Input = [.. batch],
Model = descriptor.LLM,
};
//
// Make Request and Recieve Response ...
var response = await client.EmbedAsync(
request: request,
GeneratedEmbeddings<Embedding<float>> response = null;
response = await generator.GenerateAsync(
values: [.. batch],
cancellationToken: cancellationToken
);
//
if (response.IsNullOrDefault())
{
XException.ActionFailed.Throw();
}
//
// Generae Result ...
var result = response?
.Embeddings
.ToArray()
?? [];
//
// Validate Result ...
if (result.Length == 0)
{
XException.ActionFailed.Throw();
}
var result = response
.Select(e => e.Vector.ToArray())
.ToList();
//
// Normalize ...
@@ -214,18 +158,9 @@ namespace xAiApi.Providers
}
/// <summary>
/// Access Embedding Client ...
/// Embedding Generator ...
/// </summary>
/// <returns></returns>
public OllamaApiClient GetEmbeddingClient()
{
//
var result = new OllamaApiClient(new Uri(descriptor.Url));
//
return result;
}
public IEmbeddingGenerator<string, Embedding<float>> GetEmbeddingGenerator()
{
//