diff --git a/LLama.Examples/Examples/LlavaInteractiveModeExecute.cs b/LLama.Examples/Examples/LlavaInteractiveModeExecute.cs index 8cfa7376..507f041b 100644 --- a/LLama.Examples/Examples/LlavaInteractiveModeExecute.cs +++ b/LLama.Examples/Examples/LlavaInteractiveModeExecute.cs @@ -102,7 +102,7 @@ namespace LLama.Examples.Examples // foreach (var image in imagePaths) { - ex.Images.Add(new ImageData(ImageData.DataType.ImagePath, image)); + ex.Images.Add(File.ReadAllBytes(image)); } } diff --git a/LLama/Abstractions/ILLamaExecutor.cs b/LLama/Abstractions/ILLamaExecutor.cs index 977cbc5e..d6c8d2ce 100644 --- a/LLama/Abstractions/ILLamaExecutor.cs +++ b/LLama/Abstractions/ILLamaExecutor.cs @@ -27,7 +27,7 @@ namespace LLama.Abstractions /// /// List of images: Image filen path, uri or image byte array. See ImageData. /// - public List Images { get; } + public List Images { get; } /// /// Asynchronously infers a response from the model. @@ -38,46 +38,4 @@ namespace LLama.Abstractions /// IAsyncEnumerable InferAsync(string text, IInferenceParams? inferenceParams = null, CancellationToken token = default); } - - /// - /// Holds image data - /// - public class ImageData - { - /// - /// constructor - /// - /// - /// - public ImageData(DataType type, object data) { Type = type; Data = data; } - - /// - /// the possible types of image data - /// - public enum DataType - { - /// - /// file path - /// - ImagePath, - /// - /// byte array - /// - ImageBytes, - /// - /// uri - /// - ImageURL - } - - /// - /// the type of this image data - /// - public DataType Type { get; set; } - - /// - /// the image data (string, byte array or uri) - /// - public object? Data { get; set; } - } } diff --git a/LLama/LLamaExecutorBase.cs b/LLama/LLamaExecutorBase.cs index 9914f0ec..65c0dcb4 100644 --- a/LLama/LLamaExecutorBase.cs +++ b/LLama/LLamaExecutorBase.cs @@ -79,7 +79,7 @@ namespace LLama public LLavaWeights? ClipModel { get; } /// - public List Images { get; set; } + public List Images { get; set; } /// /// Current "mu" value for mirostat sampling @@ -95,7 +95,7 @@ namespace LLama /// protected StatefulExecutorBase(LLamaContext context, ILogger? logger = null) { - Images = new List(); + Images = new List(); _logger = logger; Context = context; _pastTokensCount = 0; diff --git a/LLama/LLamaInteractExecutor.cs b/LLama/LLamaInteractExecutor.cs index 0944bb4e..a87a0f37 100644 --- a/LLama/LLamaInteractExecutor.cs +++ b/LLama/LLamaInteractExecutor.cs @@ -153,24 +153,7 @@ namespace LLama { foreach (var image in Images) { - if (image.Type == ImageData.DataType.ImagePath && image.Data != null) - { - _imageEmbedHandles.Add(SafeLlavaImageEmbedHandle.CreateFromFileName(ClipModel.NativeHandle, Context, (string)image.Data)); - } - else if (image.Type == ImageData.DataType.ImageBytes && image.Data != null) - { - _imageEmbedHandles.Add(SafeLlavaImageEmbedHandle.CreateFromMemory(ClipModel.NativeHandle, Context, (byte[])image.Data)); - } - else if (image.Type == ImageData.DataType.ImageURL && image.Data != null) - { - using var httpClient = new HttpClient(); - var uri = new Uri((string)image.Data); - var imageBytes = httpClient.GetByteArrayAsync(uri).Result; - if (imageBytes != null && imageBytes.Length > 0) - { - _imageEmbedHandles.Add(SafeLlavaImageEmbedHandle.CreateFromMemory(ClipModel.NativeHandle, Context, imageBytes)); - } - } + _imageEmbedHandles.Add(SafeLlavaImageEmbedHandle.CreateFromMemory(ClipModel.NativeHandle, Context, image)); } int imageIndex = text.IndexOf(""); diff --git a/LLama/LLamaStatelessExecutor.cs b/LLama/LLamaStatelessExecutor.cs index 9d2f8c78..f9d6ca5b 100644 --- a/LLama/LLamaStatelessExecutor.cs +++ b/LLama/LLamaStatelessExecutor.cs @@ -34,7 +34,7 @@ namespace LLama public LLavaWeights? ClipModel { get; } /// - public List Images { get; set; } + public List Images { get; set; } /// /// The context used by the executor when running the inference. @@ -49,7 +49,7 @@ namespace LLama /// public StatelessExecutor(LLamaWeights weights, IContextParams @params, ILogger? logger = null) { - Images = new List(); + Images = new List(); _weights = weights; _params = @params; _logger = logger;