mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-06-22 12:45:25 -04:00
Cookbook model workflow fixes
This commit is contained in:
+64
-2
@@ -1,6 +1,11 @@
|
||||
"""Shared resolver for background-task AI endpoint (auto-naming, memory, sorting)."""
|
||||
"""Shared resolver for background-task AI endpoints."""
|
||||
|
||||
from src.endpoint_resolver import resolve_endpoint
|
||||
from src.endpoint_resolver import (
|
||||
resolve_chat_fallback_candidates,
|
||||
resolve_endpoint,
|
||||
resolve_utility_fallback_candidates,
|
||||
)
|
||||
from src.llm_core import llm_call_async_with_fallback
|
||||
|
||||
|
||||
def resolve_task_endpoint(fallback_url=None, fallback_model=None, fallback_headers=None, owner=None):
|
||||
@@ -11,3 +16,60 @@ def resolve_task_endpoint(fallback_url=None, fallback_model=None, fallback_heade
|
||||
endpoint cannot be resolved.
|
||||
"""
|
||||
return resolve_endpoint("task", fallback_url, fallback_model, fallback_headers, owner=owner)
|
||||
|
||||
|
||||
def resolve_task_candidates(
|
||||
fallback_url=None,
|
||||
fallback_model=None,
|
||||
fallback_headers=None,
|
||||
owner=None,
|
||||
):
|
||||
"""Return ordered background-task LLM candidates.
|
||||
|
||||
Order:
|
||||
1. configured Background Tasks endpoint/model, or caller fallback
|
||||
2. Utility endpoint/model
|
||||
3. Default endpoint/model
|
||||
4. Utility fallback chain
|
||||
5. Default fallback chain
|
||||
"""
|
||||
candidates = []
|
||||
|
||||
def _append(url, model, headers):
|
||||
if not url or not model:
|
||||
return
|
||||
key = (url, model)
|
||||
if any((u, m) == key for u, m, _ in candidates):
|
||||
return
|
||||
candidates.append((url, model, headers or {}))
|
||||
|
||||
_append(*resolve_task_endpoint(fallback_url, fallback_model, fallback_headers, owner=owner))
|
||||
_append(*resolve_endpoint("utility", owner=owner))
|
||||
_append(*resolve_endpoint("default", owner=owner))
|
||||
for url, model, headers in resolve_utility_fallback_candidates(owner=owner):
|
||||
_append(url, model, headers)
|
||||
for url, model, headers in resolve_chat_fallback_candidates(owner=owner):
|
||||
_append(url, model, headers)
|
||||
|
||||
return candidates
|
||||
|
||||
|
||||
async def task_llm_call_async(
|
||||
messages,
|
||||
*,
|
||||
fallback_url=None,
|
||||
fallback_model=None,
|
||||
fallback_headers=None,
|
||||
owner=None,
|
||||
**kwargs,
|
||||
):
|
||||
"""Call the shared background-task LLM candidate chain."""
|
||||
candidates = resolve_task_candidates(
|
||||
fallback_url=fallback_url,
|
||||
fallback_model=fallback_model,
|
||||
fallback_headers=fallback_headers,
|
||||
owner=owner,
|
||||
)
|
||||
if not candidates:
|
||||
raise RuntimeError("No LLM endpoint available for background task")
|
||||
return await llm_call_async_with_fallback(candidates, messages=messages, **kwargs)
|
||||
|
||||
Reference in New Issue
Block a user