Files
tracer-cloud--opensre/core/agent_harness/llm_resolution.py
T
wehub-resource-sync 4b6817381b
CI (OpenClaw E2E) / openclaw test (push) Has been cancelled
CI / coverage-report (push) Has been cancelled
CI / test-kubernetes (push) Has been cancelled
CI / should-run-thorough (push) Has been cancelled
CI / test-thorough (cloudwatch-demo) (push) Has been cancelled
CI / test-thorough (flink-ecs) (push) Has been cancelled
CI / test-thorough (upstream-lambda) (push) Has been cancelled
CI / test-thorough (prefect-ecs-fargate) (push) Has been cancelled
Release / build-binaries (zip, opensre.exe, onefile, windows-latest, windows-x64) (push) Has been cancelled
Benchmark image — build + push to ECR (any adapter) / build + push (push) Has been cancelled
CI / quality (ubuntu-latest) (push) Has been cancelled
CI / test (tools-runtime) (push) Has been cancelled
CI / test (e2e-general) (push) Has been cancelled
CI / test (cli-runtime) (push) Has been cancelled
CI / test (e2e-provider-and-openclaw) (push) Has been cancelled
CI / test (integrations-and-misc) (push) Has been cancelled
Release / verify (push) Has been cancelled
Release / build-python-dist (push) Has been cancelled
Release / build-binaries (tar.gz, opensre, onedir, macos-15-intel, darwin-x64) (push) Has been cancelled
Release / build-binaries (tar.gz, opensre, onedir, macos-latest, darwin-arm64) (push) Has been cancelled
Release / build-binaries (tar.gz, opensre, onedir, ubuntu-22.04, linux-x64) (push) Has been cancelled
Release / publish-release (push) Has been cancelled
Release / publish-main-release (push) Has been cancelled
Interactive Shell Live (PR + post-merge) / turn-checks (no-LLM) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Interactive Shell Live (PR + post-merge) / turn-live shard ${{ matrix.shard_index }} (push) Has been cancelled
Release / prepare (push) Has been cancelled
Release / build-binaries (tar.gz, opensre, onedir, ubuntu-22.04-arm, linux-arm64) (push) Has been cancelled
Synthetic Deterministic Tests / Synthetic offline (deterministic) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:10:45 +08:00

66 lines
2.1 KiB
Python

"""LLM provider and model resolution shared by agent harness surfaces."""
from __future__ import annotations
import os
from typing import Any
def default_llm_factory() -> Any:
"""Return the default agent LLM client.
Uses a lazy import to avoid pulling in the full LLM stack at module load time.
"""
from core.llm.factory import LLMRole, get_llm
return get_llm(LLMRole.AGENT)
def resolve_provider_models(settings: object, provider: str) -> tuple[str, str]:
"""Return the active ``(reasoning_model, toolcall_model)`` for a provider."""
try:
from config.llm_auth.auth_method import (
effective_llm_provider,
get_configured_llm_auth_method,
)
runtime_provider = effective_llm_provider(
provider, get_configured_llm_auth_method(provider)
)
except Exception:
runtime_provider = provider
if runtime_provider != provider:
return resolve_provider_models(settings, runtime_provider)
if provider in {
"codex",
"claude-code",
"gemini-cli",
"antigravity-cli",
"cursor",
"kimi",
"opencode",
}:
env_key = {
"codex": "CODEX_MODEL",
"claude-code": "CLAUDE_CODE_MODEL",
"gemini-cli": "GEMINI_CLI_MODEL",
"antigravity-cli": "ANTIGRAVITY_CLI_MODEL",
"cursor": "CURSOR_MODEL",
"kimi": "KIMI_MODEL",
"opencode": "OPENCODE_MODEL",
}.get(provider, "")
cli_model = (os.getenv(env_key, "").strip() if env_key else "") or "CLI default"
return (cli_model, cli_model)
single_model = str(getattr(settings, f"{provider}_model", "")).strip()
if single_model:
return (single_model, single_model)
reasoning_model = str(getattr(settings, f"{provider}_reasoning_model", "")).strip()
toolcall_model = str(getattr(settings, f"{provider}_toolcall_model", "")).strip()
return (reasoning_model or "default", toolcall_model or reasoning_model or "default")
__all__ = ["default_llm_factory", "resolve_provider_models"]