refactor: Migrate from BaseLanguageModel to field_typing.LanguageModel

This commit is contained in:
Gabriel Luiz Freitas Almeida 2024-06-20 11:10:52 -03:00
commit e7043443ce
59 changed files with 1461 additions and 1455 deletions

View file

@ -1,7 +1,7 @@
from langchain_experimental.agents.agent_toolkits.csv.base import create_csv_agent
from langflow.custom import CustomComponent
from langflow.field_typing import AgentExecutor, BaseLanguageModel
from langflow.field_typing import AgentExecutor, LanguageModel
class CSVAgentComponent(CustomComponent):
@ -11,7 +11,7 @@ class CSVAgentComponent(CustomComponent):
def build_config(self):
return {
"llm": {"display_name": "LLM", "type": BaseLanguageModel},
"llm": {"display_name": "LLM", "type": LanguageModel},
"path": {"display_name": "Path", "field_type": "file", "suffixes": [".csv"], "file_types": [".csv"]},
"handle_parsing_errors": {"display_name": "Handle Parse Errors", "advanced": True},
"agent_type": {
@ -22,7 +22,7 @@ class CSVAgentComponent(CustomComponent):
}
def build(
self, llm: BaseLanguageModel, path: str, handle_parsing_errors: bool = True, agent_type: str = "openai-tools"
self, llm: LanguageModel, path: str, handle_parsing_errors: bool = True, agent_type: str = "openai-tools"
) -> AgentExecutor:
# Instantiate and return the CSV agent class with the provided llm and path
return create_csv_agent(

View file

@ -3,7 +3,7 @@ from langchain_community.agent_toolkits import create_json_agent
from langchain_community.agent_toolkits.json.toolkit import JsonToolkit
from langflow.custom import CustomComponent
from langflow.field_typing import BaseLanguageModel
from langflow.field_typing import LanguageModel
class JsonAgentComponent(CustomComponent):
@ -18,7 +18,7 @@ class JsonAgentComponent(CustomComponent):
def build(
self,
llm: BaseLanguageModel,
llm: LanguageModel,
toolkit: JsonToolkit,
) -> AgentExecutor:
return create_json_agent(llm=llm, toolkit=toolkit)

View file

@ -6,7 +6,7 @@ from langchain_community.agent_toolkits.sql.base import create_sql_agent
from langchain_community.utilities import SQLDatabase
from langflow.custom import CustomComponent
from langflow.field_typing import BaseLanguageModel
from langflow.field_typing import LanguageModel
class SQLAgentComponent(CustomComponent):
@ -22,7 +22,7 @@ class SQLAgentComponent(CustomComponent):
def build(
self,
llm: BaseLanguageModel,
llm: LanguageModel,
database_uri: str,
verbose: bool = False,
) -> Union[AgentExecutor, Callable]:

View file

@ -4,7 +4,7 @@ from langchain.agents.tool_calling_agent.base import create_tool_calling_agent
from langchain_core.prompts import ChatPromptTemplate
from langflow.base.agents.agent import LCAgentComponent
from langflow.field_typing import BaseLanguageModel, Text, Tool
from langflow.field_typing import LanguageModel, Text, Tool
from langflow.schema import Data
@ -39,7 +39,7 @@ class ToolCallingAgentComponent(LCAgentComponent):
async def build(
self,
input_value: str,
llm: BaseLanguageModel,
llm: LanguageModel,
tools: List[Tool],
user_prompt: str = "{input}",
message_history: Optional[List[Data]] = None,

View file

@ -4,7 +4,7 @@ from langchain.agents import AgentExecutor, create_vectorstore_agent
from langchain.agents.agent_toolkits.vectorstore.toolkit import VectorStoreToolkit
from langflow.custom import CustomComponent
from langflow.field_typing import BaseLanguageModel
from langflow.field_typing import LanguageModel
class VectorStoreAgentComponent(CustomComponent):
@ -19,7 +19,7 @@ class VectorStoreAgentComponent(CustomComponent):
def build(
self,
llm: BaseLanguageModel,
llm: LanguageModel,
vector_store_toolkit: VectorStoreToolkit,
) -> Union[AgentExecutor, Callable]:
return create_vectorstore_agent(llm=llm, toolkit=vector_store_toolkit)

View file

@ -2,7 +2,7 @@ from typing import Callable
from langchain.agents import create_vectorstore_router_agent
from langchain.agents.agent_toolkits.vectorstore.toolkit import VectorStoreRouterToolkit
from langchain_core.language_models.base import BaseLanguageModel
from langflow.field_typing import LanguageModel
from langflow.custom import CustomComponent
@ -17,5 +17,5 @@ class VectorStoreRouterAgentComponent(CustomComponent):
"vectorstoreroutertoolkit": {"display_name": "Vector Store Router Toolkit"},
}
def build(self, llm: BaseLanguageModel, vectorstoreroutertoolkit: VectorStoreRouterToolkit) -> Callable:
def build(self, llm: LanguageModel, vectorstoreroutertoolkit: VectorStoreRouterToolkit) -> Callable:
return create_vectorstore_router_agent(llm=llm, toolkit=vectorstoreroutertoolkit)

View file

@ -4,7 +4,7 @@ from langchain.agents import create_xml_agent
from langchain_core.prompts import ChatPromptTemplate
from langflow.base.agents.agent import LCAgentComponent
from langflow.field_typing import BaseLanguageModel, Text, Tool
from langflow.field_typing import LanguageModel, Text, Tool
from langflow.schema import Data
@ -72,7 +72,7 @@ class XMLAgentComponent(LCAgentComponent):
async def build(
self,
input_value: str,
llm: BaseLanguageModel,
llm: LanguageModel,
tools: List[Tool],
user_prompt: str = "{input}",
system_message: str = "You are a helpful assistant",

View file

@ -3,7 +3,7 @@ from typing import Optional
from langchain.chains import ConversationChain
from langflow.custom import CustomComponent
from langflow.field_typing import BaseLanguageModel, BaseMemory, Text
from langflow.field_typing import BaseMemory, LanguageModel, Text
class ConversationChainComponent(CustomComponent):
@ -27,7 +27,7 @@ class ConversationChainComponent(CustomComponent):
def build(
self,
input_value: Text,
llm: BaseLanguageModel,
llm: LanguageModel,
memory: Optional[BaseMemory] = None,
) -> Text:
if memory is None:

View file

@ -4,7 +4,7 @@ from langchain.chains.llm import LLMChain
from langchain_core.prompts import PromptTemplate
from langflow.custom import CustomComponent
from langflow.field_typing import BaseLanguageModel, BaseMemory, Text
from langflow.field_typing import BaseMemory, LanguageModel, Text
class LLMChainComponent(CustomComponent):
@ -21,7 +21,7 @@ class LLMChainComponent(CustomComponent):
def build(
self,
template: Text,
llm: BaseLanguageModel,
llm: LanguageModel,
memory: Optional[BaseMemory] = None,
) -> Text:
prompt = PromptTemplate.from_template(template)

View file

@ -1,7 +1,7 @@
from langchain.chains import LLMCheckerChain
from langflow.custom import CustomComponent
from langflow.field_typing import BaseLanguageModel, Text
from langflow.field_typing import LanguageModel, Text
class LLMCheckerChainComponent(CustomComponent):
@ -21,7 +21,7 @@ class LLMCheckerChainComponent(CustomComponent):
def build(
self,
input_value: Text,
llm: BaseLanguageModel,
llm: LanguageModel,
) -> Text:
chain = LLMCheckerChain.from_llm(llm=llm)
response = chain.invoke({chain.input_key: input_value})

View file

@ -3,7 +3,7 @@ from typing import Optional
from langchain.chains import LLMChain, LLMMathChain
from langflow.custom import CustomComponent
from langflow.field_typing import BaseLanguageModel, BaseMemory, Text
from langflow.field_typing import BaseMemory, LanguageModel, Text
class LLMMathChainComponent(CustomComponent):
@ -27,7 +27,7 @@ class LLMMathChainComponent(CustomComponent):
def build(
self,
input_value: Text,
llm: BaseLanguageModel,
llm: LanguageModel,
llm_chain: LLMChain,
input_key: str = "question",
output_key: str = "answer",

View file

@ -4,7 +4,7 @@ from langchain.chains.retrieval_qa.base import RetrievalQA
from langchain_core.documents import Document
from langflow.custom import CustomComponent
from langflow.field_typing import BaseLanguageModel, BaseMemory, BaseRetriever, Text
from langflow.field_typing import BaseMemory, BaseRetriever, LanguageModel, Text
from langflow.schema import Data
@ -29,7 +29,7 @@ class RetrievalQAComponent(CustomComponent):
def build(
self,
llm: BaseLanguageModel,
llm: LanguageModel,
chain_type: str,
retriever: BaseRetriever,
input_value: str = "",

View file

@ -4,7 +4,7 @@ from langchain.chains import RetrievalQAWithSourcesChain
from langchain_core.documents import Document
from langflow.custom import CustomComponent
from langflow.field_typing import BaseLanguageModel, BaseMemory, BaseRetriever, Text
from langflow.field_typing import BaseMemory, BaseRetriever, LanguageModel, Text
class RetrievalQAWithSourcesChainComponent(CustomComponent):
@ -32,7 +32,7 @@ class RetrievalQAWithSourcesChainComponent(CustomComponent):
self,
input_value: Text,
retriever: BaseRetriever,
llm: BaseLanguageModel,
llm: LanguageModel,
chain_type: str,
memory: Optional[BaseMemory] = None,
return_source_documents: Optional[bool] = True,

View file

@ -6,7 +6,7 @@ from langchain_core.prompts import PromptTemplate
from langchain_core.runnables import Runnable
from langflow.custom import CustomComponent
from langflow.field_typing import BaseLanguageModel, Text
from langflow.field_typing import LanguageModel, Text
class SQLGeneratorComponent(CustomComponent):
@ -35,7 +35,7 @@ class SQLGeneratorComponent(CustomComponent):
self,
input_value: Text,
db: SQLDatabase,
llm: BaseLanguageModel,
llm: LanguageModel,
top_k: int = 5,
prompt: Optional[Text] = None,
) -> Text:

View file

@ -5,7 +5,7 @@ from langchain_core.prompts.chat import HumanMessagePromptTemplate, SystemMessag
from langflow.base.agents.agent import LCAgentComponent
from langflow.base.agents.utils import AGENTS, AgentSpec, get_agents_list
from langflow.field_typing import BaseLanguageModel, Text, Tool
from langflow.field_typing import LanguageModel, Text, Tool
from langflow.schema import Data
from langflow.schema.dotdict import dotdict
@ -145,7 +145,7 @@ class AgentComponent(LCAgentComponent):
self,
agent_name: str,
input_value: str,
llm: BaseLanguageModel,
llm: LanguageModel,
tools: List[Tool],
system_message: str = "You are a helpful assistant. Help the user answer any questions.",
user_prompt: str = "{input}",

View file

@ -2,14 +2,14 @@ from langchain_core.messages import BaseMessage
from langchain_core.prompts import PromptTemplate
from langflow.custom import CustomComponent
from langflow.field_typing import BaseLanguageModel, Text
from langflow.field_typing import LanguageModel, Text
class ShouldRunNextComponent(CustomComponent):
display_name = "Should Run Next"
description = "Determines if a vertex is runnable."
def build(self, llm: BaseLanguageModel, question: str, context: str, retries: int = 3) -> Text:
def build(self, llm: LanguageModel, question: str, context: str, retries: int = 3) -> Text:
template = "Given the following question and the context below, answer with a yes or no.\n\n{error_message}\n\nQuestion: {question}\n\nContext: {context}\n\nAnswer:"
prompt = PromptTemplate.from_template(template)

View file

@ -3,7 +3,7 @@ from typing import Optional
from langchain_community.llms.bedrock import Bedrock
from langflow.custom import CustomComponent
from langflow.field_typing import BaseLanguageModel
from langflow.field_typing import LanguageModel
class AmazonBedrockComponent(CustomComponent):
@ -46,7 +46,7 @@ class AmazonBedrockComponent(CustomComponent):
endpoint_url: Optional[str] = None,
streaming: bool = False,
cache: Optional[bool] = None,
) -> BaseLanguageModel:
) -> LanguageModel:
try:
output = Bedrock(
credentials_profile_name=credentials_profile_name,

View file

@ -1,10 +1,10 @@
from typing import Optional
from langchain_anthropic import ChatAnthropic
from langchain_core.language_models import BaseLanguageModel
from pydantic.v1 import SecretStr
from langflow.custom import CustomComponent
from langflow.field_typing import LanguageModel
class ChatAntropicSpecsComponent(CustomComponent):
@ -57,7 +57,7 @@ class ChatAntropicSpecsComponent(CustomComponent):
max_tokens: Optional[int] = 1000,
temperature: Optional[float] = None,
api_endpoint: Optional[str] = None,
) -> BaseLanguageModel:
) -> LanguageModel:
# Set default API endpoint if not provided
if not api_endpoint:
api_endpoint = "https://api.anthropic.com"

View file

@ -1,10 +1,10 @@
from typing import Optional
from langchain_core.language_models import BaseLanguageModel
from langchain_openai import AzureChatOpenAI
from pydantic.v1 import SecretStr
from langflow.custom import CustomComponent
from langflow.field_typing import LanguageModel
class AzureChatOpenAISpecsComponent(CustomComponent):
@ -81,7 +81,7 @@ class AzureChatOpenAISpecsComponent(CustomComponent):
api_version: str,
temperature: float = 0.7,
max_tokens: Optional[int] = 1000,
) -> BaseLanguageModel:
) -> LanguageModel:
if api_key:
azure_api_key = SecretStr(api_key)
else:

View file

@ -1,11 +1,10 @@
from typing import Optional
from langchain_community.chat_models.baidu_qianfan_endpoint import QianfanChatEndpoint
from pydantic.v1 import SecretStr
from langflow.custom import CustomComponent
from langflow.field_typing import BaseLanguageModel
from langflow.field_typing import LanguageModel
class QianfanChatEndpointComponent(CustomComponent):
@ -80,7 +79,7 @@ class QianfanChatEndpointComponent(CustomComponent):
temperature: Optional[float] = None,
penalty_score: Optional[float] = None,
endpoint: Optional[str] = None,
) -> BaseLanguageModel:
) -> LanguageModel:
try:
output = QianfanChatEndpoint( # type: ignore
model=model,

Some files were not shown because too many files have changed in this diff Show more