Skip to content

Commit

Permalink
🔧 fix: Correct Properties Passed to getResponseSender, Catch OpenAI E…
Browse files Browse the repository at this point in the history
…rrors (danny-avila#1244)

* fix: attempt to catch more errors, especially when generation started

* fix: pass the right properties to getResponseSender

* chore: Update .eslintrc.js and fix sendEmail.js linting errors
  • Loading branch information
danny-avila authored Nov 29, 2023
1 parent 0379066 commit ad16e55
Show file tree
Hide file tree
Showing 10 changed files with 22 additions and 15 deletions.
3 changes: 3 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ module.exports = {
'e2e/playwright-report/**/*',
'packages/data-provider/types/**/*',
'packages/data-provider/dist/**/*',
'data-node/**/*',
'meili_data/**/*',
'node_modules/**/*',
],
parser: '@typescript-eslint/parser',
parserOptions: {
Expand Down
3 changes: 3 additions & 0 deletions api/app/clients/OpenAIClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -829,9 +829,12 @@ ${convo}
return '';
}
if (
err?.message?.includes('stream ended') ||
err?.message?.includes('The server had an error processing your request') ||
err?.message?.includes('missing finish_reason') ||
(err instanceof OpenAI.OpenAIError && err?.message?.includes('missing finish_reason'))
) {
console.error(err);
await abortController.abortCompletion();
return intermediateReply;
} else if (err instanceof OpenAI.APIError) {
Expand Down
8 changes: 4 additions & 4 deletions api/server/middleware/abortMiddleware.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
const { sendMessage, sendError, countTokens, isEnabled } = require('../utils');
const { saveMessage, getConvo, getConvoTitle } = require('../../models');
const clearPendingReq = require('../../cache/clearPendingReq');
const spendTokens = require('../../models/spendTokens');
const { sendMessage, sendError, countTokens, isEnabled } = require('~/server/utils');
const { saveMessage, getConvo, getConvoTitle } = require('~/models');
const clearPendingReq = require('~/cache/clearPendingReq');
const abortControllers = require('./abortControllers');
const spendTokens = require('~/models/spendTokens');

async function abortMessage(req, res) {
const { abortKey } = req.body;
Expand Down
2 changes: 1 addition & 1 deletion api/server/routes/ask/anthropic.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ router.post('/', validateEndpoint, buildEndpointOption, setHeaders, async (req,
let responseMessageId;
let lastSavedTimestamp = 0;
let saveDelay = 100;
const sender = getResponseSender(endpointOption);
const sender = getResponseSender({ ...endpointOption, model: endpointOption.modelOptions.model });
const user = req.user.id;

const getReqData = (data = {}) => {
Expand Down
2 changes: 1 addition & 1 deletion api/server/routes/ask/gptPlugins.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ router.post('/', validateEndpoint, buildEndpointOption, setHeaders, async (req,
let responseMessageId;
let lastSavedTimestamp = 0;
let saveDelay = 100;
const sender = getResponseSender(endpointOption);
const sender = getResponseSender({ ...endpointOption, model: endpointOption.modelOptions.model });
const newConvo = !conversationId;
const user = req.user.id;

Expand Down
2 changes: 1 addition & 1 deletion api/server/routes/ask/openAI.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ router.post('/', validateEndpoint, buildEndpointOption, setHeaders, async (req,
let responseMessageId;
let lastSavedTimestamp = 0;
let saveDelay = 100;
const sender = getResponseSender(endpointOption);
const sender = getResponseSender({ ...endpointOption, model: endpointOption.modelOptions.model });
const newConvo = !conversationId;
const user = req.user.id;

Expand Down
2 changes: 1 addition & 1 deletion api/server/routes/edit/anthropic.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ router.post('/', validateEndpoint, buildEndpointOption, setHeaders, async (req,
let promptTokens;
let lastSavedTimestamp = 0;
let saveDelay = 100;
const sender = getResponseSender(endpointOption);
const sender = getResponseSender({ ...endpointOption, model: endpointOption.modelOptions.model });
const userMessageId = parentMessageId;
const user = req.user.id;

Expand Down
2 changes: 1 addition & 1 deletion api/server/routes/edit/gptPlugins.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ router.post('/', validateEndpoint, buildEndpointOption, setHeaders, async (req,
let promptTokens;
let lastSavedTimestamp = 0;
let saveDelay = 100;
const sender = getResponseSender(endpointOption);
const sender = getResponseSender({ ...endpointOption, model: endpointOption.modelOptions.model });
const userMessageId = parentMessageId;
const user = req.user.id;

Expand Down
2 changes: 1 addition & 1 deletion api/server/routes/edit/openAI.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ router.post('/', validateEndpoint, buildEndpointOption, setHeaders, async (req,
let promptTokens;
let lastSavedTimestamp = 0;
let saveDelay = 100;
const sender = getResponseSender(endpointOption);
const sender = getResponseSender({ ...endpointOption, model: endpointOption.modelOptions.model });
const userMessageId = parentMessageId;
const user = req.user.id;

Expand Down
11 changes: 6 additions & 5 deletions api/server/utils/sendEmail.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,18 @@ const sendEmail = async (email, subject, payload, template) => {
try {
const transporterOptions = {
// Use STARTTLS by default instead of obligatory TLS
secure: process.env.EMAIL_ENCRYPTION === "tls",
secure: process.env.EMAIL_ENCRYPTION === 'tls',
// If explicit STARTTLS is set, require it when connecting
requireTls: process.env.EMAIL_ENCRYPTION === "starttls",
requireTls: process.env.EMAIL_ENCRYPTION === 'starttls',
tls: {
// Whether to accept unsigned certificates
rejectUnauthorized: process.env.EMAIL_ALLOW_SELFSIGNED === "true"
rejectUnauthorized: process.env.EMAIL_ALLOW_SELFSIGNED === 'true',
},
auth: {
user: process.env.EMAIL_USERNAME,
pass: process.env.EMAIL_PASSWORD,
},
}
};

if (process.env.EMAIL_ENCRYPTION_HOSTNAME) {
// Check the certificate against this name explicitly
Expand All @@ -40,7 +40,8 @@ const sendEmail = async (email, subject, payload, template) => {
const options = () => {
return {
// Header address should contain name-addr
from: `"${process.env.EMAIL_FROM_NAME || process.env.APP_TITLE}"` +
from:
`"${process.env.EMAIL_FROM_NAME || process.env.APP_TITLE}"` +
`<${process.env.EMAIL_FROM}>`,
to: `"${payload.name}" <${email}>`,
envelope: {
Expand Down

0 comments on commit ad16e55

Please sign in to comment.