ArtificialAnalysisWorkflow
What it is
- A workflow that fetches model data from the Artificial Analysis API, optionally filters the results to only providers that have corresponding local agent modules, and saves the result as a timestamped JSON file under a fixed storage path.
Public API
ArtificialAnalysisWorkflowConfiguration(WorkflowConfiguration,dataclass)api_key: str: Artificial Analysis API key (required).base_url: str = "https://artificialanalysis.ai/api/v2": API base URL.
ArtificialAnalysisWorkflowParameters(WorkflowParameters)endpoint: str = "llms": Endpoint to fetch (e.g.,"llms"or media endpoints like"text-to-image").include_categories: bool = False: Addsinclude_categories=truequery param for media endpoints.validate_agents_only: bool = True: IfTrue, filters models to those with corresponding local agent modules.
ArtificialAnalysisWorkflow(Workflow)__init__(configuration: ArtificialAnalysisWorkflowConfiguration): Stores configuration.run_workflow(parameters: ArtificialAnalysisWorkflowParameters) -> dict: Fetches API data, optionally filters, writes JSON to disk, returns summary dict.as_tools() -> list[BaseTool]: Exposes a LangChainStructuredToolnamedartificial_analysis_data_fetch.as_api(...) -> None: Present but intentionally does nothing (returnsNone).
Internal helpers (not public API):
_fetch_models_data,_get_modules_with_agents,_filter_data_for_valid_modules,_extract_module_name_from_model.
Configuration/Dependencies
- Network/API
- Uses
requests.getwith headerx-api-key: <api_key>. - URL logic:
- If
endpoint == "llms":.../data/llms/models - Else:
.../data/media/{endpoint}
- If
- Uses
- Filesystem
- Scans for modules with agents under:
src/core/modules/<module>/agents/*Agent.py - Saves output JSON under:
storage/datastore/core/modules/abi/ArtificialAnalysisWorkflow/<timestamp>_<endpoint>_data.json
- Scans for modules with agents under:
- Key libraries
requests,pydantic,langchain_core.tools,naas_abi_core.workflow
Usage
from naas_abi.workflows.ArtificialAnalysisWorkflow import (
ArtificialAnalysisWorkflow,
ArtificialAnalysisWorkflowConfiguration,
ArtificialAnalysisWorkflowParameters,
)
wf = ArtificialAnalysisWorkflow(
ArtificialAnalysisWorkflowConfiguration(api_key="YOUR_ARTIFICIAL_ANALYSIS_API_KEY")
)
result = wf.run_workflow(
ArtificialAnalysisWorkflowParameters(
endpoint="llms",
include_categories=False,
validate_agents_only=True,
)
)
print(result["status"], result["output_file"])
Caveats
- Filtering via
validate_agents_only=Truedepends on the local repository layout existing atsrc/core/modulesand containingagents/*Agent.pyfiles; if the path is missing, no modules are considered valid. as_api(...)is a no-op and does not register any routes.- Provider-to-module matching uses a fixed mapping (e.g.,
"openai" -> "chatgpt","anthropic" -> "claude") and fallbacks based on provider/model name heuristics; mismatches may cause models to be filtered out.