using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Linq;
using MercatorApi;
using MercatorController;
using System.Windows.Forms;
using MercatorExtensions;
using MercatorDatabase;
// <CompileWithRoslyn />
namespace MercatorUi.MovableControls.ButtonsCodes
{
public static class Script
{
public static void Exec(MercatorUi.MovableControls.MovableButton clickedButton)
{
// enter your customized code here
MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)clickedButton.Form;
if (string.IsNullOrWhiteSpace(sigForm.StockRecord.S_MODELE))
{
MercatorUi.Dialogs.Stop("De omschrijving in het Frans is leeg!");
return;
}
MercatorAI.FactoryOpenAI factory = new MercatorAI.FactoryOpenAI();
MercatorAI.Interfaces.IOpenAiChat openAiChat = factory.CreateOpenAiChat("gpt-4o-mini", out string error);
if (!string.IsNullOrEmpty(error))
{
MercatorUi.Dialogs.Stop("Kan de OpenAI-chat niet initialiseren: " + error);
return;
}
string systemMessage = "Je bent een assistent die productnamen vertaalt in het Nederlands, Engels en Duits voor een doe-het-zelfwinkel.";
string chatMessage = sigForm.StockRecord.S_MODELE;
MercatorAI.FactoryOpenAI.ChatOptions chatOptions = new MercatorAI.FactoryOpenAI.ChatOptions
{
Temperature = 0.2f, // Beperkt de creativiteit, maar biedt nog steeds ruimte voor natuurlijke formuleringen
TopP = 1.0f // Het is niet nodig om de cumulatieve waarschijnlijkheid te filteren, vooral niet voor korte en eenvoudige zinnen
};
while (!string.IsNullOrEmpty(chatMessage))
{
try
{
MercatorUi.Wait.WaitStatic.WaitWindow(Api.Iif_langue(Globals.Langue, IifLangueEnum.AIisThinking));
Trad trad = openAiChat.Ask<Trad>(chatMessage, "Vertaling_NL_EN_DE", systemMessage: systemMessage, chatOptions: chatOptions);
systemMessage = null;
sigForm.StockRecord.S_MODELEN = trad.TradNL ?? "";
sigForm.StockRecord.S_MODELEE = trad.TradEN ?? "";
sigForm.StockRecord.S_MODELED = trad.TradDE ?? "";
MercatorUi.Wait.WaitStatic.WaitClear();
chatMessage = MercatorUi.Dialogs.AskMemo("Vertalingen verfijnen met een extra instructie?", "");
}
catch (Exception ex)
{
MercatorUi.Wait.WaitStatic.WaitClear();
MercatorUi.Dialogs.Stop(ex.Message);
chatMessage = "";
}
}
}
public class Trad
{
[MercatorAI.FactoryOpenAI.ChatJsonFormat(Description = "Vertaling NL", IsRequired = true)]
public string TradNL { get; set; }
[MercatorAI.FactoryOpenAI.ChatJsonFormat(Description = "Vertaling EN", IsRequired = true)]
public string TradEN { get; set; }
[MercatorAI.FactoryOpenAI.ChatJsonFormat(Description = "Vertaling DE", IsRequired = true)]
public string TradDE { get; set; }
}
}
}