Skip to main content

A lightweight UI for smolagents

Project description

Python Version PyPI

A lightweight web UI for 🤗smolagents.

🆕Recent Updates

  • v0.1.0 (Dec 11, 2025): First release!

📑Table of Contents

✨Overview

🤗Smolagents is a flexible and powerful framework for building AI agents powered by large language models (LLMs). This repo aims to provide a friendly web App for both developers and end users.

Features Support
Chat history :white_check_mark: persistent storage with local database
Image and dataset :white_check_mark: Displays images, dataframes, and complex objects

💿Installation

The Python package is available on PyPI.

pip install smolagentsUI

🚀Quick Start

In this demo, we build a Code Agent to analyze the public breast cancer dataset. The agent has access to a Python interpreter. All actions are executed via Python code. The agent can load a dataset from disk, perform exploratory data analysis, build machine learning models, and visualize results. For more information about Code Agents, please refer to the Smolagents documentation.

We first define a custom tool that loads a dataset as a pandas DataFrame. The agent will use this tool to access the breast cancer dataset.

from smolagents import Tool
import pandas as pd

class DataLoaderTool(Tool):
    name = "data_loader"
    description = """ Get breast cancer dataset as pandas.DataFrame. """
    inputs = {}
    output_type = "object"

    def __init__(self, df: pd.DataFrame):
        super().__init__()
        self.df = df.copy()

    def forward(self) -> pd.DataFrame:
        return self.df

We then create an instance of the tool with the locally stored breast cancer dataset.

df = pd.read_csv('./demo/data/breast-cancer.data.csv')
data_loader_tool = DataLoaderTool(df=df)

Next, we create a Code Agent with the data loader tool. We use a locally served gpt-oss-120b as the LLM backend. For data analysis tasks, we authorize additional Python libraries such as pandas, numpy, sklearn, tableone, matplotlib, and PIL for the agent to use.

from smolagents import CodeAgent, OpenAIModel

model = OpenAIModel(model_id="openai/gpt-oss-120b",
                    api_key="", 
                    api_base="http://localhost:8000/v1")

agent = CodeAgent(tools=[data_loader_tool], 
                  model=model, executor_type='local', 
                  additional_authorized_imports = ["pandas", "numpy", "tableone", "sklearn", "sklearn.*", "matplotlib", "matplotlib.*", "PIL", "PIL.*"],
                  stream_outputs=True)

We add some additional instructions to the agent's system prompt to ensure that all outputs are returned via the final_answer function. Adjust this per your specific use case.

additional_system_instructions = """
Additional Instructions:

1. Always use final_answer function to display your outputs (e.g., PIL iamge, matplotlib image, pandas dataframe, Markdown text...) to the user.
2. Input complex objects (e.g., Dict of dataframes) directly into final_answer function will cause error. Instead, convert them into a single pandas DataFrame or a single image before passing to final_answer.
3. Do not save any files to disk. All outputs should be returned via final_answer function.
4. (for gpt-oss) Never use "commentary" channel to output. Use "final" channel.
"""

# Append the additional instructions to system prompt
agent.prompt_templates["system_prompt"] = agent.prompt_templates["system_prompt"] + additional_system_instructions

Now, we start the web UI server with a persistent chat history storage (SQLite database file). If this is the first time, a SQLite database file will be created in the specified path. If the storage_path parameter is omitted, the chat history will be stored in memory only (non-persistent).

import smolagentsUI

# Create or load chat history from the specified SQLite database file
smolagentsUI.serve(agent, host="0.0.0.0", port=5000, storage_path="./chat_history/mychat.db")

# For in-memory chat history (non-persistent), leave out `storage_path` parameter
# smolagentsUI.serve(agent, host="0.0.0.0", port=5000)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

smolagentsui-0.1.0.tar.gz (20.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

smolagentsui-0.1.0-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

File details

Details for the file smolagentsui-0.1.0.tar.gz.

File metadata

  • Download URL: smolagentsui-0.1.0.tar.gz
  • Upload date:
  • Size: 20.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.11.8 Linux/6.8.0-87-generic

File hashes

Hashes for smolagentsui-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f954ddf25225d945ab3fb6d0d11c0a8df0453f6f12e21e21e47ac6ef60804e86
MD5 449f5c343c003fc3de8518aafe073fae
BLAKE2b-256 84450026a2bd9f93f248f2fcdb4bbf3afe5190b2fd46baca35da75b7524f6635

See more details on using hashes here.

File details

Details for the file smolagentsui-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: smolagentsui-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 21.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.11.8 Linux/6.8.0-87-generic

File hashes

Hashes for smolagentsui-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8f3a9b1df23f1d6eef9d4ed5a6d6488540221027f2e3c75fca20f7b41a30ecc0
MD5 8197caa993c78f88ecf38dea9a2e3f7e
BLAKE2b-256 6d973828e7ddfda41569a515530d60724c65ea0b5b25c4103536b9d39a38611e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page