Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Interactive UI for Swarms Framework #727

Closed
wants to merge 3,344 commits into from

Conversation

harshalmore31
Copy link
Collaborator

@harshalmore31 harshalmore31 commented Jan 7, 2025

Interactive UI for Swarms Framework: Swarm-Specific Parsing, Agent Management, and LLM Integration with Hugging Face Deployment & Local Deployment

Description:

  • Developed a robust and feature-rich UI for the Swarms framework using Gradio, focused on enhancing usability, modularity, and interactive capabilities. Key additions include:
    • Swarm-Specific Parsing:
      • Implemented parsers for all swarm types, including SequentialWorkflow, ConcurrentWorkflow, AgentRearrange, MixtureOfAgents, SpreadSheetSwarm, and auto.
      • Ensures consistent formatting of output data and detailed feedback for each workflow type.
    • Dynamic Prompt Loading:
      • Integrated functionality to load agent prompts dynamically from a JSON file.
      • Default prompts are used if the file is absent or improperly formatted.
    • Agent Management in UI:
      • Enabled creation of new agent prompts directly via the UI.
      • Supports editing and validation of custom prompts with seamless integration into the workflow configuration.
    • UI Framework Enhancements:
      • Introduced a dedicated UI class for streamlined Gradio component management, improving scalability and readability of the codebase.
      • Added modular components like dropdowns, sliders, and conditional inputs for an intuitive user experience.
    • LLM Integration:
      • Using LiteLLM, integrated the following models and providers:
        • OpenAI
        • Anthropic
        • Cohere
        • Gemini
        • Mistral
        • Groq
        • Perplexity

Key Features:

  • Interactive Swarm Configuration: Supports flexible configuration for workflows, including custom execution flows for AgentRearrange and advanced features like agent flow validation.
  • Agent-Centric Design: Facilitates agent selection, prompt management, and dynamic updates for added flexibility.
  • User Feedback and Debugging: Incorporates detailed logging, error handling, and status displays for enhanced user experience.

Issue:

  • Not linked to any specific issue. This PR focuses on establishing a functional and scalable UI layer for the Swarms framework.

Dependencies:

  • Gradio: Core framework for building the modular UI.
  • dotenv: Securely manages API keys and configurations.
  • litellm: Enables seamless integration with multiple language model providers and their respective models.

Deployment:

Tag Maintainer:

@kyegomez

Twitter Handle:

@harshalmore31


Additional Changes:

  • spreadsheet_swarm.py is modified accordingly for the working of UI


📚 Documentation preview 📚: https://swarms--727.org.readthedocs.build/en/727/

sambhavnoobcoder and others added 30 commits October 22, 2024 17:51
Added 
- Tasks 
- max_workers
- handles task assignment properly
…lows

Fix AttributeError in ConcurrentWorkflow by Properly Initializing Tasks List
- other functionality remains same , code is just slightly rearranged if anything .
- when response is a choice , this determines how it is handled.
- current implementation uses a placeholder for llm_output_parser , it needs to be updated ( next commit )
- implements the decision making , when 'choice' type output is received .
…-Access-Issue

Ensure tool execution regardless of long-term memory usage
- added asdict to turn things into json compatible output
- adding updated log methods to run
- make the run update for tools
- edit "run" return type with condition on how to return if output type is JSON .
- add newer methods to the log_step_metadata for logging
- update tool usage fn to add and account for tool usage metadata.
- minor refactor
- update correct libraries & dependencies .
- create class to execute modular unittests 
- def setup for modular setup 
- objective to keep setup minimal , so that tests aren't bloated and fast to run
- Since most param have a set default , init of necessary condition is a valid and supportive op wrt test speed .
- Implemented test_log_step_metadata_basic to verify the correct logging of step metadata including step_id, timestamp, tokens, and memory usage.
- Confirmed that the token counts for total are accurately logged.
- Implemented test_log_step_metadata_no_long_term_memory to ensure that when long-term memory is None, the memory_usage for long_term is an empty dictionary in the log result.
- Implemented test_log_step_metadata_timestamp to verify that a timestamp is included in the log result when logging step metadata.
- Implemented test_token_counting_integration to verify the correct total token count when using a mocked tokenizer, ensuring that prompt and response token counts are accurately aggregated.
- Implemented test_agent_output_updating to verify that logging step metadata correctly updates the total token count and ensures that the agent's output steps are properly tracked confirming only one step is recorded.
kyegomez and others added 22 commits January 3, 2025 13:09
---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Updates the requirements on [pygments](https://github.com/pygments/pygments) to permit the latest version.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](pygments/pygments@2.18.0...2.19.0)

---
updated-dependencies:
- dependency-name: pygments
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
minor fix
…-0.5.1-and-lt-0.8.7

Update ruff requirement from >=0.5.1,<0.8.5 to >=0.5.1,<0.8.7
…-approx-eq-2.19

Update pygments requirement from ~=2.18 to ~=2.19
@evelynmitchell
Copy link
Contributor

Thanks Harshal!

In the HuggingFace space, the contrast in the UI is very low (grey on grey).

There is also no visual indicator that 'Select Provider' is a pulldow menu, and the text in it is even lighter than in the text box.

Screenshot from 2025-01-07 12-03-56

Can you increase the contrast a bit?

As a feature improvement, tags to filter the Agents on would be helpful (role, business department, frequently used with, last updated, ...) A long pulldown menu gets unusable quickly.


if __name__ == "__main__":
app = create_app()
app.launch()
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

comment that out

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.