fix: Update BaseChatModel import checks for MistralAI compatibility (#8527)

Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>
This commit is contained in:
oleg
2024-02-05 16:09:23 +01:00
committed by GitHub
parent b62c1d7c41
commit c8b8379015
5 changed files with 18 additions and 11 deletions

View File

@@ -6,24 +6,21 @@ import {
} from 'n8n-workflow';
import { initializeAgentExecutorWithOptions } from 'langchain/agents';
import { BaseChatModel } from 'langchain/chat_models/base';
import type { Tool } from 'langchain/tools';
import type { BaseChatMemory } from 'langchain/memory';
import type { BaseOutputParser } from 'langchain/schema/output_parser';
import { PromptTemplate } from 'langchain/prompts';
import { CombiningOutputParser } from 'langchain/output_parsers';
import { isChatInstance } from '../../../../../utils/helpers';
export async function conversationalAgentExecute(
this: IExecuteFunctions,
): Promise<INodeExecutionData[][]> {
this.logger.verbose('Executing Conversational Agent');
const model = (await this.getInputConnectionData(
NodeConnectionType.AiLanguageModel,
0,
)) as BaseChatModel;
const model = await this.getInputConnectionData(NodeConnectionType.AiLanguageModel, 0);
if (!(model instanceof BaseChatModel)) {
if (!isChatInstance(model)) {
throw new NodeOperationError(this.getNode(), 'Conversational Agent requires Chat Model');
}

View File

@@ -11,7 +11,8 @@ import type { Tool } from 'langchain/tools';
import type { BaseOutputParser } from 'langchain/schema/output_parser';
import { PromptTemplate } from 'langchain/prompts';
import { CombiningOutputParser } from 'langchain/output_parsers';
import { BaseChatModel } from 'langchain/chat_models/base';
import type { BaseChatModel } from 'langchain/chat_models/base';
import { isChatInstance } from '../../../../../utils/helpers';
export async function reActAgentAgentExecute(
this: IExecuteFunctions,
@@ -38,7 +39,7 @@ export async function reActAgentAgentExecute(
};
let agent: ChatAgent | ZeroShotAgent;
if (model instanceof BaseChatModel) {
if (isChatInstance(model)) {
agent = ChatAgent.fromLLMAndTools(model, tools, {
prefix: options.prefix,
suffix: options.suffixChat,

View File

@@ -19,9 +19,10 @@ import {
import type { BaseOutputParser } from 'langchain/schema/output_parser';
import { CombiningOutputParser } from 'langchain/output_parsers';
import { LLMChain } from 'langchain/chains';
import { BaseChatModel } from 'langchain/chat_models/base';
import type { BaseChatModel } from 'langchain/chat_models/base';
import { HumanMessage } from 'langchain/schema';
import { getTemplateNoticeField } from '../../../utils/sharedFields';
import { isChatInstance } from '../../../utils/helpers';
interface MessagesTemplate {
type: string;
@@ -94,7 +95,7 @@ async function getChainPromptTemplate(
partialVariables: formatInstructions ? { formatInstructions } : undefined,
});
if (llm instanceof BaseChatModel) {
if (isChatInstance(llm)) {
const parsedMessages = await Promise.all(
(messages ?? []).map(async (message) => {
const messageClass = [