Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Enhance backend with context management, error handling, and re…
…factored code (#4286) * Add cycle detection and management for graph vertices in run manager * Refactor: Move AIMLEmbeddingsImpl to a new module path * Add AIMLEmbeddingsImpl class for document and query embeddings using AIML API * Add agent components for action routing, decision-making, execution, and context management - Introduced `AgentActionRouter` to route agent flow based on action type. - Added `DecideActionComponent` for determining actions from context and prompts. - Implemented `ExecuteActionComponent` to execute actions using available tools. - Created `GenerateThoughtComponent` for generating thoughts based on context. - Developed `ProvideFinalAnswerComponent` to generate final answers from context. - Built `AgentContextBuilder` for constructing `AgentContext` instances. - Added `ObserveResultComponent` to process and observe action results. - Implemented `CheckTerminationComponent` to determine if the agent should continue or terminate. * Add AgentContext class for managing agent state and context serialization - Introduced `AgentContext` class in `context.py` to handle agent state, including tools, language model, and context history. - Implemented serialization methods for converting agent context to JSON-compatible format. - Added validation for language model instances to ensure compatibility. - Provided methods for updating and retrieving full context, including context history management. * Add new agent components to the langflow module's init file * Update `apply_on_outputs` to use `_outputs_map` in vertex base class * Add _pre_run_setup method to custom component for pre-execution setup * Handle non-list action types in decide_action method * Enhance AgentActionRouter with iteration control and context routing logic * Fix incorrect variable usage in tool call result message formatting * Add AgentActionRouter to module exports in agents package * Refactor cycle detection logic in graph base class * Add test for complex agent flow with cyclic graph validation * Enhance readiness checks in tracing service methods * Add context management to Graph class with dotdict support * Add context management methods to custom component class - Introduced a `_ctx` attribute to store context data. - Added `ctx` property to access the graph's context, raising an error if the graph is not built. - Implemented `add_to_ctx` method to add key-value pairs to the context with an optional overwrite flag. - Implemented `update_ctx` method to update the context with a dictionary of values, ensuring the graph is built and the input is a dictionary. * Add customizable Agent component with input/output handling and action routing * Handle non-list 'tools' attribute in 'build_context' method * Convert `get_response` method to asynchronous and update graph processing to use async iteration. * Add async test for Agent component in graph cycle tests * Refactor Agent Flow JSON: Simplify input types and update agent component structure - Removed "BaseTool" from input types for "ToolCallingAgent" to streamline tool handling. - Updated agent component to a more modular structure with new prompts and input configurations. - Replaced deprecated methods and fields with updated implementations for improved functionality. - Adjusted metadata and configuration settings for better clarity and usability. * [autofix.ci] apply automated fixes * Add Agent import to init, improve error handling, and clean up imports - Added `Agent` import to `__init__.py` for better module accessibility. - Improved error handling in `aiml_embeddings.py` by raising a `ValueError` when the expected embedding count is not met. - Cleaned up redundant imports in `test_cycles.py` to enhance code readability. * Refactor agent component imports for improved modularity and organization * Remove agent components and update `__init__.py` exports * Add iteration control and default route options to ConditionalRouter component * Refactor graph tests to include new components and update iteration logic - Replaced complex agent flow with a simplified guessing game using OpenAI components and conditional routing. - Introduced `TextInputComponent` and updated `ChatInput` initialization. - Added new test `test_conditional_router_max_iterations` to validate conditional routing with max iterations. - Updated graph cyclicity assertions and snapshot checks for improved test coverage. - Removed deprecated agent components and related logic. * Refactor conditional router to return message consistently and use iterate_and_stop_once method * Add return type annotations to methods in langsmith.py * Remove unnecessary `@override` decorator and add `# noqa: ARG002` comments for unused arguments * Move ChatInput import inside flow_component fixture in conftest.py * Update test to use _outputs_map for cycle outputs retrieval * Refactor `iterate_and_stop_once` to remove redundant `_id` variable usage * Add default route to ConditionalRouterComponent in cycle test * Implement synchronous graph execution using threading and queues - Removed `nest_asyncio` dependency and replaced it with a new threading-based approach for synchronous graph execution. - Introduced a `queue.Queue` to handle results and exceptions between threads. - Added a new thread to run asynchronous code, ensuring proper event loop management and task completion. - Updated methods to return sorted lists of runnable vertices for consistency. * Update import path for ModelConstants in test_model_constants.py * [autofix.ci] apply automated fixes * fix: add property decorator --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: italojohnny <[email protected]>
- Loading branch information