diff --git a/src/backend/langflow/interface/agents/base.py b/src/backend/langflow/interface/agents/base.py index 41ea749e9..d0ab903c1 100644 --- a/src/backend/langflow/interface/agents/base.py +++ b/src/backend/langflow/interface/agents/base.py @@ -1,5 +1,4 @@ -import contextlib -from typing import Dict, Iterable +from typing import Dict, List from langchain.agents import loading @@ -33,7 +32,8 @@ class AgentCreator(LangChainTypeCreator): raise ValueError("Agent not found") from exc # Now this is a generator - def to_list(self) -> Iterable: + def to_list(self) -> List[str]: + names = [] for name, agent in self.type_to_loader_dict.items(): agent_name = ( agent.function_name() @@ -41,7 +41,8 @@ class AgentCreator(LangChainTypeCreator): else agent.__name__ ) if agent_name in settings.agents or settings.dev: - yield agent_name + names.append(name) + return names agent_creator = AgentCreator() diff --git a/src/backend/langflow/interface/agents/prebuilt.py b/src/backend/langflow/interface/agents/prebuilt.py index ee4dca3a5..4160b9809 100644 --- a/src/backend/langflow/interface/agents/prebuilt.py +++ b/src/backend/langflow/interface/agents/prebuilt.py @@ -1,4 +1,3 @@ -from typing import Optional from langchain import LLMChain from langchain.agents import AgentExecutor, ZeroShotAgent @@ -6,7 +5,6 @@ from langchain.agents.agent_toolkits.json.prompt import JSON_PREFIX, JSON_SUFFIX from langchain.agents.agent_toolkits.json.toolkit import JsonToolkit from langchain.agents.mrkl.prompt import FORMAT_INSTRUCTIONS from langchain.schema import BaseLanguageModel -from pydantic import BaseModel class MalfoyAgent(AgentExecutor): diff --git a/src/backend/langflow/interface/prompts/custom.py b/src/backend/langflow/interface/prompts/custom.py index e165aa90a..a33e20e1c 100644 --- a/src/backend/langflow/interface/prompts/custom.py +++ b/src/backend/langflow/interface/prompts/custom.py @@ -1,4 +1,4 @@ -from typing import Any, List, Optional +from typing import List, Optional from langchain.prompts import PromptTemplate from langflow.graph.utils import extract_input_variables_from_prompt @@ -13,8 +13,8 @@ You must know all of the knowledge of {character}.""" class BaseCustomPrompt(PromptTemplate): - template: Optional[str] = None - description: str + template: str = "" + description: Optional[str] human_text: str = "\n {input}" @root_validator(pre=False) @@ -41,17 +41,19 @@ class BaseCustomPrompt(PromptTemplate): for field in self.input_variables ], ), - description=self.description, + description=self.description or "", ) class SeriesCharacterPrompt(BaseCustomPrompt): # Add a very descriptive description for the prompt generator - description = "A prompt that asks the AI to act like a character from a series." + description: Optional[ + str + ] = "A prompt that asks the AI to act like a character from a series." character: str series: str human_text: str = "\n {input}" - template: Optional[str] = CHARACTER_PROMPT + template: str = CHARACTER_PROMPT input_variables: List[str] = ["character", "series"] diff --git a/src/backend/langflow/template/base.py b/src/backend/langflow/template/base.py index 701bb471f..63cae2130 100644 --- a/src/backend/langflow/template/base.py +++ b/src/backend/langflow/template/base.py @@ -162,7 +162,7 @@ class FrontendNode(BaseModel): # Check for list type if "List" in _type: _type = _type.replace("List[", "")[:-1] - self.is_list = True + field.is_list = True # Replace 'Mapping' with 'dict' if "Mapping" in _type: diff --git a/src/backend/langflow/template/nodes.py b/src/backend/langflow/template/nodes.py index ea72ffd89..6bd23d59a 100644 --- a/src/backend/langflow/template/nodes.py +++ b/src/backend/langflow/template/nodes.py @@ -1,3 +1,4 @@ +from typing import Optional from langchain.agents.mrkl import prompt from langflow.template.base import FrontendNode, Template, TemplateField @@ -194,7 +195,7 @@ class InitializeAgentNode(FrontendNode): return super().to_dict() @staticmethod - def format_field(field: TemplateField, name: str): + def format_field(field: TemplateField, name: Optional[str] = None) -> None: # do nothing and don't return anything pass diff --git a/tests/conftest.py b/tests/conftest.py index 7e8316384..e6eb3562f 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2,7 +2,6 @@ from pathlib import Path import pytest from fastapi.testclient import TestClient -from langflow.graph.graph import Graph def pytest_configure(): diff --git a/tests/test_template.py b/tests/test_template.py index f557256e0..9f7d78c55 100644 --- a/tests/test_template.py +++ b/tests/test_template.py @@ -1,5 +1,4 @@ import importlib -import re from typing import Dict, List, Optional import pytest