Added docker support
This commit is contained in:
@@ -13,6 +13,7 @@ from typing import Literal
|
||||
from pydantic import BaseModel, ConfigDict, ValidationError, model_validator
|
||||
|
||||
from agent import Agent, AgentMessage
|
||||
from paths import debug_path, prompt_path
|
||||
from utils import Event, Timeline
|
||||
from video_references import UnresolvedReference, UnresolvedReferences
|
||||
|
||||
@@ -94,10 +95,14 @@ class ReferenceResolver:
|
||||
self._image_dir = Path(image_dir)
|
||||
self._frame_interval = frame_interval
|
||||
self._max_frames = max_frames
|
||||
with open("prompts/reference_resolver.md", "r", encoding="utf-8") as f:
|
||||
self._system_prompt = AgentMessage(content=f.read(), role="system")
|
||||
with open("prompts/reference_resolver_ocr.md", "r", encoding="utf-8") as f:
|
||||
self._ocr_prompt = AgentMessage(content=f.read(), role="system")
|
||||
self._system_prompt = AgentMessage(
|
||||
content=prompt_path("reference_resolver.md").read_text(encoding="utf-8"),
|
||||
role="system",
|
||||
)
|
||||
self._ocr_prompt = AgentMessage(
|
||||
content=prompt_path("reference_resolver_ocr.md").read_text(encoding="utf-8"),
|
||||
role="system",
|
||||
)
|
||||
|
||||
def _sampling_timestamps(self, start: float, end: float) -> list[float]:
|
||||
start = max(0.0, start)
|
||||
@@ -217,13 +222,10 @@ class ReferenceResolver:
|
||||
),
|
||||
]
|
||||
|
||||
debug_dir = None
|
||||
if os.path.isdir("debug"):
|
||||
debug_dir = f"debug/ReferenceResolver/{ReferenceResolver.DEBUG_ID}"
|
||||
debug_dir = debug_path("ReferenceResolver", ReferenceResolver.DEBUG_ID)
|
||||
if debug_dir:
|
||||
ReferenceResolver.DEBUG_ID += 1
|
||||
os.makedirs(debug_dir, exist_ok=True)
|
||||
with open(f"{debug_dir}/request.txt", "w", encoding="utf-8") as f:
|
||||
f.write(messages[1].content)
|
||||
(debug_dir / "request.txt").write_text(messages[1].content, encoding="utf-8")
|
||||
|
||||
retries_left = self.MAX_RETRIES
|
||||
while retries_left > 0:
|
||||
@@ -235,12 +237,10 @@ class ReferenceResolver:
|
||||
response_format=_FrameResult,
|
||||
)
|
||||
if debug_dir:
|
||||
with open(
|
||||
f"{debug_dir}/{retries_left}-retries-left.txt",
|
||||
"w",
|
||||
(debug_dir / f"{retries_left}-retries-left.txt").write_text(
|
||||
response,
|
||||
encoding="utf-8",
|
||||
) as f:
|
||||
f.write(response)
|
||||
)
|
||||
|
||||
try:
|
||||
result = _FrameResult.model_validate_json(response)
|
||||
@@ -312,14 +312,11 @@ class ReferenceResolver:
|
||||
),
|
||||
]
|
||||
|
||||
debug_dir = None
|
||||
if os.path.isdir("debug"):
|
||||
debug_dir = f"debug/ReferenceResolverOCR/{ReferenceResolver.OCR_DEBUG_ID}"
|
||||
debug_dir = debug_path("ReferenceResolverOCR", ReferenceResolver.OCR_DEBUG_ID)
|
||||
if debug_dir:
|
||||
ReferenceResolver.OCR_DEBUG_ID += 1
|
||||
os.makedirs(debug_dir, exist_ok=True)
|
||||
with open(f"{debug_dir}/request.txt", "w", encoding="utf-8") as f:
|
||||
f.write(messages[1].content)
|
||||
shutil.copyfile(crop_path, f"{debug_dir}/crop.jpg")
|
||||
(debug_dir / "request.txt").write_text(messages[1].content, encoding="utf-8")
|
||||
shutil.copyfile(crop_path, debug_dir / "crop.jpg")
|
||||
|
||||
retries_left = self.MAX_RETRIES
|
||||
while retries_left > 0:
|
||||
@@ -331,12 +328,10 @@ class ReferenceResolver:
|
||||
response_format=_OCRResult,
|
||||
)
|
||||
if debug_dir:
|
||||
with open(
|
||||
f"{debug_dir}/{retries_left}-retries-left.txt",
|
||||
"w",
|
||||
(debug_dir / f"{retries_left}-retries-left.txt").write_text(
|
||||
response,
|
||||
encoding="utf-8",
|
||||
) as f:
|
||||
f.write(response)
|
||||
)
|
||||
|
||||
try:
|
||||
result = _OCRResult.model_validate_json(response)
|
||||
|
||||
Reference in New Issue
Block a user