Translate an internal model name to what the upstream expects. Priority: 1. Exact match in discovered upstream model set 2. Dynamic map (from ``/v1/models`` discovery + seed/fuzzy matching) 3. Learned fallback alias, when it can be validated for this upstream
(self, internal_name: str)
| 495 | # ---- resolution ------------------------------------------------------- |
| 496 | |
| 497 | def resolve(self, internal_name: str) -> str: |
| 498 | """Translate an internal model name to what the upstream expects. |
| 499 | |
| 500 | Priority: |
| 501 | 1. Exact match in discovered upstream model set |
| 502 | 2. Dynamic map (from ``/v1/models`` discovery + seed/fuzzy matching) |
| 503 | 3. Learned fallback alias, when it can be validated for this upstream |
| 504 | 4. Gateway -> keep full ``provider/model``; direct -> strip prefix |
| 505 | """ |
| 506 | if self._discovered and internal_name in self._upstream_models: |
| 507 | return internal_name |
| 508 | |
| 509 | if internal_name in self._map: |
| 510 | return self._map[internal_name] |
| 511 | |
| 512 | if internal_name in self._learned_aliases: |
| 513 | candidate = self._learned_aliases[internal_name] |
| 514 | if self._discovered: |
| 515 | if candidate in self._upstream_models: |
| 516 | return candidate |
| 517 | elif not (self.is_gateway and "/" in internal_name): |
| 518 | return candidate |
| 519 | |
| 520 | if not self.is_gateway and "/" in internal_name: |
| 521 | return internal_name.split("/", 1)[-1] |
| 522 | |
| 523 | return internal_name |
| 524 | |
| 525 | # ---- dynamic pricing & capabilities ----------------------------------- |
| 526 |
no outgoing calls