agy تنها ارائهدهندهٔ مدل؛ حذف بخش ارائهدهندهها و افزودن زنجیرهٔ انتخاب مدل
- حذف کامل providerهای mock و openai_compatible: دامنه، آداپوترها، رجیستری، کانفیگ، seed و رابطٔ مدیریت - بخش «ارائهدهندهها» از کنسول حذف شد؛ ورود اکانتها فقط از صفحهٔ اکانتهای agy - صفحهٔ مدلها بازطراحی شد: ارائهدهنده → اکانت → مدل (کاتالوگ لحظهای و زندهٔ همان اکانت از Google) → افورت استدلال؛ بدون هیچ ورود دستی نام مدل - مدلها ستون reasoning_effort گرفتند؛ آداپتور آن را به thinkingConfig (بودجهٔ ۱۰۲۴ تا ۳۲۷۶۸) ترجمه میکند و فقط به مدلهای استدلالی میفرستد - مهاجرت c2d3e4f5b6a7: افزودن reasoning_effort و حذف ردیفهای providerهای قدیمی - تستها: ۲۴۶ تست بکاند و ۵۱ تست فرانت سبز؛ ruff و mypy و tsc و eslint تمیز
This commit is contained in:
@@ -2,7 +2,9 @@
|
||||
|
||||
One place decides which concrete adapter backs each port, driven purely by the
|
||||
``*_PROVIDER`` environment switches. Everything defaults to ``mock`` so a fresh
|
||||
clone runs with no credentials.
|
||||
clone runs with no credentials — *except* the model provider: ``agy`` (Google
|
||||
Antigravity) is the only one the platform talks to, and its accounts are added
|
||||
from the admin console.
|
||||
|
||||
Adapters that hold process state (the mock Git forge, the mock port ledger) are
|
||||
cached as singletons so behaviour is consistent within a process.
|
||||
@@ -10,37 +12,36 @@ cached as singletons so behaviour is consistent within a process.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from functools import lru_cache
|
||||
|
||||
from app.core.config import settings
|
||||
from app.core.errors import ProviderUnavailableError
|
||||
from app.infrastructure.adapters import mock
|
||||
from app.infrastructure.adapters.openai_compatible import OpenAICompatibleModelAdapter
|
||||
|
||||
logger = logging.getLogger("agy.registry")
|
||||
|
||||
|
||||
@lru_cache
|
||||
def get_model_provider():
|
||||
provider = settings.ai_default_provider.lower()
|
||||
if provider == "mock":
|
||||
return mock.MockModelProviderAdapter()
|
||||
if provider == "openai_compatible":
|
||||
return OpenAICompatibleModelAdapter(
|
||||
base_url=settings.openai_compatible_base_url,
|
||||
default_api_key=settings.openai_compatible_api_key,
|
||||
"""The one model adapter: agy over its logged-in account pool."""
|
||||
configured = settings.ai_default_provider.strip().lower()
|
||||
if configured != "agy":
|
||||
# Tolerate a stale ``AI_DEFAULT_PROVIDER`` from before agy became the
|
||||
# only provider: warn loudly, keep serving with agy either way.
|
||||
logger.warning(
|
||||
"AI_DEFAULT_PROVIDER=%r is obsolete — agy is the only supported "
|
||||
"model provider; using it",
|
||||
settings.ai_default_provider,
|
||||
)
|
||||
if provider == "agy":
|
||||
from app.infrastructure.adapters.agy import (
|
||||
AgyModelAdapter,
|
||||
load_agy_accounts,
|
||||
report_agy_state,
|
||||
)
|
||||
|
||||
return AgyModelAdapter(loader=load_agy_accounts, report=report_agy_state)
|
||||
raise ProviderUnavailableError(
|
||||
f"AI_DEFAULT_PROVIDER='{provider}' پشتیبانی نمیشود. "
|
||||
"مقادیر مجاز: mock | openai_compatible | agy"
|
||||
from app.infrastructure.adapters.agy import (
|
||||
AgyModelAdapter,
|
||||
load_agy_accounts,
|
||||
report_agy_state,
|
||||
)
|
||||
|
||||
return AgyModelAdapter(loader=load_agy_accounts, report=report_agy_state)
|
||||
|
||||
|
||||
@lru_cache
|
||||
def get_git_provider():
|
||||
|
||||
Reference in New Issue
Block a user