Commit graph

795 commits

Author SHA1 Message Date
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
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
Gabriel Luiz Freitas Almeida
0cf94f37f6 🔒 chore(vectorstores.py): add password field to extra_fields in VectorStoreFrontendNode class
The password field is added to the extra_fields list in the VectorStoreFrontendNode class. This allows for the creation of a password input field in the frontend UI for this specific class.
2023-07-04 09:58:11 -03:00
Gabriel Luiz Freitas Almeida
7d098ab927 🔒 chore(vectorstores.py): add password field to extra_field2 in VectorStoreFrontendNode class
The password field is added to the extra_field2 in the VectorStoreFrontendNode class. This allows the field to be displayed as a password input in the frontend, enhancing security by hiding the input characters.
2023-07-04 09:56:52 -03:00
Gabriel Luiz Freitas Almeida
608145af9e 🔧 chore(documentloaders.py): moved GutenbergLoader to be used with web_path 2023-07-04 09:51:48 -03:00
Gabriel Luiz Freitas Almeida
51b0ff2bb4 🔧 chore(chat.py): add missing build step for root node in graph
📝 docs(chat.py): explain the need for building the root node before the rest of the graph
The root node in the graph was not being built before the rest of the graph, which caused issues when certain nodes required parameters that were not connected to them. By adding the missing build step for the root node, we ensure that all necessary connections and parameters are properly set up before building the rest of the graph. This improves the overall functionality and reliability of the chat module.
2023-07-03 09:43:08 -03:00
Gabriel Luiz Freitas Almeida
1d22e8c97a 🔧 chore(chat.py): add missing build step for root node in graph
📝 docs(chat.py): explain the need for building the root node before the rest of the graph
The root node in the graph was not being built before the rest of the graph, which caused issues when certain nodes required parameters that were not connected to them. By adding the missing build step for the root node, we ensure that all necessary connections and parameters are properly set up before building the rest of the graph. This improves the overall functionality and reliability of the chat module.
2023-07-03 09:12:59 -03:00
Gabriel Luiz Freitas Almeida
c1175e4961 🔧 chore(base.py): remove unnecessary debug log and add success log for database and tables creation
The debug log statement "Database and tables created" has been removed as it is unnecessary. Instead, a success log statement "Database and tables created successfully" has been added to indicate that the database and tables were created without any errors. This improves the clarity of the log messages and provides better feedback during the database setup process.
2023-07-03 08:46:01 -03:00
Gabriel Luiz Freitas Almeida
35e0ea9d80 🔧 chore(settings.py): update environment variable prefix from "LANGFLOW_" to "langflow_" for consistency
The environment variable prefix used in the settings.py file has been updated from "LANGFLOW_" to "langflow_" to maintain consistency with the naming conventions used in the project. This change ensures that all environment variables related to the Langflow backend have a consistent prefix.
2023-07-02 16:20:17 -03:00
Gabriel Luiz Freitas Almeida
9f2b6443cf debugging improvements 2023-07-02 16:11:51 -03:00
Gabriel Luiz Freitas Almeida
5333dbf021 📝 docs(config.yaml): add PyPDFDirectoryLoader documentation link
Added the documentation link for the PyPDFDirectoryLoader in the config.yaml file. This allows users to access the documentation on how to use the PyPDFDirectoryLoader for loading PDF documents.
2023-07-01 17:09:35 -03:00
Gabriel Luiz Freitas Almeida
30c9b4f5a9 🔧 chore(base.py): add debug logs when creating and creating database and tables
The logger.debug() statements are added to provide more visibility into the process of creating the database and tables. This can be helpful for debugging and troubleshooting purposes.
2023-07-01 17:09:26 -03:00
Gabriel Luiz Freitas Almeida
4c8c3528de 🔥 refactor(settings.py): remove commented out code for setting default database URL
The commented out code was unnecessary and cluttered the codebase. Removing it improves readability and maintainability of the code.
2023-07-01 17:09:15 -03:00
Gabriel Luiz Freitas Almeida
e5eea2d9fb 🐛 fix(__main__.py): change logger.error to logger.exception to log full exception traceback
The change is made to improve the logging of exceptions. Using logger.exception instead of logger.error allows the logger to log the full traceback of the exception, providing more detailed information for debugging purposes.
2023-07-01 17:08:28 -03:00
Gabriel Luiz Freitas Almeida
d2609141ba 🔧 refactor(documentloaders.py): extract build_directory_loader_fields() function to improve code readability and maintainability
🔧 refactor(documentloaders.py): remove redundant code for adding fields in DocumentLoaderFrontNode class
The code in the DocumentLoaderFrontNode class has been refactored to extract the logic for building directory loader fields into a separate function called build_directory_loader_fields(). This improves code readability and maintainability by separating concerns and reducing duplication. The redundant code for adding fields in the DocumentLoaderFrontNode class has also been removed.
2023-07-01 17:08:23 -03:00
Gabriel Luiz Freitas Almeida
016c9983d6 🐛 fix(vectorstores.py): change default value of "Persist" extra field to False
The default value of the "Persist" extra field in the VectorStoreFrontendNode class has been changed from True to False. This change was made to align the default value with the desired behavior of the application.
2023-07-01 09:43:30 -03:00
Gabriel Luiz Freitas Almeida
e04eb0fd7e 🐛 fix(memories.py): add condition to only add output_key field if template type is not VectorStoreRetrieverMemory
The output_key field is now only added to the template if the template type is not VectorStoreRetrieverMemory. This ensures that the output_key field is not added unnecessarily for templates of this type.
2023-07-01 09:43:17 -03:00
Gabriel Luiz Freitas Almeida
2635f06a06 🐛 fix(base.py): add exception logging to improve error handling and debugging
The `logger.exception(exc)` line has been added to log the exception that occurred. This will help with error handling and debugging by providing more information about the exception that caused the error.
2023-07-01 09:43:02 -03:00
Gabriel Luiz Freitas Almeida
d39bea6e85 🐛 fix(loading.py): convert retriever to retriever object if it has "as_retriever" method
The code now checks if the "retriever" key exists in the params dictionary and if the value has an "as_retriever" method. If it does, the value is replaced with the result of calling the "as_retriever" method. This change ensures that the "retriever" parameter is always an instance of the retriever object, preventing potential attribute errors later in the code.
2023-07-01 09:42:44 -03:00
Gabriel Luiz Freitas Almeida
45dfa30851 🐛 fix(run.py): refactor updating memory keys logic to use a loop and try-except block
The logic for updating memory keys in the `run.py` file has been refactored to use a loop and a try-except block. Instead of individually assigning values to `input_key`, `output_key`, and `memory_key`, the keys and attributes are now stored in lists. The loop iterates over the lists and attempts to set the attribute values using `setattr()`. If an attribute does not exist, a `ValueError` is caught and a debug log message is printed. This refactoring improves code readability and maintainability.
2023-07-01 09:42:29 -03:00
anovazzi1
36669cd64f
fix web socket bug that display empty error (#578)
This pull request addresses a bug related to WebSocket functionality
that was causing an empty error to be displayed. The bug resulted in
incorrect error-handling behavior within the WebSocket implementation,
leading to confusion and difficulties in identifying and resolving
issues.

By addressing this bug and improving the WebSocket error handling
mechanism, this pull request significantly enhances the overall
stability and reliability of the application.
2023-06-30 16:56:11 -03:00
Gabriel Luiz Freitas Almeida
8f66ea7088 🐛 fix(loading.py): add missing return statement to instantiate_llm function
The missing return statement caused the function to not return any value when the node_type is not "VertexAI". Adding the return statement ensures that the function returns the instantiated class object with the provided parameters in all cases.
2023-06-30 16:47:59 -03:00
anovazzi1
e9b44ac781 fix(chat.py): add comment explaining the behavior of accepting and immediately closing the connection if the flow is not built yet 2023-06-30 16:42:33 -03:00
anovazzi1
d46aeb2efa fix(chat.py): accept websocket connection before closing it with an error code and reason 2023-06-30 16:27:45 -03:00
Gabriel Luiz Freitas Almeida
1689eb0be4 🔧 fix(llm.py): ignore type error for service_account import
🔧 fix(loading.py): remove empty lines
The type error for the service_account import in llm.py is ignored to prevent a linting error. In loading.py, empty lines were removed for code cleanliness.
2023-06-30 15:40:36 -03:00
Gabriel Luiz Freitas Almeida
cbfc9cb405 Merge branch 'release' into vertex_ai 2023-06-30 15:37:43 -03:00
Gabriel Luiz Freitas Almeida
156b3cc5c2 🔧 chore(config.yaml): comment out ChatVertexAI integration due to a bug causing AttributeError
The ChatVertexAI integration is temporarily commented out due to a bug that causes an AttributeError. This bug needs to be resolved before the integration can be activated again.
2023-06-30 11:10:52 -03:00
Gabriel Luiz Freitas Almeida
06aea7da88 🔀 chore(custom_lists.py): reformat import statements for better readability and maintainability
🔀 chore(custom_lists.py): add ChatVertexAI to the import statements for better modularity and extensibility
🔀 chore(custom_lists.py): add ChatVertexAI to the llm_type_to_cls_dict for better compatibility and flexibility
🔀 chore(llms.py): change required field for credentials to be optional for better user experience
🔀 chore(llms.py): add advanced and show fields for specific fields related to VertexAI for better configurability

The import statements in `custom_lists.py` have been reformatted to improve readability and maintainability. The `ChatVertexAI` class has been added to the import statements to enhance modularity and extensibility.

The `ChatVertexAI` class has been added to the `llm_type_to_cls_dict` dictionary in `custom_lists.py` to improve compatibility and flexibility.

In `llms.py`, the `required` field for the `credentials` field has been changed to be optional for a better user experience.

The `advanced` and `show` fields have been added to specific fields related to VertexAI in `llms.py` to provide better configurability.
2023-06-30 11:09:13 -03:00
Gabriel Luiz Freitas Almeida
e01fe86caa 🐛 fix(base.py): simplify the logic to find the matched_type in the Edge class
The logic to find the matched_type in the Edge class has been simplified by removing unnecessary nested loops and using a single generator expression. This improves the readability and efficiency of the code.
2023-06-30 10:09:56 -03:00
Gabriel Luiz Freitas Almeida
3bdc35d238 🔧 chore(llm.py): add function to initialize VertexAI credentials
🔧 chore(loading.py): call initialize_vertexai function when node_type is "VertexAI"
The `llm.py` file now includes a new function `initialize_vertexai` that initializes the VertexAI credentials if a `credentials` parameter is provided. This allows for the usage of VertexAI credentials in the application. In `loading.py`, the `initialize_vertexai` function is called when the `node_type` is "VertexAI", ensuring that the VertexAI credentials are properly initialized for that specific node type.
2023-06-30 10:09:29 -03:00
Gabriel Luiz Freitas Almeida
bbf4c38740 🔀 refactor(llms.py): simplify condition for showing fields in the VertexAI class
The condition for showing fields in the VertexAI class has been simplified to exclude specific field names. This improves readability and maintainability of the code.
2023-06-30 09:35:33 -03:00
Gabriel Luiz Freitas Almeida
4d72c92e4c 🔧 chore(llms.py): add extra fields for VertexAI template and modify field type for "credentials"
📝 chore(llms.py): improve field configuration for VertexAI template and modify field type for "credentials"
The `add_extra_fields` method is modified to add an additional field called "credentials" for the VertexAI template. The field is of type "file" and is required. It allows the user to upload a JSON file as credentials. The `format_openai_field` method is also updated to handle the new "credentials" field.
2023-06-30 09:00:18 -03:00
Gabriel Luiz Freitas Almeida
b188400517 🐛 fix(loading.py): improve error message formatting when failing to build connection to database
🐛 fix(base.py): add optional 'name' parameter to the format method in FieldFormatter
In loading.py, the error message when failing to build a connection to the database is now formatted in a more readable way. This improves the clarity of the error message and makes it easier to identify the cause of the issue.

In base.py, the format method in FieldFormatter now accepts an optional 'name' parameter. This allows for more flexibility when formatting the field and provides the ability to include the field name in the formatting process if needed.
2023-06-29 19:36:04 -03:00
Gabriel Luiz Freitas Almeida
4f94662881 📝 docs(config.yaml): add documentation for ConversationEntityMemory integration
The ConversationEntityMemory integration is now documented in the config.yaml file. This provides a link to the documentation for using the ConversationEntityMemory module with SQLite as the underlying storage. This change improves the clarity and accessibility of the documentation for this integration.
2023-06-29 18:43:24 -03:00
Gabriel Luiz Freitas Almeida
08c7bb5230 🐛 fix(loading.py): catch additional exception when object has no 'conn' field to improve error handling
The code now catches an additional exception when the object does not have a 'conn' field. This improves the error handling by providing a more specific error message when building a connection to the database fails.
2023-06-29 18:38:36 -03:00
Gabriel Luiz Freitas Almeida
4761eda9a0 🔀 chore(base.py): add 'SQLiteEntityStore' to 'from_method_nodes' dictionary
The 'from_method_nodes' dictionary in the 'MemoryCreator' class in 'base.py' has been updated to include the 'SQLiteEntityStore' class and its '__init__' method. This change allows the 'SQLiteEntityStore' class to be used as a memory node in the LangFlow application.
2023-06-29 18:38:08 -03:00
Gabriel Luiz Freitas Almeida
6fa295b8a8 🐛 fix(memories.py): fix condition to add extra fields in MemoryFrontendNode class
 feat(memories.py): add show attribute to entity_store field in MemoryFrontendNode class
The condition to add extra fields in the MemoryFrontendNode class has been fixed to correctly check if any of the base classes are in a list of base message classes. Additionally, the show attribute has been added to the entity_store field in the MemoryFrontendNode class to control its visibility.
2023-06-29 18:37:52 -03:00
Gabriel Luiz Freitas Almeida
c834d91efd 🐛 fix(util.py): exclude "kwargs" and "args" parameters from the generated template dictionary
The "kwargs" and "args" parameters are now excluded from the generated template dictionary. This ensures that only the relevant parameters are included in the template, improving the accuracy and usefulness of the generated template.
2023-06-29 18:37:33 -03:00
Gabriel Luiz Freitas Almeida
f81a835001 🐛 fix(process.py): add error handling for unknown langchain_object types
When processing the data graph, if the langchain_object is of an unknown type, a ValueError is now raised. This provides better error handling and helps identify any unexpected langchain_object types that may be encountered during processing.
2023-06-29 18:19:22 -03:00
Gabriel Luiz Freitas Almeida
7eeacfbb31 🐛 fix(base.py): add support for creating MemoryFrontendNode from a method
 feat(base.py): add support for creating MemoryFrontendNode from a specific method in ZepChatMessageHistory class
The `MemoryCreator` class now supports creating `MemoryFrontendNode` from a specific method in the `ZepChatMessageHistory` class. This is achieved by adding the `from_method_nodes` dictionary with the method name as the key and the class name as the value. The `build_template_from_method` function is used to create the `MemoryFrontendNode` from the specified method. This enhancement allows for more flexibility in creating `MemoryFrontendNode` instances.
2023-06-29 17:39:46 -03:00
Gabriel Luiz Freitas Almeida
77cc23bf5f 🐛 fix(base.py): fix method name in build_template_from_method call for MultiQueryRetriever
 feat(base.py): add support for ZepRetriever in from_method_nodes dictionary
The build_template_from_method call for the MultiQueryRetriever in the get_signature method was using the incorrect method name "from_llm". It has been fixed to use the correct method name "from_method_nodes". Additionally, support for the ZepRetriever has been added to the from_method_nodes dictionary to allow for its usage in the RetrieverCreator class.
2023-06-29 17:39:36 -03:00