From dd1ce4e324d866cae27caffbf53c2069d1bce2f4 Mon Sep 17 00:00:00 2001 From: ItzCrazyKns Date: Thu, 18 Apr 2024 18:15:17 +0530 Subject: [PATCH] feat(agents): replace LLMs with chat LLMs --- src/agents/academicSearchAgent.ts | 11 +++-------- src/agents/imageSearchAgent.ts | 6 +++--- src/agents/redditSearchAgent.ts | 11 +++-------- src/agents/webSearchAgent.ts | 11 +++-------- src/agents/wolframAlphaSearchAgent.ts | 9 ++------- src/agents/writingAssistant.ts | 4 ++-- src/agents/youtubeSearchAgent.ts | 11 +++-------- 7 files changed, 19 insertions(+), 44 deletions(-) diff --git a/src/agents/academicSearchAgent.ts b/src/agents/academicSearchAgent.ts index 7c3d448..edb7a63 100644 --- a/src/agents/academicSearchAgent.ts +++ b/src/agents/academicSearchAgent.ts @@ -9,7 +9,7 @@ import { RunnableMap, RunnableLambda, } from '@langchain/core/runnables'; -import { ChatOpenAI, OpenAI, OpenAIEmbeddings } from '@langchain/openai'; +import { ChatOpenAI, OpenAIEmbeddings } from '@langchain/openai'; import { StringOutputParser } from '@langchain/core/output_parsers'; import { Document } from '@langchain/core/documents'; import { searchSearxng } from '../core/searxng'; @@ -18,16 +18,11 @@ import formatChatHistoryAsString from '../utils/formatHistory'; import eventEmitter from 'events'; import computeSimilarity from '../utils/computeSimilarity'; -const chatLLM = new ChatOpenAI({ +const llm = new ChatOpenAI({ modelName: process.env.MODEL_NAME, temperature: 0.7, }); -const llm = new OpenAI({ - temperature: 0, - modelName: process.env.MODEL_NAME, -}); - const embeddings = new OpenAIEmbeddings({ modelName: 'text-embedding-3-large', }); @@ -215,7 +210,7 @@ const basicAcademicSearchAnsweringChain = RunnableSequence.from([ new MessagesPlaceholder('chat_history'), ['user', '{query}'], ]), - chatLLM, + llm, strParser, ]).withConfig({ runName: 'FinalResponseGenerator', diff --git a/src/agents/imageSearchAgent.ts b/src/agents/imageSearchAgent.ts index 3a2c9db..bf49de0 100644 --- a/src/agents/imageSearchAgent.ts +++ b/src/agents/imageSearchAgent.ts @@ -4,15 +4,15 @@ import { RunnableLambda, } from '@langchain/core/runnables'; import { PromptTemplate } from '@langchain/core/prompts'; -import { OpenAI } from '@langchain/openai'; +import { ChatOpenAI } from '@langchain/openai'; import formatChatHistoryAsString from '../utils/formatHistory'; import { BaseMessage } from '@langchain/core/messages'; import { StringOutputParser } from '@langchain/core/output_parsers'; import { searchSearxng } from '../core/searxng'; -const llm = new OpenAI({ - temperature: 0, +const llm = new ChatOpenAI({ modelName: process.env.MODEL_NAME, + temperature: 0.7, }); const imageSearchChainPrompt = ` diff --git a/src/agents/redditSearchAgent.ts b/src/agents/redditSearchAgent.ts index 77f293e..3b6a274 100644 --- a/src/agents/redditSearchAgent.ts +++ b/src/agents/redditSearchAgent.ts @@ -9,7 +9,7 @@ import { RunnableMap, RunnableLambda, } from '@langchain/core/runnables'; -import { ChatOpenAI, OpenAI, OpenAIEmbeddings } from '@langchain/openai'; +import { ChatOpenAI, OpenAIEmbeddings } from '@langchain/openai'; import { StringOutputParser } from '@langchain/core/output_parsers'; import { Document } from '@langchain/core/documents'; import { searchSearxng } from '../core/searxng'; @@ -18,16 +18,11 @@ import formatChatHistoryAsString from '../utils/formatHistory'; import eventEmitter from 'events'; import computeSimilarity from '../utils/computeSimilarity'; -const chatLLM = new ChatOpenAI({ +const llm = new ChatOpenAI({ modelName: process.env.MODEL_NAME, temperature: 0.7, }); -const llm = new OpenAI({ - temperature: 0, - modelName: process.env.MODEL_NAME, -}); - const embeddings = new OpenAIEmbeddings({ modelName: 'text-embedding-3-large', }); @@ -211,7 +206,7 @@ const basicRedditSearchAnsweringChain = RunnableSequence.from([ new MessagesPlaceholder('chat_history'), ['user', '{query}'], ]), - chatLLM, + llm, strParser, ]).withConfig({ runName: 'FinalResponseGenerator', diff --git a/src/agents/webSearchAgent.ts b/src/agents/webSearchAgent.ts index f5799e3..047eb3d 100644 --- a/src/agents/webSearchAgent.ts +++ b/src/agents/webSearchAgent.ts @@ -9,7 +9,7 @@ import { RunnableMap, RunnableLambda, } from '@langchain/core/runnables'; -import { ChatOpenAI, OpenAI, OpenAIEmbeddings } from '@langchain/openai'; +import { ChatOpenAI, OpenAIEmbeddings } from '@langchain/openai'; import { StringOutputParser } from '@langchain/core/output_parsers'; import { Document } from '@langchain/core/documents'; import { searchSearxng } from '../core/searxng'; @@ -18,16 +18,11 @@ import formatChatHistoryAsString from '../utils/formatHistory'; import eventEmitter from 'events'; import computeSimilarity from '../utils/computeSimilarity'; -const chatLLM = new ChatOpenAI({ +const llm = new ChatOpenAI({ modelName: process.env.MODEL_NAME, temperature: 0.7, }); -const llm = new OpenAI({ - temperature: 0, - modelName: process.env.MODEL_NAME, -}); - const embeddings = new OpenAIEmbeddings({ modelName: 'text-embedding-3-large', }); @@ -210,7 +205,7 @@ const basicWebSearchAnsweringChain = RunnableSequence.from([ new MessagesPlaceholder('chat_history'), ['user', '{query}'], ]), - chatLLM, + llm, strParser, ]).withConfig({ runName: 'FinalResponseGenerator', diff --git a/src/agents/wolframAlphaSearchAgent.ts b/src/agents/wolframAlphaSearchAgent.ts index c071ef0..4ab1990 100644 --- a/src/agents/wolframAlphaSearchAgent.ts +++ b/src/agents/wolframAlphaSearchAgent.ts @@ -17,16 +17,11 @@ import type { StreamEvent } from '@langchain/core/tracers/log_stream'; import formatChatHistoryAsString from '../utils/formatHistory'; import eventEmitter from 'events'; -const chatLLM = new ChatOpenAI({ +const llm = new ChatOpenAI({ modelName: process.env.MODEL_NAME, temperature: 0.7, }); -const llm = new OpenAI({ - temperature: 0, - modelName: process.env.MODEL_NAME, -}); - const basicWolframAlphaSearchRetrieverPrompt = ` You will be given a conversation below and a follow up question. You need to rephrase the follow-up question if needed so it is a standalone question that can be used by the LLM to search the web for information. If it is a writing task or a simple hi, hello rather than a question, you need to return \`not_needed\` as the response. @@ -169,7 +164,7 @@ const basicWolframAlphaSearchAnsweringChain = RunnableSequence.from([ new MessagesPlaceholder('chat_history'), ['user', '{query}'], ]), - chatLLM, + llm, strParser, ]).withConfig({ runName: 'FinalResponseGenerator', diff --git a/src/agents/writingAssistant.ts b/src/agents/writingAssistant.ts index 2c8d66e..0fc5097 100644 --- a/src/agents/writingAssistant.ts +++ b/src/agents/writingAssistant.ts @@ -9,7 +9,7 @@ import { StringOutputParser } from '@langchain/core/output_parsers'; import type { StreamEvent } from '@langchain/core/tracers/log_stream'; import eventEmitter from 'events'; -const chatLLM = new ChatOpenAI({ +const llm = new ChatOpenAI({ modelName: process.env.MODEL_NAME, temperature: 0.7, }); @@ -50,7 +50,7 @@ const writingAssistantChain = RunnableSequence.from([ new MessagesPlaceholder('chat_history'), ['user', '{query}'], ]), - chatLLM, + llm, strParser, ]).withConfig({ runName: 'FinalResponseGenerator', diff --git a/src/agents/youtubeSearchAgent.ts b/src/agents/youtubeSearchAgent.ts index 9ab5ed8..7c1bcf5 100644 --- a/src/agents/youtubeSearchAgent.ts +++ b/src/agents/youtubeSearchAgent.ts @@ -9,7 +9,7 @@ import { RunnableMap, RunnableLambda, } from '@langchain/core/runnables'; -import { ChatOpenAI, OpenAI, OpenAIEmbeddings } from '@langchain/openai'; +import { ChatOpenAI, OpenAIEmbeddings } from '@langchain/openai'; import { StringOutputParser } from '@langchain/core/output_parsers'; import { Document } from '@langchain/core/documents'; import { searchSearxng } from '../core/searxng'; @@ -18,16 +18,11 @@ import formatChatHistoryAsString from '../utils/formatHistory'; import eventEmitter from 'events'; import computeSimilarity from '../utils/computeSimilarity'; -const chatLLM = new ChatOpenAI({ +const llm = new ChatOpenAI({ modelName: process.env.MODEL_NAME, temperature: 0.7, }); -const llm = new OpenAI({ - temperature: 0, - modelName: process.env.MODEL_NAME, -}); - const embeddings = new OpenAIEmbeddings({ modelName: 'text-embedding-3-large', }); @@ -211,7 +206,7 @@ const basicYoutubeSearchAnsweringChain = RunnableSequence.from([ new MessagesPlaceholder('chat_history'), ['user', '{query}'], ]), - chatLLM, + llm, strParser, ]).withConfig({ runName: 'FinalResponseGenerator',