fix: refactor code structure for improved readability and maintainability

This commit is contained in:
qiupinhua
2026-02-13 18:51:30 +08:00
parent 09c7e7aded
commit 1ae47058d9
4 changed files with 2406 additions and 17 deletions

View File

@@ -16,6 +16,7 @@ from rich.table import Table
from rich.text import Text
from nanobot import __version__, __logo__
from nanobot.config.schema import Config
app = typer.Typer(
name="nanobot",
@@ -295,21 +296,33 @@ This file stores important information that should persist across sessions.
console.print(" [dim]Created memory/MEMORY.md[/dim]")
def _make_provider(config):
def _make_provider(config: Config):
"""Create LiteLLMProvider from config. Exits if no API key found."""
from nanobot.providers.litellm_provider import LiteLLMProvider
p = config.get_provider()
from nanobot.providers.openai_codex_provider import OpenAICodexProvider
model = config.agents.defaults.model
if not (p and p.api_key) and not model.startswith("bedrock/"):
provider_name = config.get_provider_name(model)
p = config.get_provider(model)
# OpenAI Codex (OAuth): don't route via LiteLLM; use the dedicated implementation.
if provider_name == "openai_codex" or model.startswith("openai-codex/"):
return OpenAICodexProvider(
default_model=model,
api_base=p.api_base if p else None,
)
if not model.startswith("bedrock/") and not (p and p.api_key):
console.print("[red]Error: No API key configured.[/red]")
console.print("Set one in ~/.nanobot/config.json under providers section")
raise typer.Exit(1)
return LiteLLMProvider(
api_key=p.api_key if p else None,
api_base=config.get_api_base(),
api_base=config.get_api_base(model),
default_model=model,
extra_headers=p.extra_headers if p else None,
provider_name=config.get_provider_name(),
provider_name=provider_name,
)