providers: presets for polza/openai/ollama (--provider), keys from env, gpt-5.6-luna default for polza, multimodal heuristic for cloud ids
This commit is contained in:
+35
-6
@@ -32,11 +32,14 @@ import sys
|
||||
from aicc.client import AICCClient
|
||||
from aicc.transport.websocket import WebSocketClientTransport
|
||||
|
||||
from testbed.llm_agent import CHAT_MISSION, LLMController, ollama_models
|
||||
from testbed.llm_agent import (
|
||||
CHAT_MISSION,
|
||||
LLMController,
|
||||
ollama_models,
|
||||
resolve_provider,
|
||||
)
|
||||
|
||||
DEFAULT_URL = "ws://127.0.0.1:8765"
|
||||
DEFAULT_BASE_URL = "http://localhost:11434/v1"
|
||||
DEFAULT_MODEL = "gemma4:e2b"
|
||||
|
||||
HELP = """\
|
||||
You are talking to the capsule's brain (LLM). Type what you want, e.g.:
|
||||
@@ -393,12 +396,26 @@ def main() -> int:
|
||||
help=f"bridge WebSocket URL (default {DEFAULT_URL})",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--base-url", default=DEFAULT_BASE_URL, help="OpenAI-compatible endpoint"
|
||||
"--base-url",
|
||||
default=None,
|
||||
help="OpenAI-compatible endpoint (default per --provider)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--model", default=DEFAULT_MODEL, help="model id on the endpoint"
|
||||
"--provider",
|
||||
choices=["polza", "openai", "ollama"],
|
||||
default=None,
|
||||
help="provider preset: endpoint + key from env (POLZA_API_KEY/OPENAI_API_KEY)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--model",
|
||||
default=None,
|
||||
help="model id on the endpoint (default per provider: polza -> openai/gpt-5.6-luna)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--api-key",
|
||||
default=None,
|
||||
help="API key (default: $POLZA_API_KEY / $OPENAI_API_KEY per provider)",
|
||||
)
|
||||
parser.add_argument("--api-key", default="ollama", help="API key for the endpoint")
|
||||
parser.add_argument(
|
||||
"--auto-steps",
|
||||
type=int,
|
||||
@@ -447,6 +464,18 @@ def main() -> int:
|
||||
help="attach a fresh camera frame every N turns (0 disables; default 3)",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
try:
|
||||
args.base_url, args.api_key, args.model = resolve_provider(
|
||||
provider=args.provider,
|
||||
base_url=args.base_url,
|
||||
api_key=args.api_key,
|
||||
model=args.model,
|
||||
)
|
||||
if args.provider:
|
||||
print(f"[chat] provider: {args.provider} -> {args.base_url} model: {args.model}")
|
||||
except ValueError as exc:
|
||||
print(f"[chat] {exc}")
|
||||
return 1
|
||||
try:
|
||||
return asyncio.run(run(args))
|
||||
except KeyboardInterrupt:
|
||||
|
||||
Reference in New Issue
Block a user