mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-10-08 07:52:20 +02:00
Consolidate Odysseus agent harness and tool contracts
This commit is contained in:
+40
-4
@@ -3,6 +3,7 @@
|
||||
from src.endpoint_resolver import (
|
||||
resolve_endpoint,
|
||||
resolve_utility_fallback_candidates,
|
||||
same_endpoint_base as _same_endpoint_base,
|
||||
)
|
||||
from src.llm_core import llm_call_async_with_fallback
|
||||
from src.interactive_gate import wait_for_interactive_quiet
|
||||
@@ -22,6 +23,9 @@ def resolve_task_candidates(
|
||||
fallback_url=None,
|
||||
fallback_model=None,
|
||||
fallback_headers=None,
|
||||
override_url=None,
|
||||
override_model=None,
|
||||
override_headers=None,
|
||||
owner=None,
|
||||
):
|
||||
"""Return ordered background-task LLM candidates.
|
||||
@@ -42,6 +46,26 @@ def resolve_task_candidates(
|
||||
return
|
||||
candidates.append((url, model, headers or {}))
|
||||
|
||||
if override_url and override_model:
|
||||
headers = override_headers or {}
|
||||
try:
|
||||
from src.database import ModelEndpoint, SessionLocal
|
||||
from src.endpoint_resolver import normalize_base, resolve_endpoint_runtime, build_headers
|
||||
db = SessionLocal()
|
||||
try:
|
||||
from src.auth_helpers import owner_filter
|
||||
query = db.query(ModelEndpoint).filter(ModelEndpoint.is_enabled == True)
|
||||
for ep in owner_filter(query, ModelEndpoint, owner).all():
|
||||
base = normalize_base(getattr(ep, "base_url", "") or "")
|
||||
if _same_endpoint_base(override_url, base):
|
||||
runtime_base, api_key = resolve_endpoint_runtime(ep, owner=owner)
|
||||
headers = build_headers(api_key, runtime_base or base)
|
||||
break
|
||||
finally:
|
||||
db.close()
|
||||
except Exception:
|
||||
pass
|
||||
_append(override_url, override_model, headers)
|
||||
_append(*resolve_task_endpoint(fallback_url, fallback_model, fallback_headers, owner=owner))
|
||||
_append(*resolve_endpoint("utility", owner=owner))
|
||||
_append(*resolve_endpoint("default", owner=owner))
|
||||
@@ -56,15 +80,27 @@ async def task_llm_call_async(
|
||||
fallback_url=None,
|
||||
fallback_model=None,
|
||||
fallback_headers=None,
|
||||
override_url=None,
|
||||
override_model=None,
|
||||
override_headers=None,
|
||||
owner=None,
|
||||
**kwargs,
|
||||
):
|
||||
"""Call the shared background-task LLM candidate chain."""
|
||||
resolver_kwargs = {
|
||||
"fallback_url": fallback_url,
|
||||
"fallback_model": fallback_model,
|
||||
"fallback_headers": fallback_headers,
|
||||
"owner": owner,
|
||||
}
|
||||
if override_url is not None:
|
||||
resolver_kwargs["override_url"] = override_url
|
||||
if override_model is not None:
|
||||
resolver_kwargs["override_model"] = override_model
|
||||
if override_headers is not None:
|
||||
resolver_kwargs["override_headers"] = override_headers
|
||||
candidates = resolve_task_candidates(
|
||||
fallback_url=fallback_url,
|
||||
fallback_model=fallback_model,
|
||||
fallback_headers=fallback_headers,
|
||||
owner=owner,
|
||||
**resolver_kwargs,
|
||||
)
|
||||
if not candidates:
|
||||
raise RuntimeError("No LLM endpoint available for background task")
|
||||
|
||||
Reference in New Issue
Block a user