Skip to content

Instantly share code, notes, and snippets.

@xianminx
Created January 7, 2025 09:43
Show Gist options
  • Save xianminx/ca509e25c7a1e773234956e3e7228a6a to your computer and use it in GitHub Desktop.
Save xianminx/ca509e25c7a1e773234956e3e7228a6a to your computer and use it in GitHub Desktop.
SmolAgents architecture

@startuml

package "smolagents" {
    class Tool {
        +name: str
        +description: str
        +inputs: dict
        +output_type: str
        +forward()
        +setup()
        +save(output_dir: str)
        +push_to_hub(repo_id: str)
        +from_hub(repo_id: str)
        +from_space(space_id: str)
        +from_gradio(gradio_tool)
        +from_langchain(langchain_tool)
    }

    class PythonInterpreterTool extends Tool
    class FinalAnswerTool extends Tool
    class UserInputTool extends Tool
    class DuckDuckGoSearchTool extends Tool
    class GoogleSearchTool extends Tool
    class VisitWebpageTool extends Tool
    class SpeechToTextTool extends Tool

    class MultiStepAgent {
        +tools: list
        +model: callable
        +run(task: str)
        +step(log_entry: ActionStep)
    }

    class ToolCallingAgent extends MultiStepAgent
    class CodeAgent extends MultiStepAgent

    class Toolbox {
        +tools: dict
        +add_tool(tool: Tool)
        +remove_tool(tool_name: str)
        +update_tool(tool: Tool)
        +clear_toolbox()
    }

    class GradioUI {
        +agent: MultiStepAgent
        +interact_with_agent(prompt: str, messages: list)
        +launch()
    }

    class Model {
        +generate(messages: list)
        +get_tool_call(messages: list, available_tools: list)
    }

    class HfApiModel extends Model
    class TransformersModel extends Model
    class LiteLLMModel extends Model
}

Toolbox --> Tool
MultiStepAgent --> Tool
GradioUI --> MultiStepAgent
HfApiModel --> Model
TransformersModel --> Model
LiteLLMModel --> Model

@enduml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment