Update GPT ChatterBot

* Updates endpoint from v1/completions to v1/chat/completions
* Add SharpTokens as a library to calculate input token usage
* Subtract input tokens from max_tokens to ensure the API tokens don't exceed the max specified
* Add Chat history support since this API supports it
* Add a personality prompt to tweak the way the bot behaves
* Add a min_tokens config to increase the quality of chat messages when history is enabled
* Adjust the response function to throw an exception so that a null message isn't added to the list.
This commit is contained in:
Alexandra
2024-01-16 09:12:14 +00:00
committed by Kwoth
parent ef4d38bc87
commit afba004d85
9 changed files with 140 additions and 47 deletions

View File

@@ -79,8 +79,12 @@ public class ChatterBotService : IExecOnMessage
case ChatBotImplementation.Gpt3:
if (!string.IsNullOrWhiteSpace(_creds.Gpt3ApiKey))
return new OfficialGpt3Session(_creds.Gpt3ApiKey,
_gcs.Data.ChatGpt.Model,
_gcs.Data.ChatGpt.ModelName,
_gcs.Data.ChatGpt.ChatHistory,
_gcs.Data.ChatGpt.MaxTokens,
_gcs.Data.ChatGpt.MinTokens,
_gcs.Data.ChatGpt.PersonalityPrompt,
_client.CurrentUser.Username,
_httpFactory);
Log.Information("Gpt3 will not work as the api key is missing.");
@@ -199,7 +203,7 @@ public class ChatterBotService : IExecOnMessage
}
_ = channel.TriggerTypingAsync();
var response = await cbs.Think(message);
var response = await cbs.Think(message, usrMsg.Author.ToString());
await channel.SendConfirmAsync(_eb,
title: null,
response.SanitizeMentions(true)