@yrpri/api 9.0.139 → 9.0.141
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agents/assistants/agentAssistant.js +4 -3
- package/agents/assistants/baseAssistant.js +72 -71
- package/agents/assistants/baseAssistantWithVoice.js +6 -5
- package/agents/assistants/modes/agentDirectConnection.js +8 -7
- package/agents/assistants/modes/agentSelectionMode.js +2 -1
- package/agents/assistants/modes/baseAssistantMode.js +3 -2
- package/agents/assistants/modes/tools/agentTools.js +11 -10
- package/agents/assistants/modes/tools/loginTools.js +7 -6
- package/agents/assistants/modes/tools/models/agents.js +6 -5
- package/agents/assistants/modes/tools/models/subscriptions.js +7 -6
- package/agents/assistants/modes/tools/navigationTools.js +7 -6
- package/agents/assistants/modes/tools/subscriptionTools.js +12 -11
- package/agents/assistants/modes/tools/workflowConverstationTools.js +7 -6
- package/agents/assistants/voiceAssistant.js +45 -44
- package/agents/controllers/agentProductController.js +8 -7
- package/agents/controllers/agentSubscriptionController.js +13 -12
- package/agents/controllers/assistantsController.js +45 -44
- package/agents/controllers/policySynthAgents.js +33 -32
- package/agents/managers/emailInvitesManager.js +4 -3
- package/agents/managers/newAiModelSetup.js +46 -45
- package/agents/managers/notificationAgentQueueManager.js +55 -54
- package/agents/managers/subscriptionManager.js +24 -23
- package/agents/models/agentProduct.js +2 -1
- package/agents/models/agentProductBoosterPurchase.js +2 -1
- package/agents/models/testData/createEvolyAgentProduct.js +7 -6
- package/agents/models/testData/old/updateAgentWorkflowConfiguration.js +5 -4
- package/agents/models/testData/updateAgentWorkflowConfiguration.js +5 -4
- package/agents/tools/setTemplateWorkflowCommunityId.js +6 -5
- package/app.d.ts +2 -1
- package/app.js +60 -34
- package/authorization.cjs +4 -4
- package/controllers/allOurIdeas.js +45 -44
- package/controllers/groups.cjs +4 -9
- package/controllers/images.cjs +8 -8
- package/controllers/index.cjs +1 -1
- package/controllers/points.cjs +1 -1
- package/controllers/posts.cjs +3 -3
- package/deleteUnwantedDeclerations.cjs +6 -5
- package/models/community.cjs +1 -1
- package/models/domain.cjs +7 -7
- package/models/image.cjs +2 -2
- package/models/index.cjs +8 -4
- package/models/post.cjs +10 -10
- package/models/user.cjs +1 -1
- package/models/video.cjs +4 -4
- package/package.json +5 -5
- package/scripts/addRatingUsersToGroup.js +1 -1
- package/scripts/addUserToOrganization.js +8 -8
- package/scripts/agents/changeModelForWorkflowGroupTemplate.js +13 -12
- package/scripts/agents/generateAgentWorkflowTemplateFromAgentClass.js +5 -4
- package/scripts/analyseRatingsForCommunity.js +2 -2
- package/scripts/analyzeAndFixBrokenPointUsers.js +3 -3
- package/scripts/analyzeEndorsementsByCountry.js +7 -7
- package/scripts/analyzePostsForCommunity.js +1 -1
- package/scripts/bulkStatusUpdates/listUpdates.js +2 -2
- package/scripts/bulkStatusUpdates/mergeLatestPostsToUpdate.js +5 -5
- package/scripts/bulkStatusUpdates/performUpdate.js +9 -9
- package/scripts/bulkStatusUpdates/performUpdateForGroup.cjs +12 -11
- package/scripts/bulkStatusUpdates/performUpdateForStatus.js +15 -15
- package/scripts/change/changeVideoAspectTo.js +3 -3
- package/scripts/change/setUseNewVersion.cjs +5 -4
- package/scripts/changeCommunityGroupcount.js +3 -3
- package/scripts/changeCommunityPostCount.js +3 -3
- package/scripts/changeGroupPostCount.js +3 -3
- package/scripts/changeLanguage.js +4 -4
- package/scripts/changeOfficalStatus.js +3 -3
- package/scripts/cleanups/deleteAnonNotifications.cjs +8 -7
- package/scripts/cleanups/deleteLinkGroupsWithDeletedCommunities.js +8 -8
- package/scripts/cleanups/deleteYearOldNotifications.cjs +6 -5
- package/scripts/cleanups/removeAllUsersFromHiddenPublicGroup.js +5 -5
- package/scripts/clearAllEndorsementInGroup.js +5 -5
- package/scripts/cloning/clearUsersForCommunitiesFromUrl.js +3 -3
- package/scripts/cloning/cloneFromUrlScript.js +4 -4
- package/scripts/cloning/cloneWBFromUrlScriptAndCreateLinks.js +6 -6
- package/scripts/cloning/cloneWBFromUrlScriptNoUsersOrPoints.js +6 -6
- package/scripts/cloning/cloneWBSerbianFromUrlScriptAndCreateLinks.js +6 -6
- package/scripts/cloning/copyCommunityConfigAndTranslationsFromURL.js +3 -3
- package/scripts/cloning/copyCommunityOneGroupToDomainNoUsersNoEndorsements.js +2 -2
- package/scripts/cloning/copyCommunityToDomainNoUsersNoEndorsements.js +2 -2
- package/scripts/cloning/copyCommunityToDomainWithEverything.js +2 -2
- package/scripts/cloning/copyCommunityToDomainWithOnlyGroups.js +3 -3
- package/scripts/cloning/copyGroupConfigAndTranslationsFromURL.js +3 -3
- package/scripts/cloning/copyPostToGroupOld.js +12 -12
- package/scripts/cloning/copyPostVideosFromURL.js +3 -3
- package/scripts/cloning/copyPostWithOutAnyVotingOrActivities.js +2 -2
- package/scripts/cloning/deepCloneSerbianWBFromUrlScriptAndCreateLinks.js +7 -7
- package/scripts/cloning/deepCloneWBFromUrlScriptAndCreateLinks.js +6 -6
- package/scripts/cloning/setAdminsFromURL.js +5 -5
- package/scripts/cloning/setExternalIdsFromURL.js +3 -3
- package/scripts/countCommunity.js +11 -11
- package/scripts/countCommunityUsers.js +4 -4
- package/scripts/countDelayedNotifications.js +3 -3
- package/scripts/countGroup.js +11 -11
- package/scripts/countStuff.js +3 -3
- package/scripts/countUniqueVotersInAGroup.js +3 -3
- package/scripts/createInvitesAndShow.js +2 -2
- package/scripts/database/sync_database.js +2 -2
- package/scripts/database/sync_dev_database.js +3 -3
- package/scripts/debugNotifications.js +5 -5
- package/scripts/deleteAllNewsFeeds.js +2 -2
- package/scripts/deleteCategory.js +1 -1
- package/scripts/deleteOldAppActivities.js +5 -4
- package/scripts/deletePostContactDataForCommunity.js +5 -4
- package/scripts/destroy/destroy_all_but_one_domain.js +59 -59
- package/scripts/displayAuthorForPost.js +1 -1
- package/scripts/domains/createDomain.js +5 -4
- package/scripts/domains/importDomainsFromXls.js +7 -6
- package/scripts/endorsementFraudDetection/analyseEndorsementsForCommunity.js +2 -2
- package/scripts/endorsementFraudDetection/bulkDeleteDuplicateEndorsmentsFromUrl.js +9 -9
- package/scripts/exportAllStatusChanges.js +5 -5
- package/scripts/exportEndorsementsForCommunity.js +5 -5
- package/scripts/exportPointQualitiesForCommunity.js +5 -5
- package/scripts/exportPostsAndPointsForCommunity.js +9 -9
- package/scripts/exportPostsDataSetForDomain.js +12 -12
- package/scripts/exportPostsForGroup.js +7 -7
- package/scripts/exportRatingsForPost.js +2 -2
- package/scripts/exportUserEndorsementsWithUserAnalysis.js +6 -6
- package/scripts/exportUsersForCommunity.js +3 -3
- package/scripts/exportUsersForDomain.js +3 -3
- package/scripts/exportUsersForGroup.js +3 -3
- package/scripts/exports/ratingDistribution.js +6 -6
- package/scripts/exports/whoEndorsedWhatByCommunity.js +2 -2
- package/scripts/findUnusedClientImports.js +2 -2
- package/scripts/fixAllPostPointCounts.js +1 -1
- package/scripts/fixAnonNotificationsSettings.js +5 -5
- package/scripts/fixCountKopavogur.js +1 -1
- package/scripts/fixEndorsementsAfterCopyPostToGroup.js +10 -10
- package/scripts/fixExternalUserId.js +2 -2
- package/scripts/fixGroupAccess.js +3 -3
- package/scripts/fixGroupIdeasAndPointsCount.js +2 -2
- package/scripts/fixNotificationSettings.js +4 -4
- package/scripts/fixSurveyRadioBakedInSubCodes.js +6 -6
- package/scripts/fixWrongUserIdForStatusUpdates.js +6 -5
- package/scripts/gallery/exportGalleryData.js +2 -2
- package/scripts/gallery/importGalleryForCommunity.js +14 -14
- package/scripts/gallery/readJsonAndDownloadImagesVersion2.js +6 -6
- package/scripts/gallery/refreshAcApiPostIdsForCommunity.js +5 -5
- package/scripts/genderAnalysis.js +10 -10
- package/scripts/genderAnalysisByStatus.js +4 -4
- package/scripts/importAllLocalesFromLocalFolders.js +7 -7
- package/scripts/importDomain.js +131 -131
- package/scripts/keys/addOidcToDomain.cjs +10 -9
- package/scripts/landUseGame/export3Ddata.js +15 -15
- package/scripts/listLanguagesForGroup.js +6 -6
- package/scripts/loadTestCreateDummyContentForGroup.js +2 -2
- package/scripts/makeRecursiveMapData.js +4 -4
- package/scripts/mapping/community_map_csv.js +5 -5
- package/scripts/moveCommunityToDomain.js +3 -3
- package/scripts/moveGroupToCommunity.js +3 -3
- package/scripts/movePostToGroup.js +5 -5
- package/scripts/movePostsToGroupsRecountGroupFromUrl.js +6 -6
- package/scripts/oldMovePostToGroup.js +9 -9
- package/scripts/processCsvForPdfUrls.js +2 -2
- package/scripts/processCsvForTranslationAndToxicity.js +10 -10
- package/scripts/recount/recount_recursive_communities.js +6 -6
- package/scripts/recountALLCommunityGroupCounts.js +4 -4
- package/scripts/recountAll.js +3 -3
- package/scripts/recountCommunitesFromUrl.js +3 -3
- package/scripts/recountCommunity.js +2 -2
- package/scripts/recountGroup.js +5 -5
- package/scripts/recountGroupNoUserChange.js +5 -5
- package/scripts/resetAllEndorsementsForGroup.js +3 -3
- package/scripts/resetEnTranslationForGroup.js +5 -5
- package/scripts/setAdminOnAll.cjs +15 -14
- package/scripts/setDomainAdmin.cjs +7 -6
- package/scripts/setDomainLocales.js +2 -2
- package/scripts/setEarlQuestionIdOnGroup.cjs +5 -4
- package/scripts/setLanguageOnGroupCommunitesFromUrl.js +3 -3
- package/scripts/setMemberOfAll.js +14 -14
- package/scripts/setNewUserForContentOfCommunity.js +9 -9
- package/scripts/setOfficialStatusOnAllPostsForCommunity.js +1 -1
- package/scripts/setUserOnAll.js +14 -14
- package/scripts/showCategoryForGroup.js +1 -1
- package/scripts/showOldActivityTypes.js +3 -3
- package/scripts/showPostsMissingCategoryForGroup.js +2 -2
- package/scripts/showStatuses.js +4 -4
- package/scripts/showUniqueVotersInCommunity.js +4 -4
- package/scripts/showUserAgentsAndIpsForEmails.js +4 -4
- package/scripts/simpleExportForGroupsForCommunity.js +5 -5
- package/scripts/simpleExportForPointsForCommunity.js +5 -5
- package/scripts/simpleExportForPostsForCommunity.js +5 -5
- package/scripts/testForEndorsments.js +4 -4
- package/scripts/undeleteGroupAndAllContent.js +8 -8
- package/scripts/undeletePost.js +7 -7
- package/scripts/unlinkSsn.js +4 -4
- package/scripts/updateFromAlthingi.js +8 -8
- package/scripts/users/createUserAddDomain.js +6 -5
- package/scripts/users/importUsersForDomainsFromXls.js +4 -3
- package/scripts/users/listDomainUsersWithSsn.js +6 -5
- package/scripts/users/removeUserFromDomain.js +6 -5
- package/scripts/users/updatePasswordFromSsn.js +5 -4
- package/scripts/users/updateUserSsnFromEmail.js +5 -4
- package/services/controllers/activities.cjs +1 -1
- package/services/controllers/news_feeds.cjs +1 -1
- package/services/controllers/notifications.cjs +1 -1
- package/services/controllers/recommendations.cjs +1 -1
- package/services/engine/allOurIdeas/aiHelper.js +10 -9
- package/services/engine/analytics/export_anon_community_activities.js +3 -3
- package/services/engine/analytics/importer.js +10 -10
- package/services/engine/analytics/plausible/manager.cjs +4 -4
- package/services/engine/analytics/statsCalc.cjs +1 -1
- package/services/engine/analytics/utils.cjs +11 -10
- package/services/engine/marketing/campaign.cjs +1 -0
- package/services/engine/moderation/fraud/CreateFraudAuditReport.cjs +2 -1
- package/services/engine/moderation/fraud/FraudBase.cjs +3 -2
- package/services/engine/moderation/fraud/FraudDeleteBase.cjs +5 -4
- package/services/engine/moderation/fraud/FraudGetBase.cjs +2 -1
- package/services/engine/moderation/fraud/FraudGetEndorsements.cjs +2 -1
- package/services/engine/moderation/fraud/FraudGetPointQualities.cjs +2 -1
- package/services/engine/moderation/fraud/FraudGetPoints.cjs +2 -1
- package/services/engine/moderation/fraud/FraudGetPosts.cjs +2 -1
- package/services/engine/moderation/fraud/FraudGetRatings.cjs +2 -1
- package/services/engine/moderation/fraud/FraudScannerNotifier.cjs +10 -9
- package/services/engine/moderation/get_moderation_items.cjs +1 -1
- package/services/engine/moderation/image_labeling/ImageLabelingBase.cjs +1 -1
- package/services/engine/moderation/process_moderation_items.cjs +1 -1
- package/services/engine/moderation/toxicity_analysis.cjs +1 -1
- package/services/engine/news_feeds/generate_dynamically.cjs +1 -1
- package/services/engine/news_feeds/generate_from_notifications.cjs +1 -1
- package/services/engine/notifications/emails_utils.cjs +2 -2
- package/services/engine/notifications/generate_point_notifications.cjs +1 -1
- package/services/engine/notifications/generate_post_notifications.cjs +1 -1
- package/services/engine/notifications/process_delayed_notifications.cjs +38 -38
- package/services/engine/notifications/process_general_notifications.cjs +1 -0
- package/services/engine/old/exporters/categories_dataset.js +11 -11
- package/services/engine/old/exporters/sentiment_dataset.js +12 -12
- package/services/engine/recommendations/events_importer.cjs +5 -5
- package/services/engine/recommendations/events_manager.cjs +1 -1
- package/services/engine/reports/add_points_to_sheet.cjs +3 -2
- package/services/engine/reports/commonUtils.js +3 -2
- package/services/engine/reports/common_utils.cjs +8 -8
- package/services/engine/reports/docx_group_report.cjs +1 -1
- package/services/engine/reports/xlsAllOurIdeasExport.js +16 -15
- package/services/engine/reports/xls_community_users_report.cjs +2 -2
- package/services/engine/reports/xls_group_report.cjs +1 -1
- package/services/llms/baseChatBot.js +12 -11
- package/services/llms/imageGeneration/chatGptImageGenerator.js +3 -2
- package/services/llms/imageGeneration/collectionImageGenerator.js +7 -6
- package/services/llms/imageGeneration/dalleImageGenerator.js +6 -5
- package/services/llms/imageGeneration/fluxImageGenerator.js +5 -4
- package/services/llms/imageGeneration/imageProcessorService.js +2 -1
- package/services/llms/imageGeneration/imagenImageGenerator.js +8 -7
- package/services/llms/imageGeneration/s3Service.js +12 -11
- package/services/llms/llmTranslation.js +30 -29
- package/services/models/ac_activity.cjs +1 -1
- package/services/models/ac_notification.cjs +1 -1
- package/services/models/ac_translation_cache.cjs +11 -11
- package/services/scripts/analytics/setup_all_plausible_goals.cjs +3 -2
- package/services/scripts/fix_old_delayed_notifications.js +3 -3
- package/services/scripts/kue_status.js +11 -11
- package/services/scripts/kue_watch_stuck_jobs.js +6 -6
- package/services/scripts/translation_clear_language.js +21 -21
- package/services/scripts/translation_delete.js +4 -4
- package/services/scripts/translation_replace_text_from_url.js +4 -4
- package/services/scripts/translation_update.js +4 -4
- package/services/scripts/translations_list.js +5 -5
- package/services/utils/airbrake.cjs +2 -1
- package/services/utils/redisConnection.cjs +6 -5
- package/services/utils/translation_helpers.cjs +3 -2
- package/services/utils/updateAllLocalesFromEn.js +20 -19
- package/services/utils/updateLocaleFolders.js +7 -6
- package/services/workers/activity.cjs +1 -1
- package/services/workers/anonymizations.cjs +1 -1
- package/services/workers/bulk_status_update.cjs +2 -2
- package/services/workers/delayed_jobs.cjs +1 -1
- package/services/workers/deletions.cjs +1 -1
- package/services/workers/email.cjs +1 -1
- package/services/workers/fraud_management.cjs +3 -3
- package/services/workers/generativeAi.js +6 -5
- package/services/workers/main.cjs +1 -1
- package/services/workers/marketing.cjs +1 -1
- package/services/workers/moderation.cjs +1 -1
- package/services/workers/notification_delivery.cjs +1 -1
- package/services/workers/notification_news_feed.cjs +1 -1
- package/services/workers/queue.cjs +2 -2
- package/services/workers/recount.cjs +1 -1
- package/services/workers/reports.cjs +1 -1
- package/services/workers/similarities.cjs +4 -2
- package/services/workers/speech_to_text.cjs +1 -1
- package/utils/airbrake.cjs +2 -1
- package/utils/cjsCodeReview.js +7 -6
- package/utils/community_mapping_tools.cjs +3 -2
- package/utils/copy_utils.cjs +32 -31
- package/utils/export_utils.cjs +7 -7
- package/utils/generateDocumentation.js +10 -9
- package/utils/logger.cjs +2 -23
- package/utils/logger.d.cts +1 -1
- package/utils/loggerAirbrakeTransport.cjs +52 -0
- package/utils/loggerAirbrakeTransport.d.cts +15 -0
- package/utils/loggerAirbrakeTransportTs.d.ts +15 -0
- package/utils/loggerAirbrakeTransportTs.js +45 -0
- package/utils/loggerCore.cjs +29 -0
- package/utils/loggerCore.d.cts +2 -0
- package/utils/loggerCoreTs.d.ts +2 -0
- package/utils/loggerCoreTs.js +23 -0
- package/utils/loggerTs.d.ts +1 -2
- package/utils/loggerTs.js +2 -25
- package/utils/manifest_generator.cjs +1 -0
- package/utils/recount_utils.cjs +6 -5
- package/utils/seedModels.js +50 -49
- package/utils/sitemap_generator.cjs +4 -4
- package/utils/ypLanguages.js +2 -2
- package/webSockets.js +8 -7
- package/services/utils/logger.cjs +0 -25
- package/services/utils/logger.d.cts +0 -2
- package/src/agents/assistants/assistant.d.ts +0 -156
- package/src/controllers/audios.d.ts +0 -5
- package/src/controllers/categories.d.ts +0 -5
- package/src/controllers/communities.d.ts +0 -5
- package/src/controllers/domains.d.ts +0 -5
- package/src/controllers/groups.d.ts +0 -5
- package/src/controllers/images.d.ts +0 -5
- package/src/controllers/points.d.ts +0 -5
- package/src/controllers/posts.d.ts +0 -5
- package/src/controllers/ratings.d.ts +0 -5
- package/src/controllers/users.d.ts +0 -5
- package/src/controllers/videos.d.ts +0 -5
- package/src/models/index.d.ts +0 -84
- package/src/services/controllers/activities.d.ts +0 -5
- package/src/services/controllers/notifications.d.ts +0 -5
- package/src/utils/copy_utils.d.ts +0 -4
- package/src/utils/manifest_generator.d.ts +0 -18
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { OpenAI } from "openai";
|
|
2
|
+
import log from "../../utils/loggerTs.js";
|
|
2
3
|
const DEBUG = false;
|
|
3
4
|
const url = process.env.REDIS_MEMORY_URL ||
|
|
4
5
|
process.env.REDIS_URL ||
|
|
@@ -13,19 +14,19 @@ export class YpBaseChatBot {
|
|
|
13
14
|
loadMemory() {
|
|
14
15
|
return new Promise(async (resolve, reject) => {
|
|
15
16
|
try {
|
|
16
|
-
|
|
17
|
+
log.info("loadMemoryWithOwnership loadMemory: redisKey: ", this.redisKey);
|
|
17
18
|
const memoryString = await this.redis.get(this.redisKey);
|
|
18
19
|
if (memoryString) {
|
|
19
20
|
const memory = JSON.parse(memoryString);
|
|
20
21
|
resolve(memory);
|
|
21
22
|
}
|
|
22
23
|
else {
|
|
23
|
-
|
|
24
|
+
log.error("loadMemoryWithOwnership loadMemory: no memory found");
|
|
24
25
|
resolve(undefined);
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
28
|
catch (error) {
|
|
28
|
-
|
|
29
|
+
log.error("loadMemoryWithOwnership loadMemory: Can't load memory from redis", error);
|
|
29
30
|
resolve(undefined);
|
|
30
31
|
}
|
|
31
32
|
});
|
|
@@ -40,9 +41,9 @@ export class YpBaseChatBot {
|
|
|
40
41
|
this.wsClientId = wsClientId;
|
|
41
42
|
this.wsClientSocket = wsClients.get(this.wsClientId);
|
|
42
43
|
this.wsClients = wsClients;
|
|
43
|
-
|
|
44
|
+
log.info(`WebSockets: BaseChatBot constructor for ${this.wsClientId}`);
|
|
44
45
|
if (!this.wsClientSocket) {
|
|
45
|
-
|
|
46
|
+
log.error(`WebSockets: WS Client ${this.wsClientId} not found in streamWebSocketResponses`);
|
|
46
47
|
}
|
|
47
48
|
this.openaiClient = new OpenAI({
|
|
48
49
|
apiKey: process.env.OPENAI_API_KEY,
|
|
@@ -52,14 +53,14 @@ export class YpBaseChatBot {
|
|
|
52
53
|
if (this.memory) {
|
|
53
54
|
try {
|
|
54
55
|
await this.redis.set(this.redisKey, JSON.stringify(this.memory));
|
|
55
|
-
|
|
56
|
+
log.info(`Saved memory to redis: ${this.redisKey}`);
|
|
56
57
|
}
|
|
57
58
|
catch (error) {
|
|
58
|
-
|
|
59
|
+
log.info("Can't save memory to redis", error);
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
62
|
else {
|
|
62
|
-
|
|
63
|
+
log.error("Memory is not initialized");
|
|
63
64
|
}
|
|
64
65
|
}
|
|
65
66
|
renderSystemPrompt() {
|
|
@@ -102,7 +103,7 @@ export class YpBaseChatBot {
|
|
|
102
103
|
sendToClient(sender, message, type = "stream", uniqueToken = undefined, hiddenContextMessage = false) {
|
|
103
104
|
try {
|
|
104
105
|
if (process.env.WS_DEBUG) {
|
|
105
|
-
|
|
106
|
+
log.info(`sendToClient: ${JSON.stringify({ sender, type, message, hiddenContextMessage }, null, 2)}`);
|
|
106
107
|
}
|
|
107
108
|
this.wsClientSocket.send(JSON.stringify({
|
|
108
109
|
sender,
|
|
@@ -116,7 +117,7 @@ export class YpBaseChatBot {
|
|
|
116
117
|
this.lastSentToUserAt = new Date();
|
|
117
118
|
}
|
|
118
119
|
catch (error) {
|
|
119
|
-
|
|
120
|
+
log.error("Can't send message to client", error);
|
|
120
121
|
}
|
|
121
122
|
}
|
|
122
123
|
async streamWebSocketResponses(stream) {
|
|
@@ -138,7 +139,7 @@ export class YpBaseChatBot {
|
|
|
138
139
|
}
|
|
139
140
|
}
|
|
140
141
|
catch (error) {
|
|
141
|
-
|
|
142
|
+
log.error(error);
|
|
142
143
|
this.sendToClient("assistant", "There has been an error, please retry", "error");
|
|
143
144
|
reject();
|
|
144
145
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// chatGptImageGenerator.ts
|
|
2
2
|
import { OpenAI } from "openai";
|
|
3
|
+
import log from "../../../utils/loggerTs.js";
|
|
3
4
|
export class ChatGptImageGenerator {
|
|
4
5
|
constructor(openAiKey) {
|
|
5
6
|
this.maxRetryCount = 3;
|
|
@@ -35,7 +36,7 @@ export class ChatGptImageGenerator {
|
|
|
35
36
|
n: 1,
|
|
36
37
|
size,
|
|
37
38
|
});
|
|
38
|
-
|
|
39
|
+
log.info("res", JSON.stringify(res, null, 2));
|
|
39
40
|
const b64Json = res?.data?.[0]?.b64_json;
|
|
40
41
|
if (b64Json) {
|
|
41
42
|
// Assuming the image is a PNG, adjust if another format is expected
|
|
@@ -46,7 +47,7 @@ export class ChatGptImageGenerator {
|
|
|
46
47
|
catch (err) {
|
|
47
48
|
retryCount += 1;
|
|
48
49
|
if (retryCount >= this.maxRetryCount) {
|
|
49
|
-
|
|
50
|
+
log.error(`ChatGptImageGenerator failed after ${retryCount} attempts`, err);
|
|
50
51
|
return undefined;
|
|
51
52
|
}
|
|
52
53
|
// Exponential back-off – starts at 5 s and grows +5 s each retry
|
|
@@ -6,6 +6,7 @@ import { FluxImageGenerator } from "./fluxImageGenerator.js";
|
|
|
6
6
|
import { DalleImageGenerator } from "./dalleImageGenerator.js";
|
|
7
7
|
import { ImageProcessorService } from "./imageProcessorService.js";
|
|
8
8
|
import { S3Service } from "./s3Service.js";
|
|
9
|
+
import log from "../../../utils/loggerTs.js";
|
|
9
10
|
// Suppose these come from your codebase
|
|
10
11
|
import models from "../../../models/index.cjs";
|
|
11
12
|
import { ImagenImageGenerator } from "./imagenImageGenerator.js";
|
|
@@ -46,19 +47,19 @@ export class CollectionImageGenerator {
|
|
|
46
47
|
// Decide which generator to use
|
|
47
48
|
if (this.imagenImageGenerator) {
|
|
48
49
|
imageGenerator = this.imagenImageGenerator;
|
|
49
|
-
|
|
50
|
+
log.info("Using ImagenImageGenerator");
|
|
50
51
|
}
|
|
51
52
|
else if (this.fluxImageGenerator) {
|
|
52
53
|
imageGenerator = this.fluxImageGenerator;
|
|
53
|
-
|
|
54
|
+
log.info("Using FluxImageGenerator");
|
|
54
55
|
}
|
|
55
56
|
else if (process.env.USE_CHATGPT_IMAGE_GENERATOR) {
|
|
56
57
|
imageGenerator = this.chatGptImageGenerator;
|
|
57
|
-
|
|
58
|
+
log.info("Using ChatGptImageGenerator");
|
|
58
59
|
}
|
|
59
60
|
else {
|
|
60
61
|
imageGenerator = this.dalleImageGenerator;
|
|
61
|
-
|
|
62
|
+
log.info("Using DalleImageGenerator");
|
|
62
63
|
}
|
|
63
64
|
// 1) Generate image
|
|
64
65
|
const imageUrl = await imageGenerator.generateImageUrl(workPackage.prompt, workPackage.imageType);
|
|
@@ -77,11 +78,11 @@ export class CollectionImageGenerator {
|
|
|
77
78
|
}
|
|
78
79
|
const imageBuffer = Buffer.from(base64Data, "base64");
|
|
79
80
|
fs.writeFileSync(imageFilePath, imageBuffer);
|
|
80
|
-
|
|
81
|
+
log.debug("Data URI written to file successfully.");
|
|
81
82
|
}
|
|
82
83
|
else {
|
|
83
84
|
await this.imageProcessorService.downloadImage(imageUrl, imageFilePath, axios);
|
|
84
|
-
|
|
85
|
+
log.debug(fs.existsSync(imageFilePath)
|
|
85
86
|
? "File downloaded successfully."
|
|
86
87
|
: "File download failed.");
|
|
87
88
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AzureOpenAI, OpenAI } from "openai";
|
|
2
|
+
import log from "../../../utils/loggerTs.js";
|
|
2
3
|
export class DalleImageGenerator {
|
|
3
4
|
constructor(azureOpenaAiBase, azureOpenAiApiKey, azureDalleDeployment, openAiKey) {
|
|
4
5
|
this.maxRetryCount = 3;
|
|
@@ -61,15 +62,15 @@ export class DalleImageGenerator {
|
|
|
61
62
|
retrying = false;
|
|
62
63
|
}
|
|
63
64
|
else {
|
|
64
|
-
|
|
65
|
+
log.debug("Result: NONE");
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
68
|
catch (error) {
|
|
68
|
-
|
|
69
|
-
|
|
69
|
+
log.warn("Error generating image with DALL·E, retrying...");
|
|
70
|
+
log.warn(error.stack);
|
|
70
71
|
retryCount++;
|
|
71
72
|
const sleepingFor = 5000 + retryCount * 10000;
|
|
72
|
-
|
|
73
|
+
log.debug(`Sleeping for ${sleepingFor} milliseconds`);
|
|
73
74
|
await new Promise((resolve) => setTimeout(resolve, sleepingFor));
|
|
74
75
|
}
|
|
75
76
|
}
|
|
@@ -77,7 +78,7 @@ export class DalleImageGenerator {
|
|
|
77
78
|
return result.data[0].url;
|
|
78
79
|
}
|
|
79
80
|
else {
|
|
80
|
-
|
|
81
|
+
log.error(`Error generating image after ${retryCount} retries`);
|
|
81
82
|
return undefined;
|
|
82
83
|
}
|
|
83
84
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import Replicate from "replicate";
|
|
2
|
+
import log from "../../../utils/loggerTs.js";
|
|
2
3
|
export class FluxImageGenerator {
|
|
3
4
|
constructor(replicateApiKey, fluxProModelName) {
|
|
4
5
|
this.replicateApiKey = replicateApiKey;
|
|
@@ -33,16 +34,16 @@ export class FluxImageGenerator {
|
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
36
|
catch (error) {
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
log.warn("Error generating image with Flux, retrying...");
|
|
38
|
+
log.warn(error.stack);
|
|
38
39
|
retryCount++;
|
|
39
40
|
const sleepingFor = 5000 + retryCount * 10000;
|
|
40
|
-
|
|
41
|
+
log.debug(`Sleeping for ${sleepingFor} milliseconds`);
|
|
41
42
|
await new Promise((resolve) => setTimeout(resolve, sleepingFor));
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
45
|
if (!result) {
|
|
45
|
-
|
|
46
|
+
log.error(`Error generating image after ${retryCount} retries`);
|
|
46
47
|
}
|
|
47
48
|
return undefined;
|
|
48
49
|
}
|
|
@@ -2,6 +2,7 @@ import fs from "fs";
|
|
|
2
2
|
import path from "path";
|
|
3
3
|
import sharp from "sharp";
|
|
4
4
|
import { v4 as uuidv4 } from "uuid";
|
|
5
|
+
import log from "../../../utils/loggerTs.js";
|
|
5
6
|
export class ImageProcessorService {
|
|
6
7
|
constructor() {
|
|
7
8
|
this.validFormats = ["jpeg", "png", "webp", "gif", "tiff", "avif", "svg"];
|
|
@@ -54,7 +55,7 @@ export class ImageProcessorService {
|
|
|
54
55
|
return resizedImageFilePath;
|
|
55
56
|
}
|
|
56
57
|
catch (err) {
|
|
57
|
-
|
|
58
|
+
log.error("Error resizing image:", err);
|
|
58
59
|
if (fs.existsSync(resizedImageFilePath)) {
|
|
59
60
|
fs.unlinkSync(resizedImageFilePath);
|
|
60
61
|
}
|
|
@@ -3,6 +3,7 @@ import path from "path";
|
|
|
3
3
|
import { v4 as uuidv4 } from "uuid";
|
|
4
4
|
import { PredictionServiceClient } from "@google-cloud/aiplatform";
|
|
5
5
|
import { helpers } from "@google-cloud/aiplatform";
|
|
6
|
+
import log from "../../../utils/loggerTs.js";
|
|
6
7
|
export class ImagenImageGenerator {
|
|
7
8
|
constructor(s3Service) {
|
|
8
9
|
this.s3Service = s3Service;
|
|
@@ -14,10 +15,10 @@ export class ImagenImageGenerator {
|
|
|
14
15
|
this.endpoint = `projects/${this.projectId}/locations/${this.location}/publishers/google/models/imagen-3.0-generate-002`;
|
|
15
16
|
this.s3Bucket = process.env.S3_BUCKET || "";
|
|
16
17
|
if (!this.projectId) {
|
|
17
|
-
|
|
18
|
+
log.warn("Warning: GOOGLE_CLOUD_PROJECT_ID is not set. Vertex AI calls may fail.");
|
|
18
19
|
}
|
|
19
20
|
if (!this.s3Bucket) {
|
|
20
|
-
|
|
21
|
+
log.warn("Warning: S3_BUCKET is not set. Image upload may fail.");
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
24
|
/**
|
|
@@ -61,7 +62,7 @@ export class ImagenImageGenerator {
|
|
|
61
62
|
const [response] = await predictionServiceClient.predict(request);
|
|
62
63
|
const predictions = response.predictions;
|
|
63
64
|
if (!predictions || predictions.length === 0) {
|
|
64
|
-
|
|
65
|
+
log.warn("No image was generated. Check the request parameters and prompt.");
|
|
65
66
|
}
|
|
66
67
|
else {
|
|
67
68
|
// 4) Extract base64 data from the first prediction
|
|
@@ -87,19 +88,19 @@ export class ImagenImageGenerator {
|
|
|
87
88
|
}
|
|
88
89
|
}
|
|
89
90
|
catch (error) {
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
log.warn("Error generating image with Vertex AI Imagen. Will retry...");
|
|
92
|
+
log.warn(error?.message || error);
|
|
92
93
|
}
|
|
93
94
|
// Retry logic
|
|
94
95
|
if (!finalUrl) {
|
|
95
96
|
retryCount++;
|
|
96
97
|
const sleepingFor = 5000 + retryCount * 10000;
|
|
97
|
-
|
|
98
|
+
log.debug(`Sleeping for ${sleepingFor} ms before retry #${retryCount}...`);
|
|
98
99
|
await new Promise((resolve) => setTimeout(resolve, sleepingFor));
|
|
99
100
|
}
|
|
100
101
|
}
|
|
101
102
|
if (!finalUrl) {
|
|
102
|
-
|
|
103
|
+
log.error(`Failed to generate Imagen after ${retryCount} retries.`);
|
|
103
104
|
return undefined;
|
|
104
105
|
}
|
|
105
106
|
return finalUrl;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import AWS from "aws-sdk";
|
|
2
2
|
import fs from "fs";
|
|
3
3
|
import axios from "axios";
|
|
4
|
+
import log from "../../../utils/loggerTs.js";
|
|
4
5
|
export class S3Service {
|
|
5
6
|
constructor(cloudflareApiKey, cloudflareZoneId) {
|
|
6
7
|
this.cloudflareApiKey = cloudflareApiKey;
|
|
@@ -38,17 +39,17 @@ export class S3Service {
|
|
|
38
39
|
Key: key,
|
|
39
40
|
ACL: "private",
|
|
40
41
|
};
|
|
41
|
-
|
|
42
|
+
log.info(`Disabling/Deleting Key from S3: ${JSON.stringify(params)}`);
|
|
42
43
|
return new Promise((resolve, reject) => {
|
|
43
44
|
s3.putObjectAcl(params, (err, data) => {
|
|
44
45
|
if (err) {
|
|
45
|
-
|
|
46
|
+
log.error(`Error deleting image from S3: ${err}`);
|
|
46
47
|
reject(err);
|
|
47
48
|
}
|
|
48
49
|
else {
|
|
49
|
-
|
|
50
|
+
log.info(`Deleted image from S3: ${imageUrl}`, data);
|
|
50
51
|
if (this.cloudflareApiKey && this.cloudflareZoneId) {
|
|
51
|
-
|
|
52
|
+
log.info("Purging Cloudflare cache for image:", imageUrl);
|
|
52
53
|
axios
|
|
53
54
|
.post(`https://api.cloudflare.com/client/v4/zones/${this.cloudflareZoneId}/purge_cache`, { files: [imageUrl] }, {
|
|
54
55
|
headers: {
|
|
@@ -57,20 +58,20 @@ export class S3Service {
|
|
|
57
58
|
},
|
|
58
59
|
})
|
|
59
60
|
.then((response) => {
|
|
60
|
-
|
|
61
|
+
log.info("Cloudflare cache purged:", response.data);
|
|
61
62
|
resolve(data);
|
|
62
63
|
})
|
|
63
64
|
.catch((error) => {
|
|
64
65
|
if (error.response) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
log.error("Error purging Cloudflare cache:", error.response.data);
|
|
67
|
+
log.error("Status code:", error.response.status);
|
|
68
|
+
log.error("Headers:", error.response.headers);
|
|
68
69
|
}
|
|
69
70
|
else if (error.request) {
|
|
70
|
-
|
|
71
|
+
log.error("No response received:", error.request);
|
|
71
72
|
}
|
|
72
73
|
else {
|
|
73
|
-
|
|
74
|
+
log.error("Error setting up request:", error.message);
|
|
74
75
|
}
|
|
75
76
|
resolve(data);
|
|
76
77
|
});
|
|
@@ -104,7 +105,7 @@ export class S3Service {
|
|
|
104
105
|
async deleteMediaFormatsUrls(formats) {
|
|
105
106
|
for (const url of formats) {
|
|
106
107
|
await this.deleteS3Url(url);
|
|
107
|
-
|
|
108
|
+
log.info(`Deleted image from S3: ${url}`);
|
|
108
109
|
}
|
|
109
110
|
}
|
|
110
111
|
}
|
|
@@ -2,6 +2,7 @@ import { jsonrepair } from "jsonrepair";
|
|
|
2
2
|
import { OpenAI } from "openai";
|
|
3
3
|
import { YpLanguages } from "../../utils/ypLanguages.js";
|
|
4
4
|
import * as cheerio from "cheerio";
|
|
5
|
+
import log from "../../utils/loggerTs.js";
|
|
5
6
|
export class YpLlmTranslation {
|
|
6
7
|
constructor() {
|
|
7
8
|
this.modelName = "gpt-4o";
|
|
@@ -246,7 +247,7 @@ export class YpLlmTranslation {
|
|
|
246
247
|
const moderationResponse = await this.openaiClient.moderations.create({
|
|
247
248
|
input: content,
|
|
248
249
|
});
|
|
249
|
-
|
|
250
|
+
log.info("Moderation response:", moderationResponse);
|
|
250
251
|
const flagged = moderationResponse.results[0].flagged;
|
|
251
252
|
return flagged;
|
|
252
253
|
}
|
|
@@ -254,7 +255,7 @@ export class YpLlmTranslation {
|
|
|
254
255
|
try {
|
|
255
256
|
const originalStrings = this.extractHtmlStrings(htmlToTranslate);
|
|
256
257
|
if (originalStrings.length === 0) {
|
|
257
|
-
|
|
258
|
+
log.warn("No HTML strings to translate");
|
|
258
259
|
return htmlToTranslate;
|
|
259
260
|
}
|
|
260
261
|
const batchSize = 10;
|
|
@@ -266,7 +267,7 @@ export class YpLlmTranslation {
|
|
|
266
267
|
translatedStrings.push(...translatedBatch);
|
|
267
268
|
}
|
|
268
269
|
else {
|
|
269
|
-
|
|
270
|
+
log.error("Failed to translate batch:", batch);
|
|
270
271
|
return undefined;
|
|
271
272
|
}
|
|
272
273
|
}
|
|
@@ -275,27 +276,27 @@ export class YpLlmTranslation {
|
|
|
275
276
|
return translatedHtml;
|
|
276
277
|
}
|
|
277
278
|
catch (error) {
|
|
278
|
-
|
|
279
|
+
log.error("Error in getHtmlTranslation:", error);
|
|
279
280
|
return undefined;
|
|
280
281
|
}
|
|
281
282
|
}
|
|
282
283
|
async getOneTranslation(languageIsoCode, stringToTranslate) {
|
|
283
284
|
try {
|
|
284
|
-
|
|
285
|
+
log.info(`getOneTranslation: ${stringToTranslate} ${languageIsoCode}`);
|
|
285
286
|
const languageName = YpLanguages.getEnglishName(languageIsoCode) || languageIsoCode;
|
|
286
287
|
return (await this.callSimpleLlm(languageName, stringToTranslate, false, this.renderOneTranslationSystemMessage, this.renderOneTranslationUserMessage));
|
|
287
288
|
}
|
|
288
289
|
catch (error) {
|
|
289
|
-
|
|
290
|
+
log.error("Error in getAnswerIdeas:", error);
|
|
290
291
|
return undefined;
|
|
291
292
|
}
|
|
292
293
|
}
|
|
293
294
|
async getListTranslation(languageIsoCode, stringsToTranslate) {
|
|
294
295
|
try {
|
|
295
|
-
|
|
296
|
+
log.info(`getOneTranslation: ${languageIsoCode}`);
|
|
296
297
|
const languageName = YpLanguages.getEnglishName(languageIsoCode) || languageIsoCode;
|
|
297
298
|
if (await this.getModerationFlag(stringsToTranslate.join(" "))) {
|
|
298
|
-
|
|
299
|
+
log.error("Flagged:", stringsToTranslate);
|
|
299
300
|
return null;
|
|
300
301
|
}
|
|
301
302
|
else {
|
|
@@ -303,16 +304,16 @@ export class YpLlmTranslation {
|
|
|
303
304
|
}
|
|
304
305
|
}
|
|
305
306
|
catch (error) {
|
|
306
|
-
|
|
307
|
+
log.error("Error in getAnswerIdeas:", error);
|
|
307
308
|
return undefined;
|
|
308
309
|
}
|
|
309
310
|
}
|
|
310
311
|
async getChoiceTranslation(languageIsoCode, answerContent, maxCharactersInTranslation = 140) {
|
|
311
312
|
try {
|
|
312
|
-
|
|
313
|
+
log.info(`async getChoiceTranslation: ${answerContent}`);
|
|
313
314
|
const languageName = YpLanguages.getEnglishName(languageIsoCode) || languageIsoCode;
|
|
314
315
|
if (await this.getModerationFlag(answerContent)) {
|
|
315
|
-
|
|
316
|
+
log.error("Flagged:", answerContent);
|
|
316
317
|
return null;
|
|
317
318
|
}
|
|
318
319
|
else {
|
|
@@ -326,16 +327,16 @@ export class YpLlmTranslation {
|
|
|
326
327
|
}
|
|
327
328
|
}
|
|
328
329
|
catch (error) {
|
|
329
|
-
|
|
330
|
+
log.error("Error in getAnswerIdeas:", error);
|
|
330
331
|
return undefined;
|
|
331
332
|
}
|
|
332
333
|
}
|
|
333
334
|
async getQuestionTranslation(languageIsoCode, question, maxCharactersInTranslation = 300) {
|
|
334
335
|
try {
|
|
335
|
-
|
|
336
|
+
log.info(`getQuestionTranslation: ${question} ${languageIsoCode}`);
|
|
336
337
|
const languageName = YpLanguages.getEnglishName(languageIsoCode) || languageIsoCode;
|
|
337
338
|
if (await this.getModerationFlag(question)) {
|
|
338
|
-
|
|
339
|
+
log.error("Flagged:", question);
|
|
339
340
|
return null;
|
|
340
341
|
}
|
|
341
342
|
else {
|
|
@@ -349,7 +350,7 @@ export class YpLlmTranslation {
|
|
|
349
350
|
}
|
|
350
351
|
}
|
|
351
352
|
catch (error) {
|
|
352
|
-
|
|
353
|
+
log.error("Error in getAnswerIdeas:", error);
|
|
353
354
|
return undefined;
|
|
354
355
|
}
|
|
355
356
|
}
|
|
@@ -369,16 +370,16 @@ export class YpLlmTranslation {
|
|
|
369
370
|
let running = true;
|
|
370
371
|
while (running) {
|
|
371
372
|
try {
|
|
372
|
-
|
|
373
|
+
log.info(`Messages ${retries}:`, messages);
|
|
373
374
|
const results = await this.openaiClient.chat.completions.create({
|
|
374
375
|
model: this.modelName,
|
|
375
376
|
messages,
|
|
376
377
|
max_tokens: this.maxTokens,
|
|
377
378
|
temperature: this.temperature,
|
|
378
379
|
});
|
|
379
|
-
|
|
380
|
+
log.info("Results:", results);
|
|
380
381
|
let llmOutput = results.choices[0].message.content;
|
|
381
|
-
|
|
382
|
+
log.info("Return text:", llmOutput);
|
|
382
383
|
if (parseJson) {
|
|
383
384
|
if (llmOutput) {
|
|
384
385
|
llmOutput = llmOutput.replace(/```json/g, "");
|
|
@@ -386,7 +387,7 @@ export class YpLlmTranslation {
|
|
|
386
387
|
return JSON.parse(jsonrepair(llmOutput));
|
|
387
388
|
}
|
|
388
389
|
{
|
|
389
|
-
|
|
390
|
+
log.error("No content in response");
|
|
390
391
|
return undefined;
|
|
391
392
|
}
|
|
392
393
|
}
|
|
@@ -395,7 +396,7 @@ export class YpLlmTranslation {
|
|
|
395
396
|
}
|
|
396
397
|
}
|
|
397
398
|
catch (error) {
|
|
398
|
-
|
|
399
|
+
log.error("Error in getChoiceTranslation:", error);
|
|
399
400
|
retries++;
|
|
400
401
|
if (retries > maxRetries) {
|
|
401
402
|
running = false;
|
|
@@ -405,7 +406,7 @@ export class YpLlmTranslation {
|
|
|
405
406
|
}
|
|
406
407
|
}
|
|
407
408
|
async callSchemaLlm(jsonInSchema, jsonOutSchema, lengthInfo, languageName, question, toTranslate, maxCharactersInTranslation, systemRenderer, userRenderer) {
|
|
408
|
-
|
|
409
|
+
log.info("Call schema LLM:", jsonInSchema, jsonOutSchema, lengthInfo, languageName, question, toTranslate, maxCharactersInTranslation);
|
|
409
410
|
const messages = [
|
|
410
411
|
{
|
|
411
412
|
role: "system",
|
|
@@ -421,16 +422,16 @@ export class YpLlmTranslation {
|
|
|
421
422
|
let running = true;
|
|
422
423
|
while (running) {
|
|
423
424
|
try {
|
|
424
|
-
|
|
425
|
+
log.info(`Messages ${retries}:`, messages);
|
|
425
426
|
const results = await this.openaiClient.chat.completions.create({
|
|
426
427
|
model: this.modelName,
|
|
427
428
|
messages,
|
|
428
429
|
max_tokens: this.maxTokens,
|
|
429
430
|
temperature: this.temperature,
|
|
430
431
|
});
|
|
431
|
-
|
|
432
|
+
log.info("Results:", results);
|
|
432
433
|
let textJson = results.choices[0].message.content;
|
|
433
|
-
|
|
434
|
+
log.info("Text JSON:", textJson);
|
|
434
435
|
if (textJson) {
|
|
435
436
|
textJson = textJson.replace(/```json/g, "");
|
|
436
437
|
textJson = textJson.replace(/```/g, "");
|
|
@@ -439,28 +440,28 @@ export class YpLlmTranslation {
|
|
|
439
440
|
if (maxCharactersInTranslation &&
|
|
440
441
|
translationData.translatedContent.length >
|
|
441
442
|
maxCharactersInTranslation) {
|
|
442
|
-
|
|
443
|
+
log.info("Translation too long retrying:", translationData.translatedContent);
|
|
443
444
|
messages[0].content = this.renderSchemaTryAgainSystemMessage(jsonInSchema, jsonOutSchema, lengthInfo, translationData.translatedContent);
|
|
444
445
|
throw new Error("Translation too long");
|
|
445
446
|
}
|
|
446
447
|
running = false;
|
|
447
|
-
|
|
448
|
+
log.info("Return text " + translationData.translatedContent);
|
|
448
449
|
return translationData.translatedContent;
|
|
449
450
|
}
|
|
450
451
|
else {
|
|
451
452
|
this.temperature = Math.random() * 0.99;
|
|
452
|
-
|
|
453
|
+
log.info("No content in response. Temperature set to: " + this.temperature);
|
|
453
454
|
throw new Error("No content in response");
|
|
454
455
|
}
|
|
455
456
|
}
|
|
456
457
|
else {
|
|
457
458
|
this.temperature = Math.random() * 0.99;
|
|
458
|
-
|
|
459
|
+
log.info("No content in response. Temperature set to:" + this.temperature);
|
|
459
460
|
throw new Error("No content in response");
|
|
460
461
|
}
|
|
461
462
|
}
|
|
462
463
|
catch (error) {
|
|
463
|
-
|
|
464
|
+
log.error("Error in callSchemaLlm:", error);
|
|
464
465
|
retries++;
|
|
465
466
|
if (retries > maxRetries) {
|
|
466
467
|
running = false;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
const log = require('
|
|
2
|
+
const log = require('../../utils/logger.cjs');
|
|
3
3
|
const queue = require('../workers/queue.cjs');
|
|
4
4
|
const toJson = require('../utils/to_json.cjs');
|
|
5
5
|
const commonIndexForActivitiesAndNewsFeeds = require('../engine/news_feeds/activity_and_item_index_definitions.cjs').commonIndexForActivitiesAndNewsFeeds;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const async = require("async");
|
|
3
|
-
const log = require('
|
|
3
|
+
const log = require('../../utils/logger.cjs');
|
|
4
4
|
const toJson = require('../utils/to_json.cjs');
|
|
5
5
|
const _ = require('lodash');
|
|
6
6
|
const queue = require('../workers/queue.cjs');
|