Large Transaction Update
This commit is contained in:
@@ -3,6 +3,7 @@ const log = new DebugBuilder("server", "openAiController");
|
||||
const crypto = require('crypto')
|
||||
|
||||
const { createTransaction } = require("./transactionController");
|
||||
const { authorizeTokenUsage } = require("../middleware/balanceAuthorization");
|
||||
|
||||
const { encode } = require("gpt-3-encoder")
|
||||
const { Configuration, OpenAIApi } = require('openai');
|
||||
@@ -86,7 +87,7 @@ async function getTextGeneration(_prompt, callback, { _model = "text-davinci-003
|
||||
* @param {*} param1 Default parameters can be modified
|
||||
* @returns
|
||||
*/
|
||||
exports.submitTextPromptTransaction = async (prompt, temperature, max_tokens, discord_account_id, callback) => {
|
||||
exports.submitTextPromptTransaction = async (prompt, temperature, max_tokens, discord_account_id, interaction, command, callback) => {
|
||||
|
||||
getTextGeneration(prompt, (err, gptResult) => {
|
||||
if (err) callback(err, undefined);
|
||||
@@ -116,29 +117,59 @@ exports.submitTextPromptTransaction = async (prompt, temperature, max_tokens, di
|
||||
* @param {*} image_size The size of the image ["256x256" | "512x512" | "1024x1024"]
|
||||
* @param {*} callback
|
||||
*/
|
||||
exports.submitImagePromptTransaction = async (prompt, discord_account_id, images_to_generate, image_size, callback) => {
|
||||
exports.submitImagePromptTransaction = async (prompt, discord_account_id, images_to_generate, image_size, interaction, command, callback) => {
|
||||
let pricePerImage = 800;
|
||||
log.DEBUG(image_size)
|
||||
switch(image_size){
|
||||
case "1024x1024":
|
||||
log.DEBUG("1024 selected");
|
||||
pricePerImage = 1000;
|
||||
break;
|
||||
case "512x512":
|
||||
pricePerImage = 900;
|
||||
log.DEBUG("512 selected");
|
||||
break;
|
||||
case "256x256":
|
||||
log.DEBUG("256 selected");
|
||||
pricePerImage = 800;
|
||||
break;
|
||||
default:
|
||||
log.DEBUG("256px defaulted");
|
||||
pricePerImage = 800;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!images_to_generate) images_to_generate = 1;
|
||||
if (!image_size) images_to_generate = "256x256";
|
||||
|
||||
getImageGeneration(prompt, {
|
||||
_image_size: image_size,
|
||||
_images_to_generate: images_to_generate
|
||||
}, (err, dalleResult) => {
|
||||
if (err) callback(err, undefined);
|
||||
totalTokensToBeUsed = pricePerImage * images_to_generate;
|
||||
|
||||
// TODO - Use the pricing table to calculate discord tokens
|
||||
log.DEBUG("DALL-E Result", dalleResult);
|
||||
const discordTokensUsed = 100;
|
||||
const providerTokensUsed = 100;
|
||||
const dalleResultHash = crypto.createHash('sha1').update(JSON.stringify({ discord_account_id : prompt, images_to_generate: image_size })).digest('hex')
|
||||
log.DEBUG("Total tokens to be used", totalTokensToBeUsed, pricePerImage, images_to_generate);
|
||||
|
||||
if (dalleResult){
|
||||
createTransaction(dalleResultHash, discord_account_id, discordTokensUsed, providerTokensUsed, 2, async (err, transactionResult) => {
|
||||
authorizeTokenUsage(interaction, command, totalTokensToBeUsed, (isAuthorized) => {
|
||||
if (isAuthorized) {
|
||||
getImageGeneration(prompt, {
|
||||
_image_size: image_size,
|
||||
_images_to_generate: images_to_generate
|
||||
}, (err, dalleResult) => {
|
||||
if (err) callback(err, undefined);
|
||||
|
||||
if (transactionResult){
|
||||
log.DEBUG("Transaction Created: ", transactionResult);
|
||||
callback(undefined, ({ results: dalleResult, totalTokens: discordTokensUsed}));
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// TODO - Use the pricing table to calculate discord tokens
|
||||
log.DEBUG("DALL-E Result", dalleResult);
|
||||
|
||||
const dalleResultHash = crypto.createHash('sha1').update(JSON.stringify({ discord_account_id : prompt, images_to_generate: image_size })).digest('hex')
|
||||
|
||||
if (dalleResult){
|
||||
createTransaction(dalleResultHash, discord_account_id, totalTokensToBeUsed, totalTokensToBeUsed, 2, async (err, transactionResult) => {
|
||||
if (err) callback(err, undefined);
|
||||
|
||||
if (transactionResult){
|
||||
log.DEBUG("Transaction Created: ", transactionResult);
|
||||
callback(undefined, ({ results: dalleResult, totalTokens: totalTokensToBeUsed}));
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user