reduce inline imports in ai client
This commit is contained in:
+6
-11
@@ -14,13 +14,16 @@ during chat creation to avoid massive history bloat.
|
||||
# ai_client.py
|
||||
import anthropic
|
||||
from google import genai
|
||||
from google.api_core import exceptions as gac
|
||||
from google.genai import types
|
||||
from openai import OpenAI
|
||||
import asyncio
|
||||
import datetime
|
||||
import difflib
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
from pathlib import Path as _P
|
||||
import requests # type: ignore[import-untyped]
|
||||
import sys
|
||||
import threading
|
||||
@@ -38,7 +41,8 @@ from src import performance_monitor
|
||||
from src import project_manager
|
||||
from src.tool_bias import ToolBiasEngine
|
||||
from src.models import ToolPreset, BiasProfile, Tool
|
||||
from src.gemini_cli_adapter import GeminiCliAdapter as GeminiCliAdapter
|
||||
from src.gemini_cli_adapter import GeminiCliAdapter
|
||||
from src.tool_presets import ToolPresetManager
|
||||
|
||||
_provider: str = "gemini"
|
||||
_model: str = "gemini-2.5-flash-lite"
|
||||
@@ -356,7 +360,6 @@ def _classify_anthropic_error(exc: Exception) -> ProviderError:
|
||||
def _classify_gemini_error(exc: Exception) -> ProviderError:
|
||||
body = str(exc).lower()
|
||||
try:
|
||||
from google.api_core import exceptions as gac
|
||||
if isinstance(exc, gac.ResourceExhausted):
|
||||
return ProviderError("quota", "gemini", exc)
|
||||
if isinstance(exc, gac.TooManyRequests):
|
||||
@@ -586,7 +589,6 @@ def set_tool_preset(preset_name: Optional[str]) -> None:
|
||||
_active_tool_preset = None
|
||||
else:
|
||||
try:
|
||||
from src.tool_presets import ToolPresetManager
|
||||
manager = ToolPresetManager()
|
||||
presets = manager.load_all()
|
||||
if preset_name in presets:
|
||||
@@ -617,7 +619,6 @@ def set_bias_profile(profile_name: Optional[str]) -> None:
|
||||
_active_bias_profile = None
|
||||
else:
|
||||
try:
|
||||
from src.tool_presets import ToolPresetManager
|
||||
manager = ToolPresetManager()
|
||||
profiles = manager.load_all_bias_profiles()
|
||||
if profile_name in profiles:
|
||||
@@ -886,7 +887,6 @@ def _reread_file_items(file_items: list[dict[str, Any]]) -> tuple[list[dict[str,
|
||||
if path is None:
|
||||
refreshed.append(item)
|
||||
continue
|
||||
from pathlib import Path as _P
|
||||
p = path if isinstance(path, _P) else _P(path)
|
||||
try:
|
||||
current_mtime = p.stat().st_mtime
|
||||
@@ -1033,8 +1033,7 @@ def _estimate_message_tokens(msg: dict[str, Any]) -> int:
|
||||
total_chars += len(text)
|
||||
inp = block.get("input")
|
||||
if isinstance(inp, dict):
|
||||
import json as _json
|
||||
total_chars += len(_json.dumps(inp, ensure_ascii=False))
|
||||
total_chars += len(json.dumps(inp, ensure_ascii=False))
|
||||
elif isinstance(block, str):
|
||||
total_chars += len(block)
|
||||
est = max(1, int(total_chars / _CHARS_PER_TOKEN))
|
||||
@@ -2082,7 +2081,6 @@ def _send_deepseek(md_content: str, user_message: str, base_dir: str,
|
||||
|
||||
def _list_minimax_models(api_key: str) -> list[str]:
|
||||
try:
|
||||
from openai import OpenAI
|
||||
client = OpenAI(api_key=api_key, base_url="https://api.minimax.io/v1")
|
||||
models_list = client.models.list()
|
||||
found = [m.id for m in models_list]
|
||||
@@ -2095,7 +2093,6 @@ def _list_minimax_models(api_key: str) -> list[str]:
|
||||
def _ensure_minimax_client() -> None:
|
||||
global _minimax_client
|
||||
if _minimax_client is None:
|
||||
from openai import OpenAI
|
||||
creds = _load_credentials()
|
||||
api_key = creds.get("minimax", {}).get("api_key")
|
||||
if not api_key:
|
||||
@@ -2120,7 +2117,6 @@ def _send_minimax(md_content: str, user_message: str, base_dir: str,
|
||||
if not api_key:
|
||||
raise ValueError("MiniMax API key not found in credentials.toml")
|
||||
|
||||
from openai import OpenAI
|
||||
client = OpenAI(api_key=api_key, base_url="https://api.minimax.io/v1")
|
||||
|
||||
with _minimax_history_lock:
|
||||
@@ -2574,7 +2570,6 @@ def run_subagent_summarization(file_path: str, content: str, is_code: bool, outl
|
||||
return f"ERROR: DeepSeek summarization failed: {e}"
|
||||
elif _provider == "gemini_cli":
|
||||
# Using the adapter for a one-off call
|
||||
from src.gemini_cli_adapter import GeminiCliAdapter
|
||||
adapter = GeminiCliAdapter(binary_path="gemini")
|
||||
resp_data = adapter.send(prompt, model=_model)
|
||||
return resp_data.get("text", "")
|
||||
|
||||
Reference in New Issue
Block a user