AI fix
This commit is contained in:
parent
41422340c8
commit
8cf260a6d2
|
|
@ -1,36 +1,39 @@
|
||||||
@using Nop.Core;
|
@using AyCode.Utils.Extensions
|
||||||
|
@using Nop.Core;
|
||||||
@using Nop.Plugin.Misc.FruitBankPlugin.Services
|
@using Nop.Plugin.Misc.FruitBankPlugin.Services
|
||||||
@using Nop.Core.Domain.Customers
|
@using Nop.Core.Domain.Customers
|
||||||
@inject IWorkContext workContext
|
@inject IWorkContext workContext
|
||||||
@inject AICalculationService aiCalculationService
|
@inject AICalculationService aiCalculationService
|
||||||
|
|
||||||
<div class="card card-primary">
|
<div class="card card-primary">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<h3 class="card-title">
|
<h3 class="card-title">
|
||||||
<i class="fas fa-leaf"></i>
|
<i class="fas fa-leaf"></i>
|
||||||
Üdvözöljük a Fruit Bank rendszerben!
|
Üdvözöljük a Fruit Bank rendszerben!
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
@{
|
@{
|
||||||
Customer customer = await workContext.GetCurrentCustomerAsync();
|
Customer customer = await workContext.GetCurrentCustomerAsync();
|
||||||
var WelcomeMessage = await aiCalculationService.GetWelcomeMessageAsync(customer);
|
|
||||||
var email = customer.Email;
|
var welcomeMessage = await aiCalculationService.GetWelcomeMessageAsync(customer);
|
||||||
<h4>Ssytem check</h4>
|
if (welcomeMessage.IsNullOrWhiteSpace())
|
||||||
<p class="lead">
|
{
|
||||||
@WelcomeMessage
|
<p class="lead">Nincs kapcsolat az AI szerverrel...</p>
|
||||||
|
}
|
||||||
</p>
|
else
|
||||||
<p class="lead">
|
{
|
||||||
Itt kezelheti az összes terméket, rendelést és ügyfelet egyszerűen és hatékonyan.
|
var email = customer.Email;
|
||||||
</p>
|
<h4>Ssytem check</h4>
|
||||||
}
|
<p class="lead">@welcomeMessage</p>
|
||||||
<p>
|
}
|
||||||
Mai dátum: <strong>@DateTime.Now.ToString("yyyy. MMMM dd., dddd", new System.Globalization.CultureInfo("hu-HU"))</strong>
|
}
|
||||||
</p>
|
<p>
|
||||||
@*
|
Mai dátum: <strong>@DateTime.Now.ToString("yyyy. MMMM dd., dddd", new System.Globalization.CultureInfo("hu-HU"))</strong>
|
||||||
|
</p>
|
||||||
|
@*
|
||||||
<hr>
|
<hr>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
|
|
@ -42,17 +45,17 @@
|
||||||
<p class="text-muted">Megbízható kiszállítás országszerte</p>
|
<p class="text-muted">Megbízható kiszállítás országszerte</p>
|
||||||
</div>
|
</div>
|
||||||
</div> *@
|
</div> *@
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<div class="bg-light p-3 rounded">
|
<div class="bg-light p-3 rounded">
|
||||||
<h5><i class="fas fa-chart-line text-warning"></i> Mai összefoglaló</h5>
|
<h5><i class="fas fa-chart-line text-warning"></i> Mai összefoglaló</h5>
|
||||||
<ul class="list-unstyled">
|
<ul class="list-unstyled">
|
||||||
<li><i class="fas fa-clock text-info"></i> Bejelentkezés ideje: @DateTime.Now.ToString("HH:mm")</li>
|
<li><i class="fas fa-clock text-info"></i> Bejelentkezés ideje: @DateTime.Now.ToString("HH:mm")</li>
|
||||||
<li><i class="fas fa-calendar text-success"></i> Aktív napok: @DateTime.Now.DayOfYear</li>
|
<li><i class="fas fa-calendar text-success"></i> Aktív napok: @DateTime.Now.DayOfYear</li>
|
||||||
<li><i class="fas fa-sun text-warning"></i> Szép napot kívánunk!</li>
|
<li><i class="fas fa-sun text-warning"></i> Szép napot kívánunk!</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -25,7 +25,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Services
|
||||||
|
|
||||||
string userMessage = "Hello";
|
string userMessage = "Hello";
|
||||||
|
|
||||||
var response = await _openAIApiService.GetSimpleResponseAsync(systemMessage, userMessage);
|
var response = await _openAIApiService.GetSimpleResponseAsync(systemMessage, userMessage) ?? string.Empty;
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -34,6 +34,8 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Services
|
||||||
string systemMessage = $"You are a pdf analyzis assistant, the user is asking you questions about a PDF document, that you have access to. The content of the PDF document is the following: {pdfText}";
|
string systemMessage = $"You are a pdf analyzis assistant, the user is asking you questions about a PDF document, that you have access to. The content of the PDF document is the following: {pdfText}";
|
||||||
var response = await _openAIApiService.GetSimpleResponseAsync(systemMessage, userQuestion);
|
var response = await _openAIApiService.GetSimpleResponseAsync(systemMessage, userQuestion);
|
||||||
|
|
||||||
|
if (response == null) return string.Empty;
|
||||||
|
|
||||||
var fixedResponse = TextHelper.FixJsonWithoutAI(response);
|
var fixedResponse = TextHelper.FixJsonWithoutAI(response);
|
||||||
|
|
||||||
return fixedResponse;
|
return fixedResponse;
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Services
|
||||||
{
|
{
|
||||||
internal interface IAIAPIService
|
internal interface IAIAPIService
|
||||||
{
|
{
|
||||||
Task<string> GetSimpleResponseAsync(string systemMessage, string userMessage, string? assistantMessage = null);
|
Task<string?> GetSimpleResponseAsync(string systemMessage, string userMessage, string? assistantMessage = null);
|
||||||
Task<string> GetStreamedResponseAsync(string sessionId, string systemMessage, string userMessage, string? assistantMessage = null);
|
Task<string> GetStreamedResponseAsync(string sessionId, string systemMessage, string userMessage, string? assistantMessage = null);
|
||||||
|
|
||||||
string GetApiKey();
|
string GetApiKey();
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Services
|
||||||
}
|
}
|
||||||
|
|
||||||
#region === CHAT (TEXT INPUT) ===
|
#region === CHAT (TEXT INPUT) ===
|
||||||
public async Task<string> GetSimpleResponseAsync(string systemMessage, string userMessage, string? assistantMessage = null)
|
public async Task<string?> GetSimpleResponseAsync(string systemMessage, string userMessage, string? assistantMessage = null)
|
||||||
{
|
{
|
||||||
string modelName = GetModelName();
|
string modelName = GetModelName();
|
||||||
StringContent requestContent = new("");
|
StringContent requestContent = new("");
|
||||||
|
|
@ -109,21 +109,30 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Services
|
||||||
requestContent = new StringContent(requestJson, Encoding.UTF8, "application/json");
|
requestContent = new StringContent(requestJson, Encoding.UTF8, "application/json");
|
||||||
}
|
}
|
||||||
|
|
||||||
using var response = await _httpClient.PostAsync(OpenAiEndpoint, requestContent);
|
try
|
||||||
response.EnsureSuccessStatusCode();
|
{
|
||||||
|
using var response = await _httpClient.PostAsync(OpenAiEndpoint, requestContent);
|
||||||
|
response.EnsureSuccessStatusCode();
|
||||||
|
|
||||||
using var responseStream = await response.Content.ReadAsStreamAsync();
|
await using var responseStream = await response.Content.ReadAsStreamAsync();
|
||||||
using var document = await JsonDocument.ParseAsync(responseStream);
|
|
||||||
|
|
||||||
var inputTokens = document.RootElement.GetProperty("usage").GetProperty("prompt_tokens").GetInt32();
|
using var document = await JsonDocument.ParseAsync(responseStream);
|
||||||
var outputTokens = document.RootElement.GetProperty("usage").GetProperty("completion_tokens").GetInt32();
|
|
||||||
Console.WriteLine($"USAGE STATS - Tokens: {inputTokens} + {outputTokens} = {inputTokens + outputTokens}");
|
|
||||||
|
|
||||||
return document.RootElement
|
var inputTokens = document.RootElement.GetProperty("usage").GetProperty("prompt_tokens").GetInt32();
|
||||||
.GetProperty("choices")[0]
|
var outputTokens = document.RootElement.GetProperty("usage").GetProperty("completion_tokens").GetInt32();
|
||||||
.GetProperty("message")
|
Console.WriteLine($"USAGE STATS - Tokens: {inputTokens} + {outputTokens} = {inputTokens + outputTokens}");
|
||||||
.GetProperty("content")
|
|
||||||
.GetString() ?? "No response";
|
return document.RootElement
|
||||||
|
.GetProperty("choices")[0]
|
||||||
|
.GetProperty("message")
|
||||||
|
.GetProperty("content")
|
||||||
|
.GetString() ?? "No response";
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Console.Error.WriteLine($"{ex}");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
@ -190,16 +199,14 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Services
|
||||||
requestContent = new StringContent(requestJson, Encoding.UTF8, "application/json");
|
requestContent = new StringContent(requestJson, Encoding.UTF8, "application/json");
|
||||||
}
|
}
|
||||||
|
|
||||||
using var httpRequest = new HttpRequestMessage(HttpMethod.Post, OpenAiEndpoint)
|
using var httpRequest = new HttpRequestMessage(HttpMethod.Post, OpenAiEndpoint);
|
||||||
{
|
httpRequest.Content = requestContent;
|
||||||
Content = requestContent
|
|
||||||
};
|
|
||||||
|
|
||||||
using var response = await _httpClient.SendAsync(httpRequest, HttpCompletionOption.ResponseHeadersRead);
|
using var response = await _httpClient.SendAsync(httpRequest, HttpCompletionOption.ResponseHeadersRead);
|
||||||
response.EnsureSuccessStatusCode();
|
response.EnsureSuccessStatusCode();
|
||||||
|
|
||||||
var stringBuilder = new StringBuilder();
|
var stringBuilder = new StringBuilder();
|
||||||
using var responseStream = await response.Content.ReadAsStreamAsync();
|
await using var responseStream = await response.Content.ReadAsStreamAsync();
|
||||||
using var reader = new StreamReader(responseStream);
|
using var reader = new StreamReader(responseStream);
|
||||||
|
|
||||||
try
|
try
|
||||||
|
|
@ -277,7 +284,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Services
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
using var content = await response.Content.ReadAsStreamAsync();
|
await using var content = await response.Content.ReadAsStreamAsync();
|
||||||
var json = await JsonDocument.ParseAsync(content);
|
var json = await JsonDocument.ParseAsync(content);
|
||||||
|
|
||||||
var base64Image = json.RootElement
|
var base64Image = json.RootElement
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue