Added reference resolver WIP (codex)

This commit is contained in:
2026-09-23 01:42:50 +03:00
parent 0da97ca225
commit 1e462b22a9
6 changed files with 564 additions and 11 deletions

53
main.py
View File

@@ -14,7 +14,8 @@ import torch
from asr import Asr, AsrRawResult
from asr_filter import AsrFilter, AsrFilterResult
from asr_eventizer import AsrEventizer
from video_references import VideoReferenceBuilder
from video_references import UnresolvedReferences, VideoReferenceBuilder
from reference_resolver import ReferenceResolver
from structure_builder import Structure, StructureBuilder
from structure_refiner import StructureRefiner
from markdown_builder import MarkdownBuilder
@@ -100,6 +101,31 @@ def setup_arguments() -> argparse.Namespace:
type=str,
default=ai_api_key
)
parser.add_argument(
"--resolver-ai-model",
type=str,
default="google/gemini-3.5-flash"
)
parser.add_argument(
"--resolver-ai-base-url",
type=str,
default="https://api.proxyapi.ru/v1"
)
parser.add_argument(
"--resolver-ai-api-key",
type=str,
default=ai_api_key
)
parser.add_argument(
"--resolver-frame-interval",
type=float,
default=1.0
)
parser.add_argument(
"--resolver-max-frames",
type=int,
default=9
)
parser.add_argument(
"--structure-ai-model",
type=str,
@@ -253,10 +279,27 @@ def on_reference_resolver(current_step: Step, input_data: dict | None) -> tuple[
return (Step.STRUCTURE_BUILDER, json.load(f))
if not os.path.isfile("video.mp4"):
logging.info("No video, skipping")
return (Step.STRUCTURE_BUILDER, input_data)
# NOT IMPLEMENTED
logging.warning("Reference resolver is not implemented yet")
return (None, None)
with open("audio_events.json", "rb") as f:
return (Step.STRUCTURE_BUILDER, json.load(f))
if input_data is None:
logging.error("Can't resolve video references without input_data")
return (None, None)
with open("audio_events.json", "rb") as f:
timeline = Timeline(**json.load(f))
logging.info("Creating the agent")
agent = Agent(
model=ARGS.resolver_ai_model,
base_url=ARGS.resolver_ai_base_url,
api_key=ARGS.resolver_ai_api_key
)
logging.info("Resolving video references...")
resolver = ReferenceResolver(
agent,
frame_interval=ARGS.resolver_frame_interval,
max_frames=ARGS.resolver_max_frames,
)
result = resolver.resolve(timeline, UnresolvedReferences(**input_data))
return (Step.STRUCTURE_BUILDER, result.model_dump(mode="json"))
def on_structure_builder(current_step: Step, input_data: dict | None) -> tuple[Step | None, dict | None]:
# don't if done