Mango.Nop.Plugins/Nop.Plugin.Misc.AIPlugin/Services/OpenAIService.cs

46 lines
1.5 KiB
C#

using Nop.Plugin.Misc.FruitBankPlugin;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using Nop.Services.Configuration;
namespace Nop.Plugin.Misc.FruitBankPlugin.Services
{
public class OpenAiService
{
private readonly FruitBankSettings _settings;
public OpenAiService(FruitBankSettings settings)
{
_settings = settings;
}
public async Task<string> AskAsync(string prompt)
{
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _settings.ApiKey);
var body = new
{
model = "gpt-4o-mini",
messages = new[]
{
new { role = "system", content = "You are a helpful assistant." },
new { role = "user", content = prompt }
}
};
var content = new StringContent(JsonSerializer.Serialize(body), Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.openai.com/v1/chat/completions", content);
var json = await response.Content.ReadAsStringAsync();
using var doc = JsonDocument.Parse(json);
return doc.RootElement.GetProperty("choices")[0].GetProperty("message").GetProperty("content").GetString();
}
}
}