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:
opencode
2026-08-08 20:09:19 +03:00
parent 1d7dbb7b79
commit 54ee734ab5
4 changed files with 211 additions and 12 deletions
+31 -5
View File
@@ -37,9 +37,9 @@ from aicc.protocol import SessionInit
from aicc.transport.websocket import WebSocketClientTransport
from PIL import Image
from testbed.llm_agent import resolve_provider
DEFAULT_URL = "ws://127.0.0.1:8765"
DEFAULT_BASE_URL = "http://localhost:11434/v1"
DEFAULT_MODEL = "gemma4:e2b"
class FrameRecorder:
@@ -392,12 +392,26 @@ def main() -> int:
help="agent driver (default auto: LLM if reachable, else scripted)",
)
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("--max-steps", type=int, default=60, help="max agent steps")
parser.add_argument(
"--vision",
@@ -429,6 +443,18 @@ def main() -> int:
"into this directory, plus demo.gif animation and demo_summary.png",
)
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"[demo] provider: {args.provider} -> {args.base_url} model: {args.model}")
except ValueError as exc:
print(f"[demo] {exc}")
return 1
try:
summary = asyncio.run(run_demo(args))
except KeyboardInterrupt: