Commit graph

1,187 commits

Author SHA1 Message Date
Gabriel Luiz Freitas Almeida
5d226d43d1 🐛 fix(OpenAIConversationalAgent.py): change parameter name from model_name to model to improve clarity and consistency 2023-08-09 21:48:40 -03:00
Gabriel Luiz Freitas Almeida
44f4fc1e62 feat(OpenAIConversationalAgent.py): add implementation of ConversationalAgent class for OpenAI conversational agent 2023-08-09 21:38:39 -03:00
Gabriel Luiz Freitas Almeida
31e02fe25c feat(ConversationalAgent.py): add ConversationalAgent component to handle conversational interactions using OpenAI's function calling API
This commit adds a new file `ConversationalAgent.py` to the `src/backend/langflow/components/agents` directory. The `ConversationalAgent` class is a custom component that represents a conversational agent capable of using OpenAI's function calling API.

The `ConversationalAgent` class has the following features:
- It inherits from the `CustomComponent` class.
- It has a `display_name` attribute set to "OpenaAI Conversational Agent".
- It has a `description` attribute set to "Conversational Agent that can use OpenAI's function calling API".
- It implements the `build_config` method to define the configuration options for the agent.
- It implements the `build` method to create an instance of the `AgentExecutor` class, which represents the agent's execution environment.
- The `build` method takes several parameters, including `model_name`, `tools`, `memory`, `system_message`, and `max_token_limit`.
- It uses the `ChatOpenAI` class from the `langchain.chat_models` module to create an instance of the OpenAI language model.
- It uses the `ConversationTokenBufferMemory` class from the `langchain.memory.token_buffer` module to handle conversation history and token buffering.
- It uses the `OpenAIFunctionsAgent` class from the `langchain.agents.openai_functions_agent.base` module to create an instance of the OpenAI functions agent.
- It returns an instance of the `AgentExecutor` class with the agent, tools, memory, verbose, and return_intermediate_steps parameters set.

📝 feat(__init__.py): add empty __init__.py file to the agents directory

This commit adds an empty `__init__.py` file to the `src/backend/langflow/components/agents` directory. The `__init__.py` file is necessary to make the `agents` directory a Python package.
2023-08-09 21:37:11 -03:00
Gabriel Luiz Freitas Almeida
2725e24ced 🚀 feat(constants.py): add BaseMemory to LANGCHAIN_BASE_TYPES to support custom memory implementation in Langchain interface
📝 WHY: The addition of BaseMemory to LANGCHAIN_BASE_TYPES allows for the customization of the memory component in the Langchain interface. This enables users to implement their own memory functionality according to their specific needs.
2023-08-09 21:11:00 -03:00
Gabriel Luiz Freitas Almeida
67f8bb9dab 🐛 fix(base.py): fix memory inputs only if langchain_object is not an instance of AgentExecutor to prevent unnecessary fix
🔀 chore(base.py): merge changes from langchain.agents.agent module to base module
2023-08-09 21:10:31 -03:00
Gabriel Luiz Freitas Almeida
8c41415a32 🐛 fix(custom_component.py): handle case when return_type is None to prevent errors
🐛 fix(test_custom_component.py): update assertion to expect return_type as a list instead of a string
🐛 fix(test_vectorstore_template.py): update assertion to check if all vectorstores in settings are present in the response
2023-08-09 17:50:03 -03:00
Gabriel Luiz Freitas Almeida
e1407d0595 🔧 chore(Metaphor.py): refactor build method to accept additional parameters for improved configurability
🔧 chore(Metaphor.py): update search method to use the provided parameters for use_autoprompt and search_num_results
🔧 chore(Metaphor.py): update find_similar method to use the provided parameter for similar_num_results
2023-08-09 17:12:22 -03:00
Gabriel Luiz Freitas Almeida
29766ecaf0 🐛 fix(Metaphor.py): ignore type error for importing Metaphor from metaphor_python
🐛 fix(Metaphor.py): ignore type error for returning a list with mixed types
🐛 fix(Vectara.py): add condition to check if documents and embedding are not None before creating Vectara instance
🐛 fix(CustomComponent.py): change return type of get_function_entrypoint_return_type to List[str] to match the actual return value
2023-08-09 15:53:18 -03:00
Gabriel Luiz Freitas Almeida
9bbdd9465b 🔨 refactor(Vectara.py): reorganize function parameters for better readability and maintainability
🔧 chore(Vectara.py): add "embedding" parameter to the build function to support custom embeddings in VectaraComponent
2023-08-09 15:47:22 -03:00
Gabriel Luiz Freitas Almeida
e5e23a1da6 🐛 fix(component.py): add support for "documentation" field in template_config to properly handle component documentation
🐛 fix(types.py): update_attributes function now updates frontend_node with "documentation" field from template_config
2023-08-09 15:32:41 -03:00
Gabriel Luiz Freitas Almeida
38b6831b57 feat(Metaphor.py): add MetaphorToolkit component to langflow toolkit
The MetaphorToolkit component is added to the langflow toolkit. It provides functionality for searching metaphors using the Metaphor API. The component includes three tools: search, get_contents, and find_similar. The search tool allows users to search for metaphors using a query. The get_contents tool retrieves the contents of a webpage based on the ids returned from the search tool. The find_similar tool finds search results similar to a given URL returned from the search tool.

The MetaphorToolkit component is still in beta and requires a Metaphor API key to function. The API key is stored securely and can be configured in the field_config of the component. For more information, refer to the documentation: [Metaphor Toolkit Documentation](https://python.langchain.com/docs/integrations/tools/metaphor_search)
2023-08-09 15:29:11 -03:00
Gabriel Luiz Freitas Almeida
d16d916952 🐛 fix(custom_component.py): improve parsing of return type in CustomComponent class
 feat(custom_component.py): add support for parsing return type when it is a Union of types in CustomComponent class
2023-08-09 15:28:39 -03:00
Gabriel Luiz Freitas Almeida
b3e512f55f feat(PromptRunner.py): add PromptRunner component to run a Chain with a given PromptTemplate
 feat(Vectara.py): add VectaraComponent to implement Vector Store using Vectara
🔧 chore(vectorstores): add empty __init__.py file to the vectorstores directory
2023-08-09 14:37:20 -03:00
Gabriel Luiz Freitas Almeida
72f88e1a16 🐛 fix(custom_component.py): handle return_type as a Union[type1, type2] and add support for multiple return types in add_base_classes function
🐛 fix(types.py): handle multiple return types in add_base_classes function and raise HTTPException with appropriate error message if return type is invalid
2023-08-09 14:36:45 -03:00
Gabriel Luiz Freitas Almeida
f7afbd89b0 🔧 chore(vector_store.py): change the way pinecone_api_key and pinecone_env are retrieved from params dictionary to improve code readability and remove unnecessary code duplication 2023-08-09 08:48:53 -03:00
Gabriel Luiz Freitas Almeida
d6bb6bf3d9 🐛 fix(base.py): handle case where database and tables already exist to prevent error and log a debug message 2023-08-08 17:41:17 -03:00
Gabriel Luiz Freitas Almeida
b8d8ed8283 Revert "Revert "Fixes flows without input_keys not being runnable" (#731)"
This reverts commit 352e74cbc7, reversing
changes made to 3f531a1157.
2023-08-08 15:12:37 -03:00
Gabriel Luiz Freitas Almeida
f9b392d5b8
Revert "Fixes flows without input_keys not being runnable" 2023-08-08 15:02:16 -03:00
Gabriel Luiz Freitas Almeida
f61d265e77 🔧 chore(vector_store.py): refactor initialize_chroma function to remove unnecessary if conditions and improve code readability
🔧 chore(vector_store.py): remove chroma_server_ keys from params dictionary if not needed to avoid potential conflicts
2023-08-07 18:52:19 -03:00
Gabriel Luiz Freitas Almeida
239811dbff 🐛 fix(chat.py): change "input_keys" value from an empty dictionary to None to improve readability and reduce redundancy 2023-08-07 18:46:13 -03:00
Gabriel Luiz Freitas Almeida
9ee76fd18f 🐛 fix(manager.py): change default value of chat_inputs from empty string to empty dictionary to improve data consistency and prevent potential errors
🐛 fix(utils.py): handle case when chat_inputs.message is None by assigning an empty dictionary to it to prevent potential errors
2023-08-07 18:37:49 -03:00
Gabriel Luiz Freitas Almeida
a0aa88f039 🔀 chore(types.py): import merge_nested_dicts_with_renaming from langflow.api.utils to use it in build_langchain_custom_component_list_from_path function
🐛 fix(types.py): replace `merge_nested_dicts` with `merge_nested_dicts_with_renaming` in `build_langchain_custom_component_list_from_path` function to fix a bug
2023-08-06 12:28:05 -03:00
Gabriel Luiz Freitas Almeida
819eb703d1 🐛 fix(utils.py): add function merge_nested_dicts_with_renaming to handle merging nested dictionaries with renaming of keys
🐛 fix(endpoints.py): update import statement to import merge_nested_dicts_with_renaming from utils.py
🐛 fix(endpoints.py): update function call to merge_nested_dicts_with_renaming to handle merging of native and custom components
🐛 fix(types.py): remove unused import statement for merge_nested_dicts from utils.py
2023-08-05 12:11:28 -03:00
Gabriel Luiz Freitas Almeida
1aed2b60a2 🔧 fix(endpoints.py): change log message to improve clarity and accuracy
🔧 fix(endpoints.py): change log message to provide more detailed information about loaded custom components
2023-08-05 12:09:46 -03:00
Gabriel Luiz Freitas Almeida
c8a5e0724d 🐛 fix(utilities.py): handle field_type with "typing_extensions" prefix in UtilitiesFrontendNode class
 feat(utilities.py): improve handling of field_type in UtilitiesFrontendNode class to support different formats

Fixes #707
2023-08-04 18:12:28 -03:00
Gabriel Luiz Freitas Almeida
2bc4420f62 🔧 chore(vector_store.py): remove unused code related to initializing ChromaDB object
🔧 chore(vector_store.py): remove unused import statement for chromadb module
2023-08-04 17:22:05 -03:00
Gabriel Luiz Freitas Almeida
35ec2e0867 🐛 fix(vector_store.py): build Chroma settings if any of the chroma_server_ params are present in params
 feat(vectorstores.py): add new fields for Chroma vector store configuration
2023-08-04 16:56:36 -03:00
Gabriel Luiz Freitas Almeida
520bbc35b0 🔥 refactor(chat.py): remove unused code line that accessed vertex_type attribute of a vertex object 2023-08-04 15:13:09 -03:00
Gabriel Luiz Freitas Almeida
bb3be161bd 🐛 fix(base.py): fix typo in "successfully" in the built object representation message
🐛 fix(custom_component.py): add support for custom representation of repr_value if it is a dictionary by using yaml.dump() function
2023-08-04 13:49:54 -03:00
Gabriel Luiz Freitas Almeida
19c6dc5ca7 🐛 fix(types.py): fix syntax error in adding component to valid menu dictionary 2023-08-04 11:35:48 -03:00
Gabriel Luiz Freitas Almeida
06e8dd626f 🐛 fix(chat.py): fix debug log message to include vertex type and output 2023-08-04 11:11:03 -03:00
Gabriel Luiz Freitas Almeida
b25098e24b 🐛 fix(custom_component.py): handle case when repr_value is a string in custom_repr method 2023-08-04 11:10:29 -03:00
Gabriel Luiz Freitas Almeida
47fe4481f3 🐛 fix(types.py): fix syntax error in adding component_template to valid_menu
 feat(types.py): improve component name generation logic based on component_output_types and file name
2023-08-04 10:45:28 -03:00
Gabriel Luiz Freitas Almeida
1a02e61701 🔧 chore(loading.py): add debug log to show instantiation of node_type and base_type 2023-08-04 09:55:55 -03:00
Gabriel Luiz Freitas Almeida
e23e58f7f7 🐛 fix(utils.py): simplify import_custom_component function by directly importing the CustomComponent class 2023-08-04 09:55:32 -03:00
Gabriel Luiz Freitas Almeida
e08d62e6e9 🔧 fix(directory_reader.py): fix typo in variable name 'filtered' to improve code readability 2023-08-04 09:55:10 -03:00
Gabriel Luiz Freitas Almeida
2f776cc882 🔧 chore(component.py): add missing import for 'Any' type in typing module to fix type hinting
🚀 feat(component.py): add 'build' method to Component class to enforce implementation in subclasses
2023-08-04 09:53:50 -03:00
Gabriel Luiz Freitas Almeida
27c7923ee3 🔨 refactor(types.py): add logging statements for debugging purposes in build_langchain_template_custom_component function
🔨 refactor(types.py): add logging statements for debugging purposes in build_and_validate_all_files function
🔨 refactor(types.py): add logging statements for debugging purposes in build_valid_menu function
🔨 refactor(types.py): add logging statements for debugging purposes in build_invalid_menu function
2023-08-04 09:52:31 -03:00
Gabriel Luiz Freitas Almeida
d3fab9ac44 🔧 fix(endpoints.py): add logging statements to improve debugging and monitoring
🔧 fix(endpoints.py): add logging statements to improve debugging and monitoring in the get_all() function
2023-08-04 09:52:07 -03:00
Gabriel Luiz Freitas Almeida
56dfa2015c 🐛 fix(settings.py): fix issue with extending components_path list with duplicate paths
 feat(settings.py): add logging of components_path and updated settings values for debugging purposes
2023-08-04 09:51:41 -03:00
Gabriel Luiz Freitas Almeida
e985b15af6 🐛 fix(types.py): update error message to include the output types of the component that failed to load for better debugging 2023-08-04 08:36:53 -03:00
Gabriel Luiz Freitas Almeida
2efa7022f0 🔧 fix(settings.py): convert BASE_COMPONENTS_PATH to string to ensure compatibility with other parts of the codebase
🔧 fix(settings.py): update COMPONENTS_PATH to accept a list of strings instead of a list of Paths to improve flexibility and compatibility
🔧 fix(settings.py): update set_components_path method to handle LANGFLOW_COMPONENTS_PATH as a list of paths or a single path string
2023-08-04 08:34:25 -03:00
Gabriel Luiz Freitas Almeida
941ec72fc1 feat(components): add new custom component and chains package
- Added a new file `__init__.py` in the `components` directory to import the `CustomComponent` class from `langflow.interface.custom.custom_component`.
- Created a new package `chains` in the `components` directory.
2023-08-04 08:34:01 -03:00
Gabriel Luiz Freitas Almeida
a1cca2afc8 🔨 refactor(custom_component.py): read build method 2023-08-04 08:33:39 -03:00
Gabriel Luiz Freitas Almeida
840629bef4 🔧 chore(constants.py): import BaseOutputParser from langchain.schema to use it in LANGCHAIN_BASE_TYPES 2023-08-04 08:31:36 -03:00
Gabriel Luiz Freitas Almeida
e9400c04df 🔀 chore(utils.py): rename cache variable to CACHE for consistency with other settings
🔀 chore(utils.py): rename `LANGFLOW_LANGCHAIN_CACHE` environment variable to `CACHE` for clarity and consistency
2023-08-04 07:49:42 -03:00
Gabriel Luiz Freitas Almeida
91ce018927 🔧 chore(settings.py): update debug log messages for setting default components path 2023-08-04 07:45:45 -03:00
Gabriel Luiz Freitas Almeida
0cf1fb09a9 🐛 fix(prompt_runner.py): fix issue with accessing result content when invoking chain with an empty dict input 2023-08-04 00:20:16 -03:00
Gabriel Luiz Freitas Almeida
d5a33d56bf 🔥 refactor(component.py): remove unused build method from Component class
🔥 refactor(custom_component.py): remove unused build method from CustomComponent class
2023-08-04 00:19:52 -03:00
Gabriel Luiz Freitas Almeida
d99bcbd80b feat(prompt_runner.py): add PromptRunner component to run a Chain with a given PromptTemplate 2023-08-04 00:11:00 -03:00