Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion python/configs/agent_cards/investment_research_agent.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
"tags": ["monitor","alerts","tracking"]
}
],
"enabled": true,
"enabled": false,
"metadata": {
"version": "1.0.0",
"author": "ValueCell Team",
Expand Down
2 changes: 1 addition & 1 deletion python/configs/agent_cards/news_agent.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
"tags": ["finance", "markets", "business", "stocks", "economics"]
}
],
"enabled": true,
"enabled": false,
"metadata": {
"version": "1.0.0",
"author": "ValueCell Team",
Expand Down
50 changes: 1 addition & 49 deletions python/valuecell/server/api/routers/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
from valuecell.config.manager import get_config_manager
from valuecell.utils.env import get_system_env_path

from ..schemas import LLMProviderConfigData, SuccessResponse
from ..schemas import SuccessResponse
from ..schemas.model import (
AddModelRequest,
ModelItem,
Expand Down Expand Up @@ -134,54 +134,6 @@ def _api_key_url_for(provider: str) -> str | None:
}
return mapping.get(provider)

# ---- Existing: LLM config list ----
@router.get(
"/llm/config",
response_model=SuccessResponse[List[LLMProviderConfigData]],
summary="Get available LLMModelConfigs",
description=(
"Return a list of LLM model configurations for the primary provider "
"and any enabled fallback providers. API keys may be omitted if not configured."
),
)
async def get_llm_model_config() -> SuccessResponse[List[LLMProviderConfigData]]:
try:
manager = get_config_manager()

providers = [manager.primary_provider] + manager.fallback_providers
seen = set()
ordered = [p for p in providers if not (p in seen or seen.add(p))]

configs: List[LLMProviderConfigData] = []
for provider in ordered:
provider_cfg = manager.get_provider_config(provider)
if provider_cfg is None:
configs.append(
LLMProviderConfigData(
provider=DEFAULT_MODEL_PROVIDER, api_key=None
)
)
else:
configs.append(
LLMProviderConfigData(
provider=provider_cfg.name,
api_key=provider_cfg.api_key,
)
)

if not configs:
configs.append(
LLMProviderConfigData(provider=DEFAULT_MODEL_PROVIDER, api_key=None)
)

return SuccessResponse.create(
data=configs, msg=f"Retrieved {len(configs)} LLM provider configs"
)
except Exception as e:
raise HTTPException(
status_code=500, detail=f"Failed to get LLM config list: {str(e)}"
)

@router.get(
"/providers",
response_model=SuccessResponse[List[ModelProviderSummary]],
Expand Down
3 changes: 1 addition & 2 deletions python/valuecell/server/api/schemas/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
UserI18nSettingsData,
UserI18nSettingsRequest,
)
from .model import LLMModelConfigData, LLMProviderConfigData
from .model import LLMModelConfigData
from .task import TaskCancelData
from .user_profile import (
CreateUserProfileRequest,
Expand Down Expand Up @@ -117,5 +117,4 @@
"TaskCancelData",
# Model schemas
"LLMModelConfigData",
"LLMProviderConfigData",
]
11 changes: 0 additions & 11 deletions python/valuecell/server/api/schemas/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,6 @@ class LLMModelConfigData(BaseModel):
)


class LLMProviderConfigData(BaseModel):
"""LLM provider configuration without model_id for /models/llm/config endpoint."""

provider: str = Field(
..., description="Model provider, e.g. 'openrouter', 'google', 'openai'"
)
api_key: Optional[str] = Field(
default=None, description="API key for the model provider (may be omitted)"
)


# Extended provider and model management schemas
class ModelItem(BaseModel):
model_id: str = Field(..., description="Model identifier")
Expand Down