To use the ChatGPT API in a C# application, you'll follow below steps:
1. Set Up Your OpenAI Account
- Sign Up: If you haven't already done so, create an account on the Open AI Website.
- Get API Key: After logging in, go to the API section and generate an API key.
Once you have the ChatGPT API Key, copy the method below into your application and run. You need to pass 2 parameters.
1) API Key
2) Image Path
I am using Model "gpt-4o" in the below code.
public static async Task<string> ReadImagefromChatGPTAsync()
{
var client = new HttpClient();
{
var client = new HttpClient();
string apiKey = "Your Key Here";
string imgPath = "D:\\aaa.png"; // Image Path here
string prompt = "Extract A1C Value and Date from Image";
string imgPath = "D:\\aaa.png"; // Image Path here
string prompt = "Extract A1C Value and Date from Image";
try
{
// Convert image to base64
{
// Convert image to base64
byte[] imageBytes = File.ReadAllBytes(imgPath);
string base64Image = Convert.ToBase64String(imageBytes);
string imageBase64Url = $"data:image/png;base64,{base64Image}";
string base64Image = Convert.ToBase64String(imageBytes);
string imageBase64Url = $"data:image/png;base64,{base64Image}";
var requestContent = new
{
model = "gpt-4o",
messages = new[]
{
new {
role = "user",
content = new object[]
{
new { type = "text", text = prompt },
new { type = "image_url", image_url = new { url = imageBase64Url } }
}
}
},
max_tokens = 500
};
{
model = "gpt-4o",
messages = new[]
{
new {
role = "user",
content = new object[]
{
new { type = "text", text = prompt },
new { type = "image_url", image_url = new { url = imageBase64Url } }
}
}
},
max_tokens = 500
};
string jsonString = Newtonsoft.Json.Linq.JObject.FromObject(requestContent).ToString();
var content = new StringContent(jsonString, Encoding.UTF8, "application/json");
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
var content = new StringContent(jsonString, Encoding.UTF8, "application/json");
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
var response = await client.PostAsync("https://api.openai.com/v1/chat/completions", content);
var responseString = await response.Content.ReadAsStringAsync();
ChatGPTResponseModel chatGPTResponse = null;
chatGPTResponse = JsonConvert.DeserializeObject<ChatGPTResponseModel>(responseString);
var responseString = await response.Content.ReadAsStringAsync();
ChatGPTResponseModel chatGPTResponse = null;
chatGPTResponse = JsonConvert.DeserializeObject<ChatGPTResponseModel>(responseString);
if (chatGPTResponse != null)
{
var message = chatGPTResponse.Choices?[0].Text;
return await Task.Run<string>(() => { return string.Empty; });
}
return await Task.Run<string>(() => { return string.Empty; });
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred: {ex.Message}");
return await Task.Run<string>(() => { return string.Empty; });
}
}
{
Console.WriteLine($"An error occurred: {ex.Message}");
return await Task.Run<string>(() => { return string.Empty; });
}
}
Below are the models for Deserialize the response
public class ChatGPTResponseModel
{
[JsonPropertyName("id")]
public string Id { get; set; }
[JsonPropertyName("object")]
[SuppressMessage("Naming", "CA1720:Identifier contains type name", Justification = "This is the name of the property returned by the API.")]
public string @Object { get; set; }
[JsonPropertyName("created")]
public int Created { get; set; }
[JsonPropertyName("model")]
public string Model { get; set; }
[JsonPropertyName("choices")]
public List<ChatGPTChoice> Choices { get; set; }
}
[DebuggerDisplay("Text = {Text}")]
public class ChatGPTChoice
{
[JsonPropertyName("text")]
public string Text { get; set; }
[JsonPropertyName("message")]
public Message Message { get; set; }
}
public class Message
{
[JsonPropertyName("role")]
public string Role { get; set; }
[JsonPropertyName("conent")]
public string Content { get; set; }
}