databao/api.py (30 lines of code) (raw):

from databao.caches.in_mem_cache import InMemCache from databao.configs.llm import LLMConfig, LLMConfigDirectory from databao.core import Agent, Cache, Executor, Visualizer from databao.executors.lighthouse.executor import LighthouseExecutor from databao.visualizers.vega_chat import VegaChatVisualizer def new_agent( name: str | None = None, llm_config: LLMConfig | None = None, data_executor: Executor | None = None, visualizer: Visualizer | None = None, cache: Cache | None = None, rows_limit: int = 1000, stream_ask: bool = True, stream_plot: bool = False, lazy_threads: bool = False, auto_output_modality: bool = True, ) -> Agent: """This is an entry point for users to create a new agent. Agent can't be modified after it's created. Only new data sources can be added. """ llm_config = llm_config if llm_config else LLMConfigDirectory.DEFAULT return Agent( llm_config, name=name or "default_agent", data_executor=data_executor or LighthouseExecutor(), visualizer=visualizer or VegaChatVisualizer(llm_config), cache=cache or InMemCache(), rows_limit=rows_limit, stream_ask=stream_ask, stream_plot=stream_plot, lazy_threads=lazy_threads, auto_output_modality=auto_output_modality, )