openai/openai-dotnet

Public

mirrored from https://github.com/openai/openai-dotnetAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
OpenAI_2.2.0

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

src/Custom/Chat/Internal/InternalChatCompletionRequestMessageContentPartImageImageUrl.cs

59lines · modeblame

9f9f2936Jose Arriaga Maldonado2 years ago1using System;
2using System.Collections.Generic;
3using System.Text.RegularExpressions;
4
5namespace OpenAI.Chat;
6
0ca4c062Jose Arriaga Maldonado1 years ago7[CodeGenType("ChatCompletionRequestMessageContentPartImageImageUrl")]
9f9f2936Jose Arriaga Maldonado2 years ago8[CodeGenSuppress("InternalChatCompletionRequestMessageContentPartImageImageUrl", typeof(string))]
9internal partial class InternalChatCompletionRequestMessageContentPartImageImageUrl
10{
5dce104aJose Arriaga Maldonado1 years ago11private Uri _imageUri;
12private BinaryData _imageBytes;
13private string _imageBytesMediaType;
9f9f2936Jose Arriaga Maldonado2 years ago14
15// CUSTOM: Changed type from Uri to string to be able to support data URIs properly.
16/// <summary> Either a URL of the image or the base64 encoded image data. </summary>
17[CodeGenMember("Url")]
5dce104aJose Arriaga Maldonado1 years ago18internal string InternalUrl
19{
20get => _internalUrl;
21set
22{
23_internalUrl = value;
24if (value is not null && !DataEncodingHelpers.TryParseDataUri(value, out _imageBytes, out _imageBytesMediaType))
25{
26_imageUri = new Uri(value);
27}
28}
29}
30private string _internalUrl;
9f9f2936Jose Arriaga Maldonado2 years ago31
32/// <summary> Initializes a new instance of <see cref="InternalChatCompletionRequestMessageContentPartImageImageUrl"/>. </summary>
33/// <param name="uri"> Either a URL of the image or the base64 encoded image data. </param>
34/// <exception cref="ArgumentNullException"> <paramref name="uri"/> is null. </exception>
5dce104aJose Arriaga Maldonado1 years ago35public InternalChatCompletionRequestMessageContentPartImageImageUrl(Uri uri, ChatImageDetailLevel? detailLevel = default)
36: this(detailLevel, null, null)
9f9f2936Jose Arriaga Maldonado2 years ago37{
38Argument.AssertNotNull(uri, nameof(uri));
39_imageUri = uri;
5dce104aJose Arriaga Maldonado1 years ago40_internalUrl = uri.ToString();
9f9f2936Jose Arriaga Maldonado2 years ago41}
42
5dce104aJose Arriaga Maldonado1 years ago43public InternalChatCompletionRequestMessageContentPartImageImageUrl(BinaryData imageBytes, string imageBytesMediaType, ChatImageDetailLevel? detailLevel = default)
44: this(detailLevel, null, null)
9f9f2936Jose Arriaga Maldonado2 years ago45{
46Argument.AssertNotNull(imageBytes, nameof(imageBytes));
47Argument.AssertNotNull(imageBytesMediaType, nameof(imageBytesMediaType));
48
49_imageBytes = imageBytes;
50_imageBytesMediaType = imageBytesMediaType;
5dce104aJose Arriaga Maldonado1 years ago51_internalUrl = DataEncodingHelpers.CreateDataUri(imageBytes, imageBytesMediaType);
9f9f2936Jose Arriaga Maldonado2 years ago52}
53
54public Uri ImageUri => _imageUri;
55
56public BinaryData ImageBytes => _imageBytes;
57
58public string ImageBytesMediaType => _imageBytesMediaType;
59}