Commit graph

906 commits

Author SHA1 Message Date
Gabriel Luiz Freitas Almeida
fc4dca8a6d 🔧 fix(customs.py): add MongoDBChatMessageHistory to CUSTOM_NODES dictionary
 feat(memories.py): add MongoDBChatMessageHistoryFrontendNode class to support MongoDB as a memory store
The CUSTOM_NODES dictionary in customs.py has been updated to include the "MongoDBChatMessageHistory" memory. This allows the application to use MongoDB as a memory store for chat message history. The MongoDBChatMessageHistoryFrontendNode class has been added to memories.py, providing the necessary functionality and configuration options for interacting with MongoDB as a memory store.
2023-07-07 18:25:54 -03:00
Gabriel Luiz Freitas Almeida
fcac473a61 🔀 chore(config.yaml): reorganize the order of sections in the config file
The order of sections in the config.yaml file has been adjusted for better readability and organization. The "prompts" section has been moved to the top, followed by the "memories" section, and then the "textsplitters" section. This change improves the structure and consistency of the config file.
2023-07-07 17:22:44 -03:00
Gabriel Luiz Freitas Almeida
6f9520d620 🐛 fix(base.py): add type hint for 'template' attribute in FrontendNodeRequest class
🐛 fix(utils.py): add input validation for 'chat_inputs.message' to prevent errors when no message is provided
🐛 fix(loading.py): add type hint for 'format_kwargs' variable in instantiate_prompt function
🐛 fix(base.py): add type hint for 'inputs' parameter in get_result_and_steps function
The changes in `base.py` and `utils.py` are bug fixes that address potential issues in the code. The type hint for the 'template' attribute in the `FrontendNodeRequest` class is added to improve code clarity and maintainability. The input validation for 'chat_inputs.message' in the `process_graph` function ensures that an error is raised when no message is provided, preventing potential issues down the line. In `loading.py`, the type hint for the 'format_kwargs' variable in the `instantiate_prompt` function improves type safety. Lastly, in `base.py`, the type hint for the 'inputs' parameter in the `get_result_and_steps` function ensures proper type checking.
2023-07-07 15:54:15 -03:00
Gabriel Luiz Freitas Almeida
4e078d7de5 🐛 fix(agents.py): change field type name from 'type_name' to 'field_type' for consistency
The 'type_name' attribute for the 'Tools' field in the 'ZeroShotAgent' class has been changed to 'field_type' to improve consistency with the naming conventions used in the codebase.
2023-07-07 15:53:48 -03:00
Gabriel Luiz Freitas Almeida
da0cf30057 🐛 fix(loading.py): fix condition to remove empty input_key and output_key parameters
The condition to remove empty input_key and output_key parameters has been fixed to correctly handle cases where the parameters are empty strings. This ensures that the parameters are only removed if they are either empty strings or not present in the params dictionary.
2023-07-07 15:38:36 -03:00
Lucas Oliveira
be7d9c93fe Formatting changes 2023-07-07 12:05:01 -03:00
Cristhian Zanforlin Lousa
fbc9eb6d1b merge fix 2023-07-07 11:46:13 -03:00
Gabriel Luiz Freitas Almeida
6675592737 🔧 refactor(base.py): remove unnecessary condition in get_signature method
The condition `name in settings.<type>` is removed from the `get_signature` method in the `base.py` files of the `agents`, `chains`, `memories`, and `prompts` modules. This condition was unnecessary as it was already checked in the `get_custom_nodes` function. Removing this condition simplifies the code and improves readability.
2023-07-06 17:35:25 -03:00
Gabriel Luiz Freitas Almeida
116c600d95 🐛 fix(base.py): add check for name in settings to prevent accessing non-existent keys
The code now checks if the name is present in the settings before accessing the corresponding keys in the get_custom_nodes function. This prevents accessing non-existent keys and avoids potential errors.
2023-07-06 17:27:55 -03:00
Gabriel Luiz Freitas Almeida
44943d225a 🔥 refactor(customs.py): comment out unused ZeroShotPrompt in CUSTOM_NODES dictionary
The ZeroShotPrompt node in the CUSTOM_NODES dictionary is currently not being used and commented out for clarity and to improve code readability.
2023-07-06 17:21:03 -03:00
Gabriel Luiz Freitas Almeida
8cba8514c4 🐛 fix(agents.py): change type annotation of name parameter in format_field method to Optional[str] for better clarity
The type annotation of the name parameter in the format_field method has been changed to Optional[str] to indicate that it can be either a string or None. This change improves the clarity of the code and makes it easier to understand the expected input for the method.
2023-07-06 17:19:01 -03:00
Gabriel Luiz Freitas Almeida
afa1c17379 🔗 docs(config.yaml): update documentation links for PromptTemplate and CharacterTextSplitter
The documentation links for PromptTemplate and CharacterTextSplitter have been updated to the correct URLs. This ensures that users can access the relevant documentation for these components.
2023-07-06 17:11:26 -03:00
Gabriel Luiz Freitas Almeida
ee2278c37e 🚀 feat(base.py): add pydantic BaseModel as a base class for FieldFormatter to enable data validation and serialization
The FieldFormatter class now inherits from pydantic.BaseModel in addition to ABC (Abstract Base Class). This change allows FieldFormatter instances to benefit from the data validation and serialization capabilities provided by pydantic, improving the reliability and maintainability of the code.
2023-07-06 17:11:05 -03:00
Gabriel Luiz Freitas Almeida
86bbdb0c30 🐛 fix(tools.py): add "BaseTool" to the base_classes list to inherit from the correct parent class
The "base_classes" list in the ToolNode class has been updated to include "BaseTool" in addition to "Tool". This ensures that the ToolNode class correctly inherits from the BaseTool class, which is the intended parent class for this node.
2023-07-06 17:10:26 -03:00
Gabriel Luiz Freitas Almeida
e36027b679 🔀 chore(base.py): add "BaseTool" to the base_classes list in get_signature method
The "BaseTool" class is added to the base_classes list in the get_signature method. This change ensures that the "BaseTool" class is considered as one of the base classes when creating a tool's signature.
2023-07-06 17:10:06 -03:00
Gabriel Luiz Freitas Almeida
9094876ed3 feat(agents/base.py): add support for creating frontend nodes for agents
🔧 fix(agents/base.py): import missing AgentFrontendNode class from langflow.template.frontend_node.agents
🔧 fix(initialize/loading.py): pass node_type to instantiate_agent function to handle creation of frontend nodes for agents
🔧 fix(template/frontend_node/agents.py): add format_field method to AgentFrontendNode class to customize field behavior
The missing import statement for the AgentFrontendNode class from langflow.template.frontend_node.agents has been added to the base.py file. Support for creating frontend nodes for agents has been added to the AgentCreator class in the base.py file. The instantiate_agent function in the loading.py file now receives the node_type parameter to handle the creation of frontend nodes for agents. The AgentFrontendNode class in the agents.py file now includes a format_field method to customize the behavior of certain fields.
2023-07-06 17:09:18 -03:00
Gabriel Luiz Freitas Almeida
9f80af8f83 🐛 fix(types.py): fix missing return statement in PromptVertex's _built_object_repr method
The _built_object_repr method in the PromptVertex class was missing a return statement, causing it to not return any value. This fix adds the missing return statement to ensure the method returns the correct value.
2023-07-06 17:08:54 -03:00
Gabriel Luiz Freitas Almeida
b32e4ca8b9 🐛 fix(util.py): improve type formatting in format_dict function
The format_dict function now properly handles different variations of list types by removing unnecessary characters from the type string. This improves the consistency and accuracy of the type formatting in the function.
2023-07-06 17:08:28 -03:00
Gabriel Luiz Freitas Almeida
54b13a6bb6 🔀 refactor(callback.py): reorganize imports and add missing type hints
🔀 refactor(callback.py): reorganize imports and add missing type hints to improve code readability and maintainability
The changes in this commit include reorganizing the imports to group them properly and adding missing type hints to improve code readability and maintainability.
2023-07-06 15:33:57 -03:00
Gabriel Luiz Freitas Almeida
ac9969624e 🐛 fix(loading.py): remove empty input_key and output_key from params dictionary
The code now removes the "input_key" and "output_key" keys from the params dictionary if they are empty strings. This ensures that the dictionary does not contain unnecessary keys with empty values.
2023-07-06 15:33:56 -03:00
Gabriel Luiz Freitas Almeida
7b238b44e7 🔀 chore(base.py): update _built_object_repr method to include emojis and more descriptive messages
The _built_object_repr method in the Vertex class has been updated to include emojis and more descriptive messages. The message "Built successfully " is now returned when the _built_object attribute is True, indicating that the object has been successfully built. On the other hand, the message "Failed to build 😵‍💫" is returned when the _built_object attribute is False, indicating that the object failed to build. This change improves the clarity and visual representation of the build status.
2023-07-06 15:33:56 -03:00
Gabriel Luiz Freitas Almeida
d31fe77d55 🐛 fix(utils.py): remove unnecessary or operator in process_graph function call
The unnecessary or operator in the process_graph function call has been removed. The chat_inputs.message parameter is now passed directly to the get_result_and_steps function.
2023-07-06 15:33:55 -03:00
Gabriel Luiz Freitas Almeida
c3886ed219 🐛 fix(base.py): change wrong_variables from a set to a list to preserve order and improve error message generation
🔀 refactor(base.py): refactor check_input_variables function to simplify logic and improve readability
The wrong_variables variable is now a list instead of a set to preserve the order of the variables. This change improves the error message generation by ensuring that the variables are displayed in the same order as they appear in the input. The check_input_variables function has been refactored to simplify the logic and improve readability. The code now handles invalid characters and wrong variables separately, making it easier to understand and maintain.
2023-07-06 15:33:54 -03:00
Gabriel Luiz Freitas Almeida
56b23c4a1d 🔧 chore(types.py): add missing return statement in _built_object_repr method of PromptVertex
📝 docs(types.py): improve readability and add clarity to the _built_object_repr method of PromptVertex
The _built_object_repr method of PromptVertex was missing a return statement when the condition in the if statement was not met. This commit adds the missing return statement to ensure the method always returns a value. Additionally, the commit improves the documentation of the method to provide better readability and clarity.
2023-07-06 15:33:53 -03:00
Gabriel Luiz Freitas Almeida
86de1ac480
Implementing Prompt Modal with Variables (#616) 2023-07-06 10:29:19 -03:00
Gabriel Luiz Freitas Almeida
7951ccfc77 🐛 fix(base.py): fix logic for checking and fixing input variables in check_input_variables function
🔍 refactor(base.py): refactor build_error_message function to improve readability and error message generation

The check_input_variables function now correctly handles empty variables and variables that start with a number. It removes invalid characters from the variables and adds them to the wrong_variables set. The build_error_message function has been refactored to generate a more informative error message, including details about invalid characters, wrong variables, empty variables, and duplicate variables. This improves the clarity of error messages when validating input variables.
2023-07-06 10:27:26 -03:00
Zac Li
6eea2d8d58 feat: Customize DB path for JCloud app 2023-07-06 17:00:21 +08:00
Gabriel Luiz Freitas Almeida
a8900c429d 🔧 chore(base.py): improve the representation of the built object in the Vertex class
The representation of the built object in the Vertex class has been improved to provide more meaningful information. Instead of returning the actual object representation, it now returns "Built successfully" if the object has been built, or "Not built yet" if the object has not been built yet. This change enhances the clarity and readability of the code.
2023-07-05 20:35:39 -03:00
Gabriel Luiz Freitas Almeida
9926edbbbf Merge remote-tracking branch 'origin/main' into dev 2023-07-05 20:24:02 -03:00
Gabriel Luiz Freitas Almeida
f84cd4026a 🐛 fix(validate.py): set the value of the template field to an empty string
The value of the template field is now set to an empty string to ensure consistency and avoid potential issues with undefined values.
2023-07-05 20:09:11 -03:00
Gabriel Luiz Freitas Almeida
605f7cecb2 🐛 fix(chat.py): handle case when artifacts is empty to prevent potential error
The code now handles the case when the `artifacts` variable is empty by setting `input_keys_response` to an empty dictionary. This prevents potential errors that could occur when trying to build the `input_keys_response` object.
2023-07-05 20:06:27 -03:00
Gabriel Luiz Freitas Almeida
1dcb71b952 🐛 fix(base.py): handle case when base_type is None to avoid ValueError
The code now checks if the `base_type` attribute is None before attempting to instantiate a class. If `base_type` is None, a ValueError is raised with a descriptive error message. This fix prevents potential errors when the `base_type` is not found for a given node.
2023-07-05 17:21:03 -03:00
Gabriel Luiz Freitas Almeida
b71913a0aa 🐛 fix(__main__.py): change word variable from "LangFlow" to "Langflow" for consistency
🐛 fix(schemas.py): change class name from "ExportedFlow" to "Exported flow from Langflow" for consistency
The word variable in __main__.py is changed from "LangFlow" to "Langflow" to maintain consistency in naming conventions. Similarly, the class name in schemas.py is changed from "ExportedFlow" to "Exported flow from Langflow" for consistency in naming conventions.
2023-07-05 16:42:13 -03:00
Gabriel Luiz Freitas Almeida
5138129003 🔧 chore(__main__.py): add load_params() function to load parameters from environment variables
The load_params() function is added to load the parameters from the environment variables. This allows for more flexibility and configurability of the application by allowing the parameters to be set via environment variables.
2023-07-05 15:41:49 -03:00
Gabriel Luiz Freitas Almeida
92aa40db65
Added better CLI docs in README and bumps langchain-serve (#590) 2023-07-05 14:54:18 -03:00
Gabriel Luiz Freitas Almeida
3c13f87495
Merge branch 'release' into jcloud_fix 2023-07-05 14:48:29 -03:00
Gabriel Luiz Freitas Almeida
70b634cbcf 🔧 chore(__main__.py): refactor serve function to use environment variables for configuration options
🌟 feat(__main__.py): add support for environment variables to configure serve function
The serve function in __main__.py has been refactored to use environment variables for configuration options. The following configuration options now support environment variables: host, workers, port, log_level, log_file, path, open_browser, and remove_api_keys. This change allows for greater flexibility and easier configuration of the serve function by using environment variables instead of command line options.
2023-07-05 13:07:02 -03:00
Gabriel Luiz Freitas Almeida
95b8555503 🐛 fix(settings.py): change environment variable name from LANGFLOW_DATABASE_URL to langflow_database_url for consistency
The environment variable name is changed from LANGFLOW_DATABASE_URL to langflow_database_url to maintain consistency with the naming conventions used in the codebase. This ensures that the code is more readable and easier to understand.
2023-07-05 12:10:32 -03:00
Gabriel Luiz Freitas Almeida
8214b22c09 🔧 chore(__main__.py): update cache and database environment variable names for clarity and consistency
The `cache` option has been changed to use the `LANGFLOW_LANGCHAIN_CACHE` environment variable instead of `LANGCHAIN_CACHE` for clarity and consistency. Similarly, the `database_url` option now uses the `LANGFLOW_DATABASE_URL` environment variable instead of the previous behavior of using a local SQLite database by default. This change allows for more flexibility in configuring the cache and database connections.
2023-07-05 12:10:09 -03:00
Gabriel Luiz Freitas Almeida
4b1fb4a49e 🐛 fix(utils.py): rename cache_class variable to cache_type for clarity and consistency
🔧 chore(utils.py): refactor `setup_llm_caching` to extract cache setup logic into a separate function for better modularity and readability
The variable `cache_class` has been renamed to `cache_type` to improve clarity and consistency with the naming conventions. The `setup_llm_caching` function has been refactored to extract the cache setup logic into a separate function called `set_langchain_cache`. This improves modularity and readability of the code.
2023-07-05 12:09:53 -03:00
Gabriel Luiz Freitas Almeida
552edf072b 🔧 chore(settings.py): make database_url optional to handle cases where it is not provided
The `database_url` setting is now declared as an optional string (`Optional[str]`) instead of a required string. This change allows the application to handle cases where the `database_url` is not provided, providing more flexibility in the configuration.
2023-07-05 11:50:32 -03:00
Gabriel Luiz Freitas Almeida
d713d38ca7 🔧 chore(__main__.py): refactor loading of environment variables to allow overriding with .env file
The os module is imported to make use of the os.getenv() function. The loading of the environment variables is refactored to check for the presence of the "langflow_database_url" environment variable and use it as the value for the database_url variable if it is not provided. This allows for more flexibility in configuring the database URL. Additionally, the loading of environment variables is refactored to allow overriding with a .env file if the env_file parameter is provided. This allows for easier configuration management.
🔧 chore(__main__.py): import os module and refactor loading of environment variables
2023-07-05 11:50:07 -03:00
Gabriel Luiz Freitas Almeida
c0efe4dbcf 🔧 chore(__init__.py): add noqa comments to import statements to ignore linting errors
The noqa comments have been added to the import statements to ignore the linting errors raised by the linter. This ensures that the linting errors related to the imports are ignored and the code can be properly executed without any issues.
2023-07-05 11:49:22 -03:00
Gabriel Luiz Freitas Almeida
20da596d9a 🐛 fix(base.py): handle case when no database_url is provided and raise an error
 feat(base.py): add error handling when creating database and tables to provide more informative error messages
The code now checks if the `settings.database_url` is provided and raises a `RuntimeError` if it is not. This ensures that the application does not attempt to create a database connection without a valid URL. Additionally, error handling has been added when creating the database and tables. If an exception occurs during the creation process, an error message is logged and a `RuntimeError` is raised with a more informative error message. This helps in identifying and resolving any issues related to the database creation process.
2023-07-05 11:47:55 -03:00
Gabriel Luiz Freitas Almeida
a69225bb07 🔧 chore(loading.py): remove unused import statement
🐛 fix(loading.py): remove unnecessary None default value for file_filter parameter
The unused import statement from langchain.prompts.base has been removed to improve code cleanliness. The None default value for the file_filter parameter in the instantiate_documentloader function has been removed as it is unnecessary and can be safely assumed that the parameter will always be provided.
2023-07-05 09:46:27 -03:00
Gabriel Luiz Freitas Almeida
5879ad99f2 🔥 refactor(main.py): remove unused /dynamic_node endpoint and template_node variable
💡 chore(main.py): clean up code by removing an unused endpoint and a template_node variable that is no longer needed
The /dynamic_node endpoint and the template_node variable are no longer used in the application and can be safely removed. This improves code cleanliness and reduces unnecessary complexity.
2023-07-05 09:41:40 -03:00
Gabriel Luiz Freitas Almeida
3059e8c670 🐛 fix(base.py): fix add_edge method to prevent adding duplicate edges
🐛 fix(base.py): fix __eq__ method in Edge class to correctly compare objects
The add_edge method in the Vertex class has been modified to prevent adding duplicate edges. Now, before adding an edge, it checks if the edge already exists in the edges list to avoid duplicates.

The __eq__ method in the Edge class has been fixed to correctly compare objects. It now compares the string representation of the objects to determine equality, ensuring that the comparison is accurate.
2023-07-05 09:37:25 -03:00
Gabriel Luiz Freitas Almeida
5445adbbce 🐛 fix(validate.py): set new field value with the old value if variable already exists in the template
The code now checks if the variable already exists in the template and if so, sets the new field value with the old value. This ensures that the existing value is preserved when adding new variables to the template.
2023-07-04 23:32:25 -03:00
Gabriel Luiz Freitas Almeida
244aeae916 🔧 chore(validate.py): add multiline option to input_variables field in add_new_variables_to_template function
The multiline option is added to the input_variables field in the add_new_variables_to_template function. This allows the field to accept multiline input, which can be useful in certain scenarios where multiple lines of text need to be entered.
2023-07-04 23:30:24 -03:00
Gabriel Luiz Freitas Almeida
a3792577a8 🔄 refactor(vertex/base.py): rename Node class to Vertex class for better clarity and consistency
🔄 refactor(template/frontend_node/documentloaders.py): rename web_path variable to file_path for better clarity and consistency in the GutenbergLoader class
The Node class in the vertex/base.py file has been renamed to Vertex class to improve clarity and consistency in the naming conventions used throughout the codebase. In the template/frontend_node/documentloaders.py file, the web_path variable has been renamed to file_path in the GutenbergLoader class to provide better clarity and consistency in the naming conventions used within the class.
2023-07-04 10:08:41 -03:00