Commit graph

1,226 commits

Author SHA1 Message Date
Gabriel Luiz Freitas Almeida
938fcbab62 🐛 fix(GetRequest.py): change variable name 'url' to 'urls' to improve clarity and semantics
 feat(PatchRequest.py): add new component 'PatchRequest' to make PATCH requests to a given URL
🐛 fix(PostRequest.py): change variable name 'document' to 'documents' to improve clarity and semantics
2023-08-22 16:37:43 -03:00
Gabriel Luiz Freitas Almeida
05c8f5a0f8 🐛 fix(GetRequest.py): update orjson_dumps function call to set indent_2 parameter to False
🐛 fix(GetRequest.py): update return type annotation of get_documents method to list[Document]
🐛 fix(PostRequest.py): update return type annotation of post_document method to list[Document]
2023-08-22 16:13:07 -03:00
Gabriel Luiz Freitas Almeida
6fa2258aac 🔧 chore(manager.py): import orjson library for improved JSON serialization and deserialization performance 2023-08-22 16:12:42 -03:00
Gabriel Luiz Freitas Almeida
70f98f9150 🐛 fix(custom_component.py): extract inner type from return type if it starts with 'list' or 'List' to handle list types correctly 2023-08-22 16:12:30 -03:00
Gabriel Luiz Freitas Almeida
1dbe776e6a feat(utils.py): add function extract_inner_type to extract the inner type from a type hint that is a list 2023-08-22 16:11:47 -03:00
Gabriel Luiz Freitas Almeida
39ae660e45 🔧 chore(loading.py): add import statement for json module to fix missing import error 2023-08-22 16:11:37 -03:00
Gabriel Luiz Freitas Almeida
6634e8864b 🔧 chore(vector_store.py): import orjson library for JSON serialization and deserialization
🐛 fix(vector_store.py): fix typo in function comment, change "OR" to "or" for better readability
2023-08-22 16:11:24 -03:00
Gabriel Luiz Freitas Almeida
59652b8875 🔧 chore(prebuilt.py): import missing JSON_PREFIX and JsonToolkit to fix unresolved references
🔧 chore(prebuilt.py): import missing JSON_PREFIX and JsonToolkit to fix unresolved references in prebuilt.py
2023-08-22 16:11:10 -03:00
Gabriel Luiz Freitas Almeida
8098cea405 🐛 fix(JSONDocumentBuilder.py): fix JSON serialization issue by using orjson_dumps function
🔒 chore(JSONDocumentBuilder.py): add type checking and raise TypeError for invalid input
2023-08-22 15:36:49 -03:00
Gabriel Luiz Freitas Almeida
0d53db1653 🐛 fix(PostRequest.py): add validation for document parameter to only accept Document or list of Documents to prevent errors 2023-08-22 15:33:44 -03:00
Gabriel Luiz Freitas Almeida
4efe06e440 🐛 fix(PostRequest.py): remove redundant session creation and move it to the calling function to improve efficiency and reusability
 feat(PostRequest.py): add support for processing multiple documents in a single request to improve performance and reduce network overhead
2023-08-22 15:32:00 -03:00
Gabriel Luiz Freitas Almeida
696a139171 🐛 fix(GetRequest.py): handle request timeout by returning a Document with status code 408 and "Request Timed Out" content
 feat(GetRequest.py): add timeout parameter to the build method to allow configuring the request timeout value
2023-08-22 15:31:47 -03:00
Gabriel Luiz Freitas Almeida
5fa8281e94 🐛 fix(JSONDocumentBuilder.py): handle both single document and list of documents when building JSON document
 feat(JSONDocumentBuilder.py): add support for building JSON document from a list of documents
2023-08-22 14:59:00 -03:00
Gabriel Luiz Freitas Almeida
6e18e795ff 🔧 chore(GetRequest.py): refactor GetRequest class to store the returned documents in a repr_value attribute for debugging purposes 2023-08-22 14:58:52 -03:00
Gabriel Luiz Freitas Almeida
62b9bb523c 🔧 fix(GetRequest.py): improve code readability and add support for multiple URLs and headers in GetRequest component
🔧 fix(PostRequest.py): improve code readability and add support for multiple documents, URLs, and headers in PostRequest component
2023-08-22 14:56:34 -03:00
Gabriel Luiz Freitas Almeida
b8b9bb25bc 📦 feat(JSONDocumentBuilder.py): add JSONDocumentBuilder component to build a Document containing a JSON object using a key and another Document page content
📝 docs(JSONDocumentBuilder.py): add description and field configuration for JSONDocumentBuilder component
2023-08-22 11:56:01 -03:00
Gabriel Luiz Freitas Almeida
fb028e55b8 feat(GetRequest.py): add GetRequest component to make a GET request to a given URL
 feat(PostRequest.py): add PostRequest component to make a POST request to a given URL
2023-08-22 11:38:48 -03:00
Gabriel Luiz Freitas Almeida
22072084f8 🐛 fix(schemas.py): fix indentation issue in the __str__ method of StreamData class to improve code readability 2023-08-22 11:38:36 -03:00
Gabriel Luiz Freitas Almeida
44ce4eac5c 🔧 fix(endpoints.py): refactor logger.debug statement to improve readability and provide more information
🔧 fix(base.py): remove redundant logger.debug statement
🔧 fix(directory_reader.py): refactor logger.debug statement to improve readability and provide more information
🔧 fix(types.py): refactor logger.debug statement to improve readability and provide more information
2023-08-22 11:38:24 -03:00
Gabriel Luiz Freitas Almeida
ecf217dce8 🐛 fix(chat.py): remove unnecessary try-except block for building the graph and handle any exceptions thrown by Graph.from_payload() method
🔧 refactor(chat.py): improve logging output for built node parameters in stream_build() method
2023-08-22 11:37:51 -03:00
Gabriel Luiz Freitas Almeida
d0aa3261f1 🐛 fix(flows.py): change json.loads to orjson.loads for improved performance and compatibility with orjson library
🐛 fix(schemas.py): change json.dumps to orjson_dumps for improved performance and compatibility with orjson library
🐛 fix(utils.py): change json.loads to orjson.loads for improved performance and compatibility with orjson library
🐛 fix(loading.py): change json.loads to orjson.loads for improved performance and compatibility with orjson library
🐛 fix(utils.py): change json.loads to orjson.loads for improved performance and compatibility with orjson library
🐛 fix(vector_store.py): change json.loads to orjson.loads for improved performance and compatibility with orjson library
🐛 fix(types.py): change json.loads to orjson.loads for improved performance and compatibility with orjson library
🐛 fix(process.py): change json.loads to orjson.loads for improved performance and compatibility with orjson library
 feat(server.ts): change port variable case from lowercase port to uppercase PORT to improve semantics
 feat(server.ts): add support for process.env.PORT environment variable to be able to run app on a configurable port

🔧 fix(base.py): import orjson instead of json to improve performance and compatibility
🔧 fix(frontend_node/llms.py): use orjson_dumps instead of json.dumps to improve performance and compatibility
🔧 fix(frontend_node/utilities.py): use orjson_dumps instead of json.dumps to improve performance and compatibility
🔧 fix(test_cache.py): import orjson and use orjson_dumps instead of json.dumps to improve performance and compatibility

🔧 fix(test_database.py): import correct json encoder and decoder functions to fix import errors
🔧 fix(test_database.py): replace json.dumps and json.loads with orjson_dumps and orjson.loads for better performance and compatibility
🔧 fix(test_loading.py): remove unused import statement
2023-08-22 11:04:41 -03:00
ogabrielluiz
d76cef81e8 fix: Remove category log 2023-08-17 23:11:44 -03:00
Gabriel Luiz Freitas Almeida
b772bbe976 🐛 fix(endpoints.py): add validation to ensure that custom components are in a single category 2023-08-17 22:33:52 -03:00
Gabriel Luiz Freitas Almeida
e63d6aa943 🐛 fix(endpoints.py): fix comparison of path variable to string in get_all() function to prevent duplicate processing of paths 2023-08-15 10:04:40 -03:00
Gabriel Luiz Freitas Almeida
b6d063a0fd 🐛 fix(settings.py): convert Path object to string before appending to list to avoid type error
🐛 fix(settings.py): check if value is already in the list before appending to avoid duplicates
2023-08-15 09:15:28 -03:00
Gabriel Luiz Freitas Almeida
e0f625e793 🐛 fix(utils.py): add condition to check if prompt has 'partial' attribute before calling it to prevent error 2023-08-14 17:17:57 -03:00
Gabriel Luiz Freitas Almeida
2144e1ec91 🐛 fix(types.py): handle case where prompt template is not present in PromptVertex
ℹ️ The code was modified to handle a case where the `template` attribute is not present in the `PromptVertex` class. If the `template` attribute is not found, the code checks if the `prompt` attribute is present and uses its `template` attribute instead. This change ensures that the code does not break when the `template` attribute is missing.
2023-08-14 17:16:54 -03:00
Gabriel Luiz Freitas Almeida
343d829c25 🐛 fix(OpenAIConversationalAgent.py): fix typo in display name of Conversational Agent class
 feat(OpenAIConversationalAgent.py): add support for OpenAI API key and base URL in build method to enable API function calling
2023-08-10 18:15:41 -03:00
Gabriel Luiz Freitas Almeida
2e0de1926e 🐛 fix(endpoints.py): handle duplicate paths in settings.COMPONENTS_PATH to avoid processing the same path multiple times
🐛 fix(settings.py): convert Path objects to strings in settings.COMPONENTS_PATH to ensure consistency and avoid potential issues
2023-08-10 17:59:30 -03:00
Gabriel Luiz Freitas Almeida
3792cbc8d7
Merge branch 'release' into fix_memory_on_agents 2023-08-10 17:41:31 -03:00
Gabriel Luiz Freitas Almeida
5cbb86b184 🐛 fix(utils.py): add UnbuiltObject class to improve code readability and maintainability
🐛 fix(base.py): change the error message when _built_object is None to provide more specific information and handle the case when _built_object is an instance of UnbuiltObject
2023-08-10 13:46:25 -03:00
Gabriel Luiz Freitas Almeida
7933667973 🚀 feat(constants.py): import AgentExecutor from langchain.agents.agent module to use it in LANGCHAIN_BASE_TYPES dictionary
🔀 chore(constants.py): remove unnecessary import statements
2023-08-10 13:45:58 -03:00
Gabriel Luiz Freitas Almeida
cc4008c861 🐛 fix(custom_component.py): fix incorrect usage of type_hint variable in if condition 2023-08-10 11:43:46 -03:00
Gabriel Luiz Freitas Almeida
df77ba81f7 🐛 fix(custom_component.py): fix condition to check if Optional type hint is used but not imported in the code 2023-08-10 09:24:10 -03:00
Gabriel Luiz Freitas Almeida
564634d36c 🐛 fix(directory_reader.py): handle SyntaxError when parsing code to prevent crashes
🐛 fix(directory_reader.py): return False if code is not valid Python to prevent false positives
🐛 fix(directory_reader.py): fix method name from is_type_hint_used_but_not_imported to _is_type_hint_used_in_args for consistency
🐛 fix(directory_reader.py): fix method name from is_type_hint_imported to _is_type_hint_imported for consistency
🐛 fix(directory_reader.py): fix return value of _is_type_hint_used_in_args method to return False if type hint is used but not imported
2023-08-10 09:23:36 -03:00
Gabriel Luiz Freitas Almeida
261e258ed4 🐛 fix(loading.py): make a copy of the params before modifying it to prevent unintended side effects 2023-08-10 09:23:02 -03:00
Gabriel Luiz Freitas Almeida
b0a2258232 🔧 chore(OpenAIConversationalAgent.py): add display names for 'tools', 'memory', 'system_message', and 'max_token_limit' parameters to improve readability and user experience 2023-08-09 22:06:33 -03:00
Gabriel Luiz Freitas Almeida
33ef3b0a7e 🐛 fix(OpenAIConversationalAgent.py): ignore type errors for memory_key, system_message, prompt, agent, and tools variables
 feat(OpenAIConversationalAgent.py): add support for return_intermediate_steps parameter in AgentExecutor constructor to enable returning intermediate steps during conversation
2023-08-09 21:58:25 -03:00
Gabriel Luiz Freitas Almeida
1dcdc02e4f 🚀 feat(constants.py): import BaseChatMemory from langchain.memory.chat_memory module to add support for chat memory in custom interfaces 2023-08-09 21:49:20 -03:00
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