✨ Feature Summary
Introduce a new LLMFlow class: an agentic runtime that leverages LLMs for dynamic, tool-driven reasoning within QuantMind. This will allow the framework to autonomously plan and execute multi-step financial analysis tasks by orchestrating tools in response to user input, inspired by modern agent design patterns.
We will primarily take smolagents repo as base to develop our LLMFlow.
🎯 Motivation
The current BaseFlow supports only statically orchestrated task flows, limiting the framework's ability to respond adaptively to user goals or leverage external capabilities. By adding LLMFlow, QuantMind can:
- Dynamically select and use tools based on LLM-driven reasoning
- Support autonomous, multi-step task execution (e.g., query data, analyze, compare, summarize)
- Integrate tightly with the agentic ecosystem, including future third-party or open-source toolkits
📋 Detailed Description
LLMFlow will:
- Operate in an agentic loop, maintaining structured message history (not just a string scratchpad)
- Delegate action planning to the LLM, which returns either a final answer or a list of tool calls
- Execute tool calls asynchronously and append their results to the history for further reasoning
- Support configuration via
LLMFlowConfig, specifying the reasoning LLM and the set of available tools (as BaseTool instances)
🔧 Proposed Implementation
- Add
LLMFlowConfig (in quantmind/config/flows.py) to specify the reasoning LLM and available tools
- Implement
LLMFlow (in quantmind/flows/llm_flow.py), following agent middleware patterns:
- Asynchronous reasoning loop with structured message history
- Tool call schema generation and execution via native LLM APIs
- Clear error handling and extensibility for new tool types
- Provide usage and extension documentation
API Design
# quantmind/config/flows.py
class LLMFlowConfig(BaseFlowConfig):
reasoning_llm_identifier: str
tools: List[BaseTool]
# quantmind/flows/llm_flow.py
class LLMFlow(BaseFlow):
async def run(self, initial_input: str, max_iterations: int = 5) -> Any:
...
Configuration
llmflow:
reasoning_llm_identifier: "gpt-4-turbo"
tools:
- name: "company_financials"
- name: "data_fetcher"
🎨 User Experience
Users can define a flow that reasons and acts using LLMs and a configurable set of tools. Complex tasks like “Summarize this report and compare key metrics with last quarter” become possible with minimal code changes.
📊 Use Cases
- Automated Report Analysis: Fetch, analyze, and summarize financial reports using multiple tools in sequence, determined at runtime.
- Conversational Data Exploration: Users ask natural language queries, and the agent dynamically selects tools to pull, process, and present data.
- Third-Party Tool Integration: Easily plug in new tools (e.g., external APIs) for domain-specific analytics.
🔗 Related Issues
Implementation Considerations
Breaking Changes
Dependencies
Checklist
✨ Feature Summary
Introduce a new
LLMFlowclass: an agentic runtime that leverages LLMs for dynamic, tool-driven reasoning within QuantMind. This will allow the framework to autonomously plan and execute multi-step financial analysis tasks by orchestrating tools in response to user input, inspired by modern agent design patterns.We will primarily take
smolagentsrepo as base to develop ourLLMFlow.🎯 Motivation
The current
BaseFlowsupports only statically orchestrated task flows, limiting the framework's ability to respond adaptively to user goals or leverage external capabilities. By addingLLMFlow, QuantMind can:📋 Detailed Description
LLMFlowwill:LLMFlowConfig, specifying the reasoning LLM and the set of available tools (asBaseToolinstances)🔧 Proposed Implementation
LLMFlowConfig(inquantmind/config/flows.py) to specify the reasoning LLM and available toolsLLMFlow(inquantmind/flows/llm_flow.py), following agent middleware patterns:API Design
Configuration
🎨 User Experience
Users can define a flow that reasons and acts using LLMs and a configurable set of tools. Complex tasks like “Summarize this report and compare key metrics with last quarter” become possible with minimal code changes.
📊 Use Cases
🔗 Related Issues
Implementation Considerations
Breaking Changes
Dependencies
Checklist