# Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # # This source code is licensed under the terms described in the LICENSE file in # the root directory of this source tree. import os from typing import Any, Dict, Optional from pydantic import BaseModel, Field, SecretStr from llama_stack.schema_utils import json_schema_type class WatsonXProviderDataValidator(BaseModel): url: str api_key: str project_id: str @json_schema_type class WatsonXConfig(BaseModel): url: str = Field( default_factory=lambda: os.getenv("WATSONX_BASE_URL", "https://us-south.ml.cloud.ibm.com"), description="A base url for accessing the watsonx.ai", ) api_key: Optional[SecretStr] = Field( default_factory=lambda: os.getenv("WATSONX_API_KEY"), description="The watsonx API key, only needed of using the hosted service", ) project_id: Optional[str] = Field( default_factory=lambda: os.getenv("WATSONX_PROJECT_ID"), description="The Project ID key, only needed of using the hosted service", ) timeout: int = Field( default=60, description="Timeout for the HTTP requests", ) @classmethod def sample_run_config(cls, **kwargs) -> Dict[str, Any]: return { "url": "${env.WATSONX_BASE_URL:https://us-south.ml.cloud.ibm.com}", "api_key": "${env.WATSONX_API_KEY:}", "project_id": "${env.WATSONX_PROJECT_ID:}", }