Commit graph

658 commits

Author SHA1 Message Date
Gabriel Luiz Freitas Almeida
bcb80a08b2 🐛 fix(loading.py): remove unnecessary type hinting for allowed_tools variable
The type hinting for allowed_tools variable is unnecessary as it is already defined in the previous line. Removing the type hinting improves the readability of the code.
2023-06-23 11:04:03 -03:00
Gabriel Luiz Freitas Almeida
fb25744714 🔥 refactor(loading.py): remove unused imports and functions
The imports and functions that were not being used were removed to improve the code's readability and maintainability.
2023-06-23 10:51:09 -03:00
Gabriel Luiz Freitas Almeida
6c08340aff 🚀 feat(vectorstores.py): add display name for SupabaseVectorStore
The display name for the SupabaseVectorStore is now set to "Supabase". This improves the user experience by providing a more descriptive name for the vector store.
2023-06-23 10:50:37 -03:00
Gabriel Luiz Freitas Almeida
f2230a6d70 🚚 chore(base.py): move DIRECT_TYPES import to utils.constants
The DIRECT_TYPES import has been moved to the utils.constants module to improve the organization of the code.
2023-06-23 09:13:38 -03:00
Gabriel Luiz Freitas Almeida
a23c53dd14 🚀 feat(base.py): add sorting of fields based on DIRECT_TYPES
The `sort_fields` method has been added to the `Template` class to sort fields based on the `DIRECT_TYPES` constant. Fields that have a `field_type` in `DIRECT_TYPES` are sorted first, followed by the remaining fields. This ensures that fields that have a direct type are processed first, which is important for the correct functioning of the template.
2023-06-23 09:13:22 -03:00
Gabriel Luiz Freitas Almeida
9f00421d64 🔥 chore(constants.py): remove DIRECT_TYPES constant from vertex and graph modules
The DIRECT_TYPES constant was removed from the vertex and graph modules as it is now defined in the utils module. This change improves code organization and reduces duplication.
2023-06-23 09:13:09 -03:00
Gabriel Luiz Freitas Almeida
c0a8d15dc2 🐛 fix(util.py): set default value for model_name in format_dict function
The format_dict function was updated to set a default value for the model_name key in the value dictionary for the OpenAI, ChatOpenAI, and Anthropic models. This ensures that the model_name key always has a value, even if the options list is empty.
2023-06-23 09:12:53 -03:00
Gabriel Luiz Freitas Almeida
a05a9202e8 🐛 fix(chains.py): set required=True for TemplateField 'memory'
 feat(chains.py): add TemplateField 'chain_type' to support different types of QA chains
The 'memory' field was previously set to required=False, but it is actually required for the chain to function properly. This fix sets required=True for the 'memory' field.

A new TemplateField 'chain_type' has been added to support different types of QA chains. This field is of type 'str', is required, and is a list of options. It allows the user to select the type of QA chain they want to use.
2023-06-23 09:04:35 -03:00
Gabriel Luiz Freitas Almeida
c686ed01ca 🐛 fix(memories.py): set advanced field to False for input_key and output_key fields
The advanced field was set to True for input_key and output_key fields, which made them appear in the advanced section of the UI. This was not intended, so the advanced field is now set to False for these fields.
2023-06-23 09:04:21 -03:00
Gabriel Luiz Freitas Almeida
508c66cbaa 🐛 fix(endpoints.py): make inputs and tweaks optional in process_flow endpoint
🐛 fix(process.py): make inputs optional in process_graph_cached function
The inputs and tweaks parameters in the process_flow endpoint are now optional, which allows for more flexibility in the API. The inputs parameter in the process_graph_cached function is now optional, which prevents a ValueError from being raised when a Chain object is processed without inputs.
2023-06-23 08:40:43 -03:00
Gabriel Luiz Freitas Almeida
fed726b727 🚀 feat(memories.py): set default value for memory_key field to "chat_history"
The memory_key field is now set to "chat_history" by default. This change ensures that the memory_key field is always initialized with a default value, which is useful for the application's functionality.
2023-06-23 08:14:26 -03:00
Gabriel Luiz Freitas Almeida
eb7f8838be 🔥 refactor(schemas.py): remove extra blank line in UploadFileResponse schema
The extra blank line in the UploadFileResponse schema has been removed to improve code readability and consistency.
2023-06-22 22:44:24 -03:00
Gabriel Luiz Freitas Almeida
7f90956d20 🐛 fix(vector_store.py): add type ignore comments to suppress import errors
The import statements for the weaviate and pinecone libraries were causing import errors. Adding the `# type: ignore` comment suppresses these errors and allows the code to run without issues.
2023-06-22 22:43:59 -03:00
Gabriel Luiz Freitas Almeida
4b5c3a0c53 🔨 refactor(process.py): add type hinting to function arguments
This commit adds type hinting to the function arguments of `get_result_and_thought` and `process_graph_cached` functions in `process.py` file. This improves code readability and maintainability.
2023-06-22 22:43:51 -03:00
Gabriel Luiz Freitas Almeida
3c89e893e7 🔨 refactor(vectorstores.py): change import statement to import List from typing
The import statement for Optional was changed to import List from typing to improve readability and consistency with the use of List in the code.
2023-06-22 22:43:37 -03:00
Gabriel Luiz Freitas Almeida
7e72ba43fa 🐛 fix(vector_store.py): fix variable naming to follow PEP8 guidelines
The variables PINECONE_API_KEY and PINECONE_ENV were renamed to pinecone_api_key and pinecone_env, respectively, to follow PEP8 guidelines.
2023-06-22 22:32:04 -03:00
Gabriel Luiz Freitas Almeida
7cebb8215f 🐛 fix(vector_store.py): remove redundant code and fix parameter naming
The `initialize_chroma` function had redundant code that was removed. The `embedding_function` parameter was renamed to `embedding` to match the parameter name used in the `class_object` constructor. The `documents` and `texts` parameters were being used interchangeably, so the code was updated to use only `documents`.
2023-06-22 22:18:01 -03:00
Gabriel Luiz Freitas Almeida
e3ee146b12 🔧 refactor(documentloaders.py): use Optional type hint for name parameter in format_field method
The `name` parameter in the `format_field` method of the `DocumentLoaderFrontNode` class now uses the `Optional` type hint to indicate that it can be None. This improves the code's readability and makes it easier to understand the expected behavior of the method.
2023-06-22 22:10:43 -03:00
Gabriel Luiz Freitas Almeida
7da5197f35 🔨 refactor(vector_store.py): refactor initialize_supabase function to improve readability and remove redundant code
The function now checks if "texts" is in the params dictionary and renames it to "documents" for consistency. The "supabase_url" and "supabase_service_key" are now removed from the params dictionary and passed directly to the create_client function. The function also removes the "documents" and "texts" keys from the params dictionary if there are no documents in the params. This improves the readability of the code and removes redundant code.
2023-06-22 22:10:29 -03:00
Gabriel Luiz Freitas Almeida
c8a5edb9ab 🔊 chore(base.py): change log level of sorted vertices to debug
The log level of the sorted vertices in the generator_build method of the Graph class has been changed from info to debug. This is because the sorted vertices are not critical information and are only useful for debugging purposes.
2023-06-22 22:10:19 -03:00
Gabriel Luiz Freitas Almeida
9417dd69f6 🐛 fix(vector_store.py): rename 'texts' parameter to 'documents' to improve semantics
 feat(vector_store.py): add support for Supabase client object to be passed in as a parameter
The 'texts' parameter has been renamed to 'documents' to improve semantics. This change makes it clearer that the parameter is a list of documents. Additionally, support for a Supabase client object has been added as a parameter. This allows for more flexibility in the initialization of the SupabaseVectorStore class.
2023-06-22 21:27:17 -03:00
Gabriel Luiz Freitas Almeida
c4f3476646 🆕 feat(config.yaml, utils.ts): add support for SupabaseVectorStore in vectorstores and add SupabaseIcon to nodeIcons
The SupabaseVectorStore is now supported in the vectorstores configuration in the config.yaml file. The SupabaseIcon has been added to the nodeIcons object in the utils.ts file to be able to display the icon for the SupabaseVectorStore.
2023-06-22 21:01:40 -03:00
Gabriel Luiz Freitas Almeida
fe9918cb8c 🚀 feat(vectorstores.py): add support for SupabaseVectorStore type
The SupabaseVectorStore type requires additional fields such as table_name, query_name, supabase_url, and supabase_service_key. These fields are added to the extra_fields list and are then added to the list of fields that are displayed to the user. This change allows the user to create a SupabaseVectorStore with the required fields.
2023-06-22 21:01:25 -03:00
Gabriel Luiz Freitas Almeida
6fc57bff5e 🚀 feat(loading.py): add support for initializing new vector store types
🚀 feat(vector_store.py): add support for initializing SupabaseVectorStore
This commit adds support for initializing new vector store types in the loading.py file. Specifically, the initialize_weaviate, initialize_faiss, and initialize_supabase functions were added to support the Weaviate, FAISS, and SupabaseVectorStore vector stores, respectively. The vector_store.py file was also updated to include the SupabaseVectorStore class and the initialize_supabase function. This allows for more flexibility in choosing vector stores for the application.
2023-06-22 21:01:11 -03:00
Gabriel Luiz Freitas Almeida
9b4e65c121 🚀 feat(vector_store.py): add support for Weaviate and FAISS vector stores
This commit adds support for Weaviate and FAISS vector stores to the existing Pinecone, Qdrant, and Chroma vector stores. The `initialize_weaviate` function initializes Weaviate and returns the class object. The `initialize_faiss` function initializes FAISS and returns the class object. These functions are used to initialize the respective vector stores. The `docs_in_params` function is used to check if there are documents in the parameters.
2023-06-22 19:59:33 -03:00
Gabriel Luiz Freitas Almeida
935b85a218 🚀 feat(vectorstores.py): add support for FAISS vector store type
The FAISS vector store type is now supported and can be configured with the folder_path and index_name fields. The folder_path field specifies the local path to the FAISS index, while the index_name field specifies the name of the index. Additionally, a new client_kwargs field has been added to support additional client configuration options.
2023-06-22 19:59:23 -03:00
Cristhian Zanforlin Lousa
f3e6db4df1 feat(chat.py): add error handling to stream_build function and improve log messages
 feat(schemas.py): add StreamData class to handle SSE messages
 feat(frontend): add RadialProgress and ProgressBar components
🔧 chore(frontend): add daisyui to project dependencies

🎨 style(headerComponent): comment out unused code
 feat(ui/progress.tsx): add Progress component to reuse in other components
 feat(types/components): add ProgressBarType and RadialProgressType to use in components
🎨 style(tailwind.config.js): add daisyui plugin to tailwind configuration to use in the project
2023-06-22 19:48:37 -03:00
Gabriel Luiz Freitas Almeida
d936589c3d 🚀 feat(tools.py): add return_direct field to PythonFunctionToolNode
The return_direct field is a boolean field that allows the user to specify whether the output of the Python function should be returned directly or wrapped in a dictionary. This field is added to the TemplateField list of the PythonFunctionToolNode class.
2023-06-22 19:28:13 -03:00
Gabriel Luiz Freitas Almeida
9255f66a5d 🐛 fix(manager.py): prevent base64 encoding of already encoded image data
The code now checks if the image data is already a string before attempting to base64 encode it. This prevents double encoding of the image data.
2023-06-22 19:22:30 -03:00
Gabriel Luiz Freitas Almeida
b548a642ff 🔥 refactor(schemas.py): remove commented out code for PredictRequest schema
The commented out code for the PredictRequest schema has been removed as it is no longer needed and only adds clutter to the file.
2023-06-22 19:04:48 -03:00
Gabriel Luiz Freitas Almeida
d5d6f7be57 🔨 refactor(schemas.py): rename PredictRequest to InputRequest and remove message field, add TweaksRequest and UpdateTemplateRequest
 feat(schemas.py): add ProcessResponse schema to represent the response of the process endpoint
The PredictRequest schema has been renamed to InputRequest to better reflect its purpose. The message field has been removed as it is not needed. TweaksRequest has been added to represent the request body for the tweaks endpoint. UpdateTemplateRequest has been added to represent the request body for updating a template. ProcessResponse has been added to represent the response of the process endpoint, which returns a dictionary as the result.
2023-06-22 19:04:19 -03:00
Gabriel Luiz Freitas Almeida
bfef9495f1 feat(vector_store.py): add support for initializing Pinecone and ChromaDB objects from existing indexes
The code has been refactored to improve readability by adding type hints and reformatting the code. The initialize_pinecone and initialize_chroma functions have been updated to support initializing objects from existing indexes. If there are no docs in the params, the functions will return an existing index. If there are docs in the params, the functions will create a new index. The initialize_qdrant function has not been changed.
🔨 refactor(vector_store.py): improve code readability by adding type hints and reformatting code
2023-06-22 19:03:53 -03:00
Gabriel Luiz Freitas Almeida
60886a93c4 🔨 refactor(process.py): remove unused imports and variables, simplify get_result_and_thought function
This commit removes unused imports and variables from the process.py file. The get_result_and_thought function has been simplified to take a dictionary of inputs instead of a single message string. The function now returns the output of the langchain_object instead of a tuple of result and thought.
2023-06-22 19:03:35 -03:00
Gabriel Luiz Freitas Almeida
2c44cde2e0 🚀 feat(memories.py): add input_key and output_key fields to MemoryFrontendNode template
The MemoryFrontendNode template now includes two new fields, input_key and output_key, which are string fields that are not required and are shown in the advanced section of the template. These fields can be used to specify the input and output keys for the memory node.
2023-06-22 19:03:05 -03:00
Gabriel Luiz Freitas Almeida
176738987b 🔀 refactor(endpoints.py): rename predict_flow endpoint to process_flow and update its functionality
🔀 refactor(constants.tsx): update BASE_API_URL to reflect the changes in the predict_flow endpoint name
The predict_flow endpoint has been renamed to process_flow to better reflect its functionality. The inputs are now passed as a dictionary instead of a PredictRequest object. The tweaks parameter is now optional and is passed as a dictionary. The response model has been updated to reflect the changes in the response. The BASE_API_URL constant in constants.tsx has been updated to reflect the changes in the endpoint name.
2023-06-22 18:57:17 -03:00
Gabriel Luiz Freitas Almeida
141c55643d 🚀 feat(vectorstores.py): add support for Pinecone vector store type
The VectorStoreFrontendNode class now supports the Pinecone vector store type. Two new fields, pinecone_api_key and pinecone_env, have been added to the extra_fields list. The add_extra_fields method has been updated to add these fields to the template if the type_name is Pinecone. The add_field method has been updated to add all fields in the extra_fields list to the template. The add_field method has also been updated to remove the text_key field if the field name is "text_key". Finally, the fields list has been updated to include the new fields.
2023-06-22 14:56:25 -03:00
Gabriel Luiz Freitas Almeida
228127289b 🚀 feat(config.yaml): add GitLoader and Pinecone to documentloaders and vectorstores respectively
GitLoader is added to documentloaders to allow loading of documents from a Git repository. Pinecone is added to vectorstores to allow for vector similarity search. These additions improve the functionality of the application by allowing for more diverse sources of data and more efficient search capabilities.
2023-06-22 13:51:53 -03:00
Gabriel Luiz Freitas Almeida
1a0d448e82 🚀 feat(validate.py): remove unused imports and endpoint for node validation
🚀 feat(base.py): update import statement for loading module
🚀 feat(vector_store.py): add initialization functions for pinecone, chroma, and qdrant
The unused imports and endpoint for node validation were removed from validate.py. The import statement for the loading module was updated in base.py. Initialization functions for pinecone, chroma, and qdrant were added to vector_store.py to allow for the creation of objects from the respective services.
2023-06-22 13:51:18 -03:00
Gabriel Luiz Freitas Almeida
1e61500f38 🚀 feat(chains.py): add return_source_documents field to template
The `return_source_documents` field is added to the template as a boolean field. It is not a required field and is set to `True` by default. This field is used to determine whether the source documents should be returned or not. It is displayed in the frontend and can be toggled by the user.
2023-06-22 13:48:44 -03:00
Gabriel Luiz Freitas Almeida
9ecba59d81 🔥 chore(types.py): remove unused _built_object_repr method from VectorStoreVertex
The _built_object_repr method was not being used and was therefore removed to improve code readability and maintainability.
2023-06-22 13:48:21 -03:00
Gabriel Luiz Freitas Almeida
796ce298f6 feat(documentloaders.py): add metadata field to document loader template
The function build_template was renamed to build_file_field to improve naming consistency. A metadata field of type dict was added to the document loader template to allow for additional information to be passed along with the document. The format_field method was updated to show the metadata field when it is present.
🔨 refactor(documentloaders.py): rename build_template function to build_file_field for better semantics
2023-06-22 13:47:43 -03:00
Gabriel Luiz Freitas Almeida
b8141dca7d 🚀 feat(loading.py): move loading into initialize module
📝 docs(initialize): add empty __init__.py file to initialize directory
The initialize directory was added to the project, but it was missing an __init__.py file. This file is necessary to make the directory a package and allow importing modules from it. An empty __init__.py file was added to the directory to fix this issue.
2023-06-22 13:45:04 -03:00
Gabriel Luiz Freitas Almeida
05bd7b415a
Adding Building Progress Bar with DaisyUI and Radial Progress (#522) 2023-06-22 00:20:01 +00:00
Gabriel Luiz Freitas Almeida
a534fa9337 Merge remote-tracking branch 'origin/main' into multipart_endpoint 2023-06-21 18:21:35 -03:00
Gabriel Luiz Freitas Almeida
96bce3da81 🐛 fix(utils.py): remove file extension from saved file name
🐛 fix(process.py): correctly update template_data with tweak_value
The file extension is no longer included in the saved file name to avoid issues with file extensions that may not be supported. In process.py, the tweak_value is now correctly updated in the template_data dictionary. The key is now set to "value" for all tweaks except for "file_path" where the key is set to the name of the tweak.
2023-06-21 17:45:12 -03:00
Gabriel Luiz Freitas Almeida
3781f1ddda 🔨 refactor(loading.py): extract persist parameter from params for Chroma vector store instantiation
 feat(loading.py): add persist parameter to Chroma vector store instantiation to enable persistence of vector store
The persist parameter is now extracted from the params dictionary before instantiating the Chroma vector store. This improves readability and reduces the complexity of the code. The persist parameter is now added to the Chroma vector store instantiation to enable persistence of the vector store. This allows the vector store to be reused across multiple sessions, improving performance and reducing the time required to load the vector store.
2023-06-21 17:27:57 -03:00
Gabriel Luiz Freitas Almeida
b7eab50672 🚀 feat(vectorstores.py): add support for Chroma vector store type
🐛 fix(vectorstores.py): add persist field to Weaviate vector store type
The `VectorStoreFrontendNode` class now supports the Chroma vector store type. A new boolean field `persist` has been added to the Chroma vector store type. The `add_extra_fields` method has been updated to add the `persist` field to the Chroma vector store type. The `format_field` method has been updated to include the `persist` field in the basic fields. Additionally, the `add_extra_fields` method has been updated to add the `weaviate_url` field to the Weaviate vector store type.
2023-06-21 17:27:40 -03:00
Gabriel Luiz Freitas Almeida
860c36146e 🎨 style(documentloaders.py): fix indentation and formatting issues
The changes in this commit are purely cosmetic. The indentation and formatting issues in the code have been fixed to improve readability and maintainability.
2023-06-21 16:18:11 -03:00
Gabriel Luiz Freitas Almeida
10db240a6b 🐛 fix(custom.py): rename QueryCheckerTool to QuerySQLCheckerTool to match the correct class name
The QueryCheckerTool class was renamed to QuerySQLCheckerTool to match the correct class name. This change ensures that the correct class is being used and avoids any potential errors that may arise from using the wrong class name.
2023-06-21 16:08:37 -03:00
Gabriel Luiz Freitas Almeida
bdd2076deb 🔒 chore(loading.py): remove code that deletes files after loading in instantiate_documentloader function
The save_uploaded_file function now uses the folder_name parameter instead of file_name to improve semantics. The appdirs library is now used to get the user cache directory and a folder for langflow cache is created. The sha256 hash of the file content is now used as the file name to avoid collisions and improve security. A folder is now created for each flow_id in the save_uploaded_file function. The code that deletes files after loading in the instantiate_documentloader function has been removed as it is unnecessary and can cause issues.
🐛 fix(endpoints.py): change file_name parameter to folder_name in save_uploaded_file function
🔒 chore(utils.py): use appdirs to get user cache directory and create a folder for langflow cache
🔒 chore(utils.py): use sha256 hash of file content as file name to avoid collisions and improve security
🔒 chore(utils.py): create folder for each flow_id in save_uploaded_file function
2023-06-21 15:43:27 -03:00