refactor for better support of streaming and etc ...
This commit is contained in:
@@ -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()
|
||||
{
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user