fix: harden task recovery and DR contract handling
This commit is contained in:
@@ -4,10 +4,28 @@ loader is a deployment-pinned callable returning the already loaded model.
|
||||
No guessed vendor import, checkpoint download, remote code execution flag or CUDA map.
|
||||
"""
|
||||
import importlib
|
||||
import re
|
||||
|
||||
def create(config):
|
||||
if not isinstance(config,dict) or not isinstance(config.get('loader'),str) or not re.fullmatch(r'[A-Za-z_]\w*(?:\.[A-Za-z_]\w*)*:[A-Za-z_]\w*',config['loader']):
|
||||
raise ValueError('loader must name a deployment-provided module:callable')
|
||||
mapping=config.get('task_mapping')
|
||||
if not isinstance(mapping,dict) or not mapping or any(not isinstance(value,str) or not value.strip() for value in mapping.values()):
|
||||
raise ValueError('task_mapping must contain deployment-validated model tasks')
|
||||
if 'dense_feedback' in mapping:
|
||||
raise ValueError('dense feedback requires a deployment-provided multi-frame adapter; this adapter accepts a single image')
|
||||
if set(mapping)-{'plan','shelf','localize3d'}:
|
||||
raise ValueError('unsupported capability in task_mapping')
|
||||
if not isinstance(config.get('model'),dict):
|
||||
raise ValueError('model must contain deployment-provided loading configuration')
|
||||
module,name=config['loader'].split(':',1)
|
||||
model=getattr(importlib.import_module(module),name)(config['model'])
|
||||
try:loader=getattr(importlib.import_module(module),name)
|
||||
except (ImportError,AttributeError) as ex:
|
||||
raise ValueError('deployment model loader unavailable: '+config['loader']) from ex
|
||||
if not callable(loader):raise ValueError('deployment model loader is not callable')
|
||||
model=loader(config['model'])
|
||||
if not callable(getattr(model,'inference',None)):
|
||||
raise ValueError('deployment model must expose inference(prompt, image, task=...)')
|
||||
def infer(request):
|
||||
capability=request['capability']
|
||||
task=config.get('task_mapping',{}).get(capability)
|
||||
|
||||
Reference in New Issue
Block a user