46 lines
1.5 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|