From 7c6845b15eb101f80f13d6395169dbebe77c5ffb Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Tue, 27 Jun 2023 10:16:19 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20chore(loading.py):=20add=20insta?= =?UTF-8?q?ntiate=5Fllm=20function=20to=20handle=20LLM=20instantiation=20a?= =?UTF-8?q?nd=20set=20ChatConfig.streaming=20based=20on=20openai=5Fapi=5Fb?= =?UTF-8?q?ase=20parameter=20This=20commit=20adds=20a=20new=20function=20`?= =?UTF-8?q?instantiate=5Fllm`=20to=20handle=20LLM=20(Language=20Model)=20i?= =?UTF-8?q?nstantiation.=20It=20also=20sets=20the=20`ChatConfig.streaming`?= =?UTF-8?q?=20attribute=20based=20on=20the=20`openai=5Fapi=5Fbase`=20param?= =?UTF-8?q?eter.=20This=20is=20a=20workaround=20to=20ensure=20that=20JinaC?= =?UTF-8?q?hat=20works=20until=20streaming=20is=20implemented.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../langflow/interface/initialize/loading.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/backend/langflow/interface/initialize/loading.py b/src/backend/langflow/interface/initialize/loading.py index 756588058..cfa5b5717 100644 --- a/src/backend/langflow/interface/initialize/loading.py +++ b/src/backend/langflow/interface/initialize/loading.py @@ -6,6 +6,7 @@ from langchain.agents import agent as agent_module from langchain.agents.agent import AgentExecutor from langchain.agents.agent_toolkits.base import BaseToolkit from langchain.agents.tools import BaseTool + from langflow.interface.initialize.vector_store import vecstore_initializer from pydantic import ValidationError @@ -20,6 +21,7 @@ from langchain.chains.base import Chain from langchain.vectorstores.base import VectorStore from langchain.document_loaders.base import BaseLoader from langchain.prompts.base import BasePromptTemplate +from langflow.chat.config import ChatConfig def instantiate_class(node_type: str, base_type: str, params: Dict) -> Any: @@ -76,10 +78,21 @@ def instantiate_based_on_type(class_object, base_type, node_type, params): return instantiate_utility(node_type, class_object, params) elif base_type == "chains": return instantiate_chains(node_type, class_object, params) + elif base_type == "llms": + return instantiate_llm(node_type, class_object, params) else: return class_object(**params) +def instantiate_llm(node_type, class_object, params: Dict): + # This is a workaround so JinaChat works until streaming is implemented + # if "openai_api_base" in params and "jina" in params["openai_api_base"]: + # False if condition is True + ChatConfig.streaming = "jina" not in params.get("openai_api_base", "") + + return class_object(**params) + + def instantiate_chains(node_type, class_object: Type[Chain], params: Dict): if "retriever" in params and hasattr(params["retriever"], "as_retriever"): params["retriever"] = params["retriever"].as_retriever()