Codeunit 7762 AOAI Chat Compl Params Impl, source in 25
Source242526272829metadata in 25
src/System Application/App/AI/src/Azure OpenAI/Chat Completion/AOAIChatComplParamsImpl.Codeunit.al162 lines, Copyright (c) Microsoft Corporation. MIT
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace System.AI;
codeunit 7762 "AOAI Chat Compl Params Impl"
{
Access = Internal;
InherentEntitlements = X;
InherentPermissions = X;
var
Initialized: Boolean;
Temperature: Decimal;
MaxTokens: Integer;
JsonMode: Boolean;
MaxHistory: Integer;
PresencePenalty: Decimal;
FrequencyPenalty: Decimal;
TemperatureErr: Label 'Temperature must be between 0.0 and 2.0.';
PresencePenaltyErr: Label 'Presence penalty must be between -2.0 and 2.0.';
FrequencyPenaltyErr: Label 'Frequency penalty must be between -2.0 and 2.0.';
MaxHistoryErr: Label 'Max history cannot be less than 1.';
procedure GetTemperature(): Decimal
begin
if not Initialized then
InitializeDefaults();
exit(Temperature);
end;
procedure GetMaxTokens(): Integer
begin
if not Initialized then
InitializeDefaults();
exit(MaxTokens);
end;
procedure IsJsonMode(): Boolean
begin
if not Initialized then
InitializeDefaults();
exit(JsonMode);
end;
procedure GetMaxHistory(): Integer
begin
if not Initialized then
InitializeDefaults();
exit(MaxHistory);
end;
procedure GetPresencePenalty(): Decimal
begin
if not Initialized then
InitializeDefaults();
exit(PresencePenalty);
end;
procedure GetFrequencyPenalty(): Decimal
begin
if not Initialized then
InitializeDefaults();
exit(FrequencyPenalty);
end;
procedure SetTemperature(NewTemperature: Decimal)
begin
if not Initialized then
InitializeDefaults();
if (NewTemperature < 0.0) or (NewTemperature > 2.0) then
Error(TemperatureErr);
Temperature := NewTemperature;
end;
procedure SetMaxTokens(NewMaxTokens: Integer)
begin
if not Initialized then
InitializeDefaults();
MaxTokens := NewMaxTokens;
end;
procedure SetJsonMode(NewJsonMode: Boolean)
begin
if not Initialized then
InitializeDefaults();
JsonMode := NewJsonMode;
end;
procedure SetMaxHistory(NewMaxHistory: Integer)
begin
if not Initialized then
InitializeDefaults();
if NewMaxHistory < 1 then
Error(MaxHistoryErr);
MaxHistory := NewMaxHistory;
end;
procedure SetPresencePenalty(NewPresencePenalty: Decimal)
begin
if not Initialized then
InitializeDefaults();
if (NewPresencePenalty < -2.0) or (NewPresencePenalty > 2.0) then
Error(PresencePenaltyErr);
PresencePenalty := NewPresencePenalty;
end;
procedure SetFrequencyPenalty(NewFrequencyPenalty: Decimal)
begin
if not Initialized then
InitializeDefaults();
if (NewFrequencyPenalty < -2.0) or (NewFrequencyPenalty > 2.0) then
Error(FrequencyPenaltyErr);
FrequencyPenalty := NewFrequencyPenalty;
end;
[NonDebuggable]
procedure AddChatCompletionsParametersToPayload(var Payload: JsonObject)
begin
if GetMaxTokens() > 0 then
Payload.Add('max_tokens', GetMaxTokens());
Payload.Add('temperature', GetTemperature());
Payload.Add('presence_penalty', GetPresencePenalty());
Payload.Add('frequency_penalty', GetFrequencyPenalty());
if IsJsonMode() then
Payload.Add('response_format', GetJsonResponseFormat());
end;
local procedure GetJsonResponseFormat() ResponseFormat: JsonObject
begin
ResponseFormat.Add('type', 'json_object');
end;
local procedure InitializeDefaults()
begin
Initialized := true;
SetTemperature(1);
SetPresencePenalty(0);
SetFrequencyPenalty(0);
SetMaxTokens(0);
SetMaxHistory(10);
SetJsonMode(false);
end;
}