🛠️ fix: Error Message Parsing and ChatOpenAI credentials (#1482)

* refactor(createLLM): ensure ChatOpenAI class always uses client-defined openAIApiKey; move typedefs to main def file

* refactor(useSSE): improve error message parsing in error handler
This commit is contained in:
Danny Avila 2024-01-03 14:26:13 -05:00 committed by GitHub
parent d6d3d2ba13
commit 4befee829b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 47 additions and 35 deletions

View file

@ -2,38 +2,6 @@ const { ChatOpenAI } = require('langchain/chat_models/openai');
const { sanitizeModelName } = require('../../../utils'); const { sanitizeModelName } = require('../../../utils');
const { isEnabled } = require('../../../server/utils'); const { isEnabled } = require('../../../server/utils');
/**
* @typedef {Object} ModelOptions
* @property {string} modelName - The name of the model.
* @property {number} [temperature] - The temperature setting for the model.
* @property {number} [presence_penalty] - The presence penalty setting.
* @property {number} [frequency_penalty] - The frequency penalty setting.
* @property {number} [max_tokens] - The maximum number of tokens to generate.
*/
/**
* @typedef {Object} ConfigOptions
* @property {string} [basePath] - The base path for the API requests.
* @property {Object} [baseOptions] - Base options for the API requests, including headers.
* @property {Object} [httpAgent] - The HTTP agent for the request.
* @property {Object} [httpsAgent] - The HTTPS agent for the request.
*/
/**
* @typedef {Object} Callbacks
* @property {Function} [handleChatModelStart] - A callback function for handleChatModelStart
* @property {Function} [handleLLMEnd] - A callback function for handleLLMEnd
* @property {Function} [handleLLMError] - A callback function for handleLLMError
*/
/**
* @typedef {Object} AzureOptions
* @property {string} [azureOpenAIApiKey] - The Azure OpenAI API key.
* @property {string} [azureOpenAIApiInstanceName] - The Azure OpenAI API instance name.
* @property {string} [azureOpenAIApiDeploymentName] - The Azure OpenAI API deployment name.
* @property {string} [azureOpenAIApiVersion] - The Azure OpenAI API version.
*/
/** /**
* Creates a new instance of a language model (LLM) for chat interactions. * Creates a new instance of a language model (LLM) for chat interactions.
* *
@ -96,6 +64,7 @@ function createLLM({
configuration, configuration,
...azureOptions, ...azureOptions,
...modelOptions, ...modelOptions,
...credentials,
callbacks, callbacks,
}, },
configOptions, configOptions,

View file

@ -337,3 +337,39 @@
* @property {number} order - The order of the endpoint. * @property {number} order - The order of the endpoint.
* @memberof typedefs * @memberof typedefs
*/ */
/**
* @typedef {Object} ModelOptions
* @property {string} modelName - The name of the model.
* @property {number} [temperature] - The temperature setting for the model.
* @property {number} [presence_penalty] - The presence penalty setting.
* @property {number} [frequency_penalty] - The frequency penalty setting.
* @property {number} [max_tokens] - The maximum number of tokens to generate.
* @memberof typedefs
*/
/**
* @typedef {Object} ConfigOptions
* @property {string} [basePath] - The base path for the API requests.
* @property {Object} [baseOptions] - Base options for the API requests, including headers.
* @property {Object} [httpAgent] - The HTTP agent for the request.
* @property {Object} [httpsAgent] - The HTTPS agent for the request.
* @memberof typedefs
*/
/**
* @typedef {Object} Callbacks
* @property {Function} [handleChatModelStart] - A callback function for handleChatModelStart
* @property {Function} [handleLLMEnd] - A callback function for handleLLMEnd
* @property {Function} [handleLLMError] - A callback function for handleLLMError
* @memberof typedefs
*/
/**
* @typedef {Object} AzureOptions
* @property {string} [azureOpenAIApiKey] - The Azure OpenAI API key.
* @property {string} [azureOpenAIApiInstanceName] - The Azure OpenAI API instance name.
* @property {string} [azureOpenAIApiDeploymentName] - The Azure OpenAI API deployment name.
* @property {string} [azureOpenAIApiVersion] - The Azure OpenAI API version.
* @memberof typedefs
*/

View file

@ -209,16 +209,23 @@ export default function useSSE(submission: TSubmission | null, index = 0) {
}; };
const errorHandler = ({ data, submission }: { data?: TResData; submission: TSubmission }) => { const errorHandler = ({ data, submission }: { data?: TResData; submission: TSubmission }) => {
const { messages, message } = submission; const { messages, message, initialResponse } = submission;
const conversationId = message?.conversationId ?? submission?.conversationId; const conversationId = message?.conversationId ?? submission?.conversationId;
const parseErrorResponse = (data: TResData | Partial<TMessage>) => { const parseErrorResponse = (data: TResData | Partial<TMessage>) => {
const metadata = data['responseMessage'] ?? data; const metadata = data['responseMessage'] ?? data;
return tMessageSchema.parse({ const errorMessage = {
...initialResponse,
...metadata, ...metadata,
error: true, error: true,
parentMessageId: message?.messageId, parentMessageId: message?.messageId,
}); };
if (!errorMessage.messageId) {
errorMessage.messageId = v4();
}
return tMessageSchema.parse(errorMessage);
}; };
if (!data) { if (!data) {