Spaces:
Running
Running
| """Agent lifecycle management for the ChemGraph Streamlit UI.""" | |
| from typing import Optional | |
| import streamlit as st | |
| def initialize_agent( | |
| model_name: str, | |
| workflow_type: str, | |
| structured_output: bool, | |
| return_option: str, | |
| generate_report: bool, | |
| human_supervised: bool, | |
| recursion_limit: int, | |
| base_url: Optional[str], | |
| argo_user: Optional[str], | |
| log_dir: Optional[str] = None, | |
| ): | |
| """Create a :class:`ChemGraph` agent instance. | |
| No ``@st.cache_resource`` -- the caller (``_auto_initialize_agent`` | |
| in ``main_interface.py``) already manages caching via | |
| ``st.session_state.agent`` and ``st.session_state.last_config``. | |
| Using the decorator caused failed initialisations (``None``) to be | |
| permanently cached with no way to retry. | |
| Parameters | |
| ---------- | |
| model_name : str | |
| LLM model identifier. | |
| workflow_type : str | |
| ChemGraph workflow name. | |
| structured_output : bool | |
| Whether structured final output is requested. | |
| return_option : str | |
| Agent return mode. | |
| generate_report : bool | |
| Whether report generation is enabled. | |
| human_supervised : bool | |
| Whether human-supervision tools are enabled. | |
| recursion_limit : int | |
| LangGraph recursion limit. | |
| base_url : str, optional | |
| Custom model endpoint URL. | |
| argo_user : str, optional | |
| Argo username for Argo-hosted models. | |
| log_dir : str, optional | |
| Directory for ChemGraph run logs. | |
| Returns | |
| ------- | |
| ChemGraph or None | |
| Initialized agent, or ``None`` if initialization fails. | |
| """ | |
| try: | |
| from chemgraph.agent.llm_agent import ChemGraph | |
| return ChemGraph( | |
| model_name=model_name, | |
| workflow_type=workflow_type, | |
| base_url=base_url, | |
| argo_user=argo_user, | |
| structured_output=structured_output, | |
| generate_report=generate_report, | |
| return_option=return_option, | |
| recursion_limit=recursion_limit, | |
| human_supervised=human_supervised, | |
| log_dir=log_dir, | |
| ) | |
| except Exception as exc: | |
| st.error(f"Failed to initialize agent: {exc}") | |
| return None | |
| def run_async_callable(fn): | |
| """Run an async callable and return its result in a sync context. | |
| Parameters | |
| ---------- | |
| fn : Callable | |
| Zero-argument callable returning an awaitable. | |
| Returns | |
| ------- | |
| Any | |
| Result produced by the awaited callable. | |
| """ | |
| from chemgraph.utils.async_utils import run_async_callable as _impl | |
| return _impl(fn) | |