🔧 chore(base.py): refactor get_langfuse_callback function to improve readability and maintainability
🔧 chore(base.py): refactor get_result_and_steps function to improve readability and maintainability
🔧 chore(settings.py): add LANGFUSE_SECRET_KEY and LANGFUSE_PUBLIC_KEY optional settings
🔒 chore(poetry.lock): update typing-extensions package version to >=4.5,<5
🔒 chore(poetry.lock): update cohere package version to 4.20.0
📦 chore(poetry.lock): update coverage package version to 7.3.0
🔀 chore(poetry.lock): update python-versions constraint to >=3.8
🚀 feat(coverage): update coverage package to version 7.3.0
The coverage package has been updated to version 7.3.0. This update includes new wheel files for various platforms and their corresponding hashes.
🔒 chore: update coverage package dependencies
The coverage package dependencies have been updated to version 7.3.0. This commit includes the updated wheel files and their corresponding hashes.
🔒 chore(poetry.lock): update ctransformers to version 0.2.22
🔒 chore(poetry.lock): update exceptiongroup to version 1.1.3
🔒 chore(poetry.lock): update google-cloud-aiplatform to version 1.30.1
🔒 chore(poetry.lock): update langsmith to version 0.0.22
🔒 chore(poetry.lock): update metaphor-python to version 0.1.14
🔒 chore(poetry.lock): update pandas-stubs to version 2.0.3.230814
🔒 chore(poetry.lock): update pypdf to version 3.15.1
🔒 chore(poetry.lock): update tenacity to version 8.2.3
🔒 chore(poetry.lock): update tornado version from 6.3.2 to 6.3.3 to fix security vulnerability
🔒 chore(poetry.lock): update types-pytz version from 2023.3.0.0 to 2023.3.0.1 to fix typing stubs
🔒 chore(poetry.lock): update validators version from 0.20.0 to 0.21.0 to improve data validation
🔒 chore(poetry.lock): update watchfiles version from 0.19.0 to 0.19.0 (no changes)
ℹ️ 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.
🐛 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
🐛 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
✨ feat(OpenAIConversationalAgent.py): add support for return_intermediate_steps parameter in AgentExecutor constructor to enable returning intermediate steps during conversation
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.
📝 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.