Commit graph

704 commits

Author SHA1 Message Date
Gabriel Luiz Freitas Almeida
5a76d36cd4 🔧 chore(utils.py): refactor build_input_keys_response function to return an empty string for each input key
The build_input_keys_response function has been refactored to return an empty string for each input key in the langchain_object. This change ensures consistency in the response structure and provides a default value for each input key.
2023-06-28 11:44:07 -03:00
Gabriel Luiz Freitas Almeida
40179ee011 🔧 chore(validate.py): add input_types to template_field in post_validate_prompt function
The input_types attribute is added to the template_field in the post_validate_prompt function. This change allows for specifying the input types that are accepted for the template field, providing more flexibility and control over the input data.
2023-06-28 11:33:56 -03:00
Gabriel Luiz Freitas Almeida
0ecb531749 🔧 fix(base.py): add input_types property to TemplateFieldCreator class
🔧 fix(index.ts): add input_types property to TemplateVariableType interface
The `input_types` property is added to the `TemplateFieldCreator` class in `base.py` and the `TemplateVariableType` interface in `index.ts`. This change allows for specifying the input types for template fields and template variables, respectively.
2023-06-28 11:33:42 -03:00
Gabriel Luiz Freitas Almeida
6cf9639128 feat: add template to input_keys_response 2023-06-28 10:58:55 -03:00
Gabriel Luiz Freitas Almeida
b8f150d1ac format 2023-06-28 08:47:42 -03:00
Gabriel Luiz Freitas Almeida
c39e94d584 🔨 refactor(base.py): change message parameter to inputs parameter to improve semantics
The message parameter was not being used in the function, so it was changed to inputs to better reflect the purpose of the parameter.
2023-06-27 21:32:46 -03:00
Gabriel Luiz Freitas Almeida
5a9c1ae1b7 🔀 chore(schemas.py): add support for dict type in message field of ChatMessage schema
The message field of the ChatMessage schema now supports a dictionary type in addition to the previous string and None types. This change was made to allow for more complex messages to be sent and received in the chat.
2023-06-27 21:32:09 -03:00
Gabriel Luiz Freitas Almeida
526f5847c6 🐛 fix(validate.py): remove unused variables from prompt.frontend_node.template
 feat(validate.py): add support for dynamic template fields in prompt validation
The changes in this commit remove unused variables from the prompt.frontend_node.template. The commit also adds support for dynamic template fields in prompt validation. The new variables are added to the template and the custom_fields list. The old custom_fields list is copied and then updated with the new variables. The variables that are not in the template anymore are removed from the prompt.frontend_node.template.
2023-06-27 20:54:00 -03:00
Gabriel Luiz Freitas Almeida
2cf16de113 🐛 fix(validate.py): remove unused template fields from frontend_node
The code now removes any unused template fields from the frontend_node to avoid any potential errors.
2023-06-27 19:51:18 -03:00
Gabriel Luiz Freitas Almeida
753eae28c7 🐛 fix(validate.py): change dict() to to_dict() method to fix TypeError
The `dict()` method was causing a TypeError when trying to serialize the `template_field` object. The `to_dict()` method is the correct method to use to serialize the object.
2023-06-27 19:49:30 -03:00
Gabriel Luiz Freitas Almeida
e760f22847 🐛 fix(base.py): change frontend_node field in ValidatePromptRequest to use FrontendNodeRequest instead of FrontendNode
🔥 chore(base.py): remove unused FrontendNodeRequest class
🔨 refactor(validate.py): modify post_validate_prompt function to update the template field in the frontend_node object
The ValidatePromptRequest class was using the FrontendNode class instead of the FrontendNodeRequest class, which caused an error. The unused FrontendNodeRequest class was removed. The post_validate_prompt function was modified to update the template field in the frontend_node object instead of appending to the fields list.
2023-06-27 19:18:34 -03:00
Gabriel Luiz Freitas Almeida
47494dd9a8 🔥 chore(endpoints.py): remove unused custom_component endpoint
The custom_component endpoint was commented out and unused. It has been removed to improve code readability and maintainability.
2023-06-27 19:18:32 -03:00
Gabriel Luiz Freitas Almeida
38404e1243 🚀 feat(frontend_node): add custom_fields attribute to FrontendNode class
The FrontendNode class now has a new attribute called custom_fields, which is a list of strings. This attribute can be used to store any custom fields that are specific to a particular frontend node. This change allows for more flexibility in the data that can be stored in a FrontendNode object.
2023-06-27 18:23:38 -03:00
Gabriel Luiz Freitas Almeida
880fa5034f 🚀 feat(api): add support for frontend_node in validate_prompt endpoint
 feat(base.py): add frontend_node parameter to ValidatePromptRequest and PromptValidationResponse models
The validate_prompt endpoint now accepts a frontend_node parameter in the ValidatePromptRequest model. This parameter is used to add input variables to the frontend_node's template fields and custom fields. The PromptValidationResponse model now includes the frontend_node parameter to return the updated frontend_node object.
2023-06-27 18:23:12 -03:00
Gabriel Luiz Freitas Almeida
bc4edde8d7 Merge remote-tracking branch 'origin/python_custom_node_component' into form_io 2023-06-27 18:05:14 -03:00
Gabriel Luiz Freitas Almeida
43c06e0c4f Merge remote-tracking branch 'origin/dynamicNode' into form_io 2023-06-27 18:01:11 -03:00
Gabriel Luiz Freitas Almeida
3c1b86ebe6 🐛 fix(chat.py): change event name from "input_keys" to "message" in stream_build function
The event name was changed from "input_keys" to "message" to improve semantics and consistency with the rest of the codebase.
2023-06-27 16:38:42 -03:00
gustavoschaedler
5d430f9364 Refactor ClassCodeExtractor to extract the entrypoint function arguments and return type\nAdd validation of correct format for custom_component code\nAdd function to build a template for custom_component with its code as a field value. 2023-06-27 19:25:44 +01:00
Gabriel Luiz Freitas Almeida
8107f9e332 feat(loading.py): add support for new prompt templates in instantiate_prompt function
The config.yaml file has been updated to include new prompt templates. In types.py, the input_variables list was not being cleared when prompt or messages were present, which has been fixed. The instantiate_prompt function in loading.py has been updated to support the new prompt templates.
🔀 chore(config): add new prompt templates to config.yaml
🐛 fix(types.py): fix input_variables not being cleared when prompt or messages are present
2023-06-27 12:06:23 -03:00
Gabriel Luiz Freitas Almeida
d3a2367932 🚀 feat(custom.py): add AgentType enum to improve readability and type safety
The `AgentType` enum is added to the `langchain.agents.custom` module to improve readability and type safety. The `InitializeAgent` class now uses the `AgentType` enum to ensure that the `agent` parameter is a valid value from the enum.
2023-06-26 13:27:34 -03:00
Gabriel Luiz Freitas Almeida
89286c6456 🔨 refactor(utils.py): extract build_input_keys_response function to improve code reusability
🚀 feat(chat.py): use build_input_keys_response function to build input keys response
The build_input_keys_response function was extracted from the remove_api_keys function to improve code reusability. It builds the input keys response object, which contains the input keys and memory keys of a langchain object. The chat.py file now uses this function to build the input keys response object instead of building it manually. This improves code readability and reduces code duplication.
2023-06-26 10:52:53 -03:00
Gabriel Luiz Freitas Almeida
ebcaedb840 feat(base.py): add input validation for PromptTemplate to ensure that the template and input variables are valid
The commented out code was removed to improve code readability. Input validation was added to ensure that the template and input variables are valid before creating a PromptTemplate object. This helps to prevent errors that may occur when the object is created with invalid input.
🔒 chore(base.py): remove commented out code and add input validation for PromptTemplate
2023-06-26 10:20:48 -03:00
Gabriel Luiz Freitas Almeida
ff0abf5183 🔧 refactor(chat.py): refactor stream_build function to send input_keys to the client
The stream_build function has been refactored to send input_keys to the client if the langchain_object has the attribute "input_keys". This change improves the user experience by providing the client with the necessary input keys to continue the conversation.
2023-06-26 10:20:28 -03:00
Gabriel Luiz Freitas Almeida
a3efa8fe5d 🐛 fix(utils.py): fix import order to avoid import errors
The import order was changed to avoid import errors. The import of langchain was moved to the top of the file to avoid circular import errors.
2023-06-25 19:52:49 -03:00
Gabriel Luiz Freitas Almeida
5f56384dce 🚀 feat(__main__.py): add support for cache configuration
The `update_settings` function now accepts a `cache` parameter that allows the user to specify the type of cache to use. The `cache` parameter is set to a default value of `SQLiteCache` and can be overridden by setting the `LANGCHAIN_CACHE` environment variable. This feature improves the flexibility of the application as it allows the user to choose the type of cache that best suits their needs.
2023-06-25 18:20:21 -03:00
Gabriel Luiz Freitas Almeida
a15da8eb0d 🚀 feat(settings.py): add cache configuration option
The cache configuration option has been added to the settings file with a default value of "InMemoryCache". This allows the user to choose the cache implementation they want to use.
2023-06-25 18:20:13 -03:00
Gabriel Luiz Freitas Almeida
89c2e5b064 🚀 feat(utils.py): add support for configurable LLM caching
This commit adds support for configurable LLM caching. The `setup_llm_caching` function now imports the cache class from the `langchain.cache` module based on the `settings.cache` value. If the import is successful, the `langchain.llm_cache` is set to an instance of the cache class. If the import fails, a warning is logged. If an exception is raised during the setup, a warning is logged with the error message.
2023-06-25 18:19:59 -03:00
Gabriel Luiz Freitas Almeida
29542f4cf8 🔧 chore(utils.py): add setup_llm_caching function to set up LLM caching
 feat(main.py): call setup_llm_caching function on app startup
The `setup_llm_caching` function is added to `utils.py` to set up LLM caching. The function is then called on app startup in `main.py` using the `app.on_event("startup")` method. This improves the performance of the application by caching LLM objects.
2023-06-25 09:12:41 -03:00
Gabriel Luiz Freitas Almeida
363e6459cb 🚀 feat(documentloaders.py): add SlackDirectoryLoader to the list of document loaders
The SlackDirectoryLoader is added to the list of document loaders in the DocumentLoaderFrontNode class. This allows users to load zip files from Slack into the application.
2023-06-23 17:52:59 -03:00
Gabriel Luiz Freitas Almeida
d9ec262752 formatting 2023-06-23 16:51:54 -03:00
Gabriel Luiz Freitas Almeida
0bab7ae714 🚀 feat(documentloaders.py): add fields to GitLoader template to support repository path, clone URL, branch, and file filter
The GitLoader template now has four new fields: repo_path, clone_url, branch, and file_filter. These fields allow the user to specify the repository path, clone URL, branch, and file extensions to be loaded. This improves the flexibility of the GitLoader template and allows it to be used in a wider range of scenarios. Additionally, a minor change was made to the add_extra_fields method to ensure that the field.show attribute is set to True for all fields.
2023-06-23 16:50:22 -03:00
Gabriel Luiz Freitas Almeida
15ac75ecc5 🔨 refactor(loading.py): add support for filtering files by extension in document loader
The `instantiate_documentloader` function now supports filtering files by extension using a `file_filter` parameter. The parameter is a string of comma-separated extensions, and the function now converts it into a lambda function that filters files based on whether their name contains any of the specified extensions. This improves the flexibility of the document loader by allowing it to load only specific types of files.
2023-06-23 16:50:11 -03:00
Gabriel Luiz Freitas Almeida
96bab94b14 🔥 chore(chains.py): remove unnecessary commented line
The commented line is not needed and can be safely removed.
2023-06-23 16:13:16 -03:00
Gabriel Luiz Freitas Almeida
02c6d77b64 🐛 fix(base.py): sort fields alphabetically before sorting by DIRECT_TYPES
The fields in the Template class were previously sorted by DIRECT_TYPES, which caused issues when fields had the same field_type. Sorting alphabetically first ensures that fields are sorted in a consistent manner before sorting by DIRECT_TYPES.
2023-06-23 15:53:48 -03:00
Gabriel Luiz Freitas Almeida
99121d95c1 🔀 refactor(loading.py): use dictionary to initialize vector stores
The `instantiate_vectorstore` function now uses a dictionary to initialize vector stores instead of a series of if-else statements. This improves the readability and maintainability of the code. A new dictionary `vecstore_initializer` is added to `vector_store.py` to map the class names of vector stores to their respective initialization functions.
2023-06-23 14:32:15 -03:00
Gabriel Luiz Freitas Almeida
fb7bcb50e5 🚀 feat(loading.py): add support for MongoDBAtlasVectorSearch vector store
The `instantiate_vectorstore` function now supports the `MongoDBAtlasVectorSearch` vector store. This allows for the use of MongoDB Atlas as a vector store for Langflow. The `search_kwargs` parameter is now supported for all vector stores that have a `as_retriever` method. This allows for the configuration of the vector store's search parameters.
2023-06-23 13:20:02 -03:00
Gabriel Luiz Freitas Almeida
ea0231025f feat(vectorstores.py): add support for index_name parameter in MongoDBAtlasVectorSearch template
The hardcoded values for db_name, collection_name, and index_name have been removed from the initialize_mongodb function and are now required parameters. This makes the function more flexible and allows it to be used with different databases and collections. The support for the index_name parameter has been added to the MongoDBAtlasVectorSearch template in vectorstores.py, which allows the user to specify the name of the index to be used in the search.
🐛 fix(vector_store.py): remove hardcoded values for db_name, collection_name, and index_name and make them required parameters
2023-06-23 13:19:30 -03:00
Gabriel Luiz Freitas Almeida
4cc2fae52b 🚀 feat(langflow): add support for MongoDB Atlas Vector Search in vectorstores
 feat(langflow): add support for search_kwargs field in VectorStoreFrontendNode
The changes add support for MongoDB Atlas Vector Search in the vectorstores. The `MongoDBAtlasVectorSearch` class is now imported and initialized in `vector_store.py`. The `initialize_mongodb` function is added to initialize the MongoDB Atlas Vector Search class. The `VectorStoreFrontendNode` class is updated to add the `mongodb_atlas_cluster_uri`, `collection_name`, and `db_name` fields. The `search_kwargs` field is also added to the `VectorStoreFrontendNode` class to allow users to pass additional search parameters to the vector store.
2023-06-23 12:38:02 -03:00
Gabriel Luiz Freitas Almeida
dc0a772635 🚚 chore(endpoints.py): reorder endpoints to keep backwards compatibility
The `/predict/{flow_id}` endpoint was moved above the `/process/{flow_id}` endpoint to maintain backwards compatibility with existing clients.
2023-06-23 12:36:46 -03:00
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