mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-11 22:51:28 +00:00
test(ocr): migrate parity fixtures to VCR cassettes
This commit is contained in:
parent
00cc169623
commit
8cfac2a24b
73 changed files with 2752 additions and 2441 deletions
|
|
@ -40,6 +40,27 @@ The shared package owns recording, replay, persistence, execution, comparison, a
|
|||
Each API package owns its input models, explicit strategies, provider targets, route-specific assets, fixture directory,
|
||||
and regeneration command. See the API package documentation for its configured contracts and recording command
|
||||
|
||||
## VCR cassettes
|
||||
|
||||
Fixtures use VCR's YAML `version: 1` format with ordered request/response `interactions`. VCR handles text and binary
|
||||
body serialization. Each cassette also contains `recorded_at`, `ttl_seconds: 0` (committed fixtures never expire), and
|
||||
`x-litellm` metadata holding the SDK input and request provenance. Streaming responses carry
|
||||
`x-litellm-chunk-lengths` so local replay preserves the original byte boundaries
|
||||
|
||||
The recording server captures requests before forwarding their responses. Saved requests use the stable
|
||||
`http://parity-provider.invalid` origin and strip authentication headers and credential query parameters. The upstream
|
||||
request keeps its credentials. Provider response bytes and non-success statuses are preserved
|
||||
|
||||
Standard VCR can load these files and replay their interactions. Parity tests keep using the local HTTP server because
|
||||
Rust HTTP calls do not pass through VCR's Python patches. The harness still compares the two implementations' requests
|
||||
against each other; the saved request is available for inspection and VCR playback, not a new parity assertion
|
||||
|
||||
Refresh parity cassettes through the API's recording command. Generic VCR writers do not preserve the SDK metadata
|
||||
|
||||
Legacy JSON fixtures remain readable. Migrated cassettes mark reconstructed requests as `python_replay`; fresh
|
||||
recordings use `recorded`. The metadata extensions follow the filesystem cassette layout proposed in
|
||||
[PR #39338](https://github.com/BerriAI/litellm/pull/39338), without depending on its unmerged persistence backend
|
||||
|
||||
## References
|
||||
|
||||
- [Hypothesis documentation](https://hypothesis.readthedocs.io/en/latest/)
|
||||
|
|
|
|||
147
tests/route_parity/fixtures/cassette.py
Normal file
147
tests/route_parity/fixtures/cassette.py
Normal file
|
|
@ -0,0 +1,147 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from collections.abc import Mapping
|
||||
from datetime import datetime
|
||||
from itertools import accumulate
|
||||
from typing import Final, Literal
|
||||
|
||||
from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, TypeAdapter
|
||||
from vcr.serialize import serialize
|
||||
from vcr.serializers import yamlserializer
|
||||
|
||||
from tests.route_parity.fixtures.recording import RecordedInteraction
|
||||
from tests.route_parity.recorded_http import (
|
||||
HttpHeader,
|
||||
RecordedHttpResponse,
|
||||
RecordedHttpStreamResponse,
|
||||
RecordedResponse,
|
||||
RecordedStreamChunk,
|
||||
)
|
||||
|
||||
_OBJECT: Final = TypeAdapter(dict[str, object])
|
||||
|
||||
|
||||
class _CassetteModel(BaseModel):
|
||||
model_config = ConfigDict(frozen=True, extra="forbid", populate_by_name=True)
|
||||
|
||||
|
||||
class _Body(_CassetteModel):
|
||||
string: str | bytes
|
||||
|
||||
def as_bytes(self) -> bytes:
|
||||
return self.string.encode("utf-8") if isinstance(self.string, str) else self.string
|
||||
|
||||
|
||||
class _Status(_CassetteModel):
|
||||
code: int
|
||||
message: str
|
||||
|
||||
|
||||
class _Request(_CassetteModel):
|
||||
method: str
|
||||
uri: str
|
||||
body: str | bytes | None
|
||||
headers: dict[str, tuple[str, ...]]
|
||||
|
||||
|
||||
class _Response(_CassetteModel):
|
||||
status: _Status
|
||||
headers: dict[str, tuple[str, ...]]
|
||||
body: _Body
|
||||
chunk_lengths: tuple[int, ...] | None = Field(default=None, alias="x-litellm-chunk-lengths")
|
||||
|
||||
def recorded_response(self) -> RecordedResponse:
|
||||
headers: Final = tuple(
|
||||
HttpHeader(name=name, value=value) for name, values in self.headers.items() for value in values
|
||||
)
|
||||
body: Final = self.body.as_bytes()
|
||||
if self.chunk_lengths is None:
|
||||
return RecordedHttpResponse.from_bytes(self.status.code, headers, body)
|
||||
if any(length < 0 for length in self.chunk_lengths) or sum(self.chunk_lengths) != len(body):
|
||||
raise ValueError("cassette stream chunk lengths do not match the response body")
|
||||
offsets: Final = tuple(accumulate(self.chunk_lengths, initial=0))
|
||||
return RecordedHttpStreamResponse(
|
||||
kind="http_stream",
|
||||
status_code=self.status.code,
|
||||
headers=headers,
|
||||
chunks=tuple(RecordedStreamChunk.from_bytes(body[start:end]) for start, end in zip(offsets, offsets[1:])),
|
||||
)
|
||||
|
||||
|
||||
class _Interaction(_CassetteModel):
|
||||
request: _Request
|
||||
response: _Response
|
||||
|
||||
|
||||
class _ParityMetadata(_CassetteModel):
|
||||
schema_version: Literal[1]
|
||||
request_source: Literal["recorded", "python_replay"]
|
||||
case: dict[str, object]
|
||||
|
||||
|
||||
class ParityCassette(_CassetteModel):
|
||||
version: Literal[1]
|
||||
recorded_at: AwareDatetime
|
||||
ttl_seconds: Literal[0]
|
||||
interactions: tuple[_Interaction, ...]
|
||||
parity: _ParityMetadata = Field(alias="x-litellm")
|
||||
|
||||
def case_data(self) -> dict[str, object]:
|
||||
return {
|
||||
**self.parity.case,
|
||||
"provider_responses": tuple(item.response.recorded_response() for item in self.interactions),
|
||||
}
|
||||
|
||||
|
||||
def _response_dict(response: RecordedResponse) -> dict[str, object]:
|
||||
headers: Final = {
|
||||
name: [header.value for header in response.headers if header.name == name]
|
||||
for name in dict.fromkeys(header.name for header in response.headers)
|
||||
}
|
||||
chunks: Final = (
|
||||
tuple(chunk.data_bytes() for chunk in response.chunks)
|
||||
if isinstance(response, RecordedHttpStreamResponse)
|
||||
else None
|
||||
)
|
||||
body: Final = response.body_bytes() if isinstance(response, RecordedHttpResponse) else b"".join(chunks or ())
|
||||
return {
|
||||
"status": {"code": response.status_code, "message": ""},
|
||||
"headers": headers,
|
||||
"body": {"string": body},
|
||||
**({"x-litellm-chunk-lengths": list(map(len, chunks))} if chunks is not None else {}),
|
||||
}
|
||||
|
||||
|
||||
def serialize_cassette(
|
||||
case: Mapping[str, object],
|
||||
interactions: tuple[RecordedInteraction, ...],
|
||||
recorded_at: datetime,
|
||||
request_source: Literal["recorded", "python_replay"],
|
||||
) -> str:
|
||||
normalized: Final = _OBJECT.validate_python(
|
||||
yamlserializer.deserialize(
|
||||
serialize(
|
||||
{
|
||||
"requests": [item.request for item in interactions],
|
||||
"responses": [_response_dict(item.response) for item in interactions],
|
||||
},
|
||||
yamlserializer,
|
||||
)
|
||||
)
|
||||
)
|
||||
payload: Final = {
|
||||
**normalized,
|
||||
"recorded_at": recorded_at.isoformat(),
|
||||
"ttl_seconds": 0,
|
||||
"x-litellm": {
|
||||
"schema_version": 1,
|
||||
"request_source": request_source,
|
||||
"case": {key: value for key, value in case.items() if key != "provider_responses"},
|
||||
},
|
||||
}
|
||||
ParityCassette.model_validate(payload).case_data()
|
||||
return str(yamlserializer.serialize(payload))
|
||||
|
||||
|
||||
def deserialize_cassette(contents: str) -> ParityCassette:
|
||||
return ParityCassette.model_validate(yamlserializer.deserialize(contents))
|
||||
|
|
@ -11,7 +11,7 @@ from hypothesis.strategies import SearchStrategy
|
|||
from pydantic import BaseModel
|
||||
|
||||
from tests.route_parity.fixtures.inputs import generate_case_inputs
|
||||
from tests.route_parity.fixtures.recording import UpstreamEndpoint, record_upstream_responses
|
||||
from tests.route_parity.fixtures.recording import UpstreamEndpoint, record_upstream_interactions
|
||||
from tests.route_parity.fixtures.store import (
|
||||
FixtureInput,
|
||||
canonical_json,
|
||||
|
|
@ -121,19 +121,25 @@ def build_recording_jobs(
|
|||
def _record_job(job: RecordingJob[InputT], case_type: type[CaseT]) -> RecordedFixture | CachedFixture:
|
||||
cached: Final = load_fixture(job.directory, job.case_input, case_type)
|
||||
if cached is not None:
|
||||
path: Final = fixture_path(job.directory, job.case_input)
|
||||
return CachedFixture(
|
||||
target_name=job.target_name,
|
||||
case_id=job.case_id,
|
||||
path=fixture_path(job.directory, job.case_input),
|
||||
path=path if path.is_file() else path.with_suffix(".json"),
|
||||
)
|
||||
provider_responses: Final = record_upstream_responses(
|
||||
interactions: Final = record_upstream_interactions(
|
||||
job.upstream,
|
||||
job.case_input,
|
||||
job.invocation.execute,
|
||||
)
|
||||
case: Final = case_type.model_validate({"litellm_input": job.case_input, "provider_responses": provider_responses})
|
||||
path: Final = save_fixture(job.directory, job.case_input, case)
|
||||
return RecordedFixture(target_name=job.target_name, case_id=job.case_id, path=path)
|
||||
case: Final = case_type.model_validate(
|
||||
{
|
||||
"litellm_input": job.case_input,
|
||||
"provider_responses": tuple(item.response for item in interactions),
|
||||
}
|
||||
)
|
||||
saved_path: Final = save_fixture(job.directory, job.case_input, case, interactions)
|
||||
return RecordedFixture(target_name=job.target_name, case_id=job.case_id, path=saved_path)
|
||||
|
||||
|
||||
def _completed_outcome(
|
||||
|
|
|
|||
|
|
@ -10,6 +10,8 @@ from typing import Final, TypeVar, cast
|
|||
from urllib.parse import urlsplit, urlunsplit
|
||||
|
||||
import httpx
|
||||
from vcr.filters import remove_query_parameters
|
||||
from vcr.request import Request
|
||||
|
||||
from tests.provider_record_replay.http import (
|
||||
dropped_request_headers,
|
||||
|
|
@ -25,6 +27,21 @@ from tests.route_parity.recorded_http import (
|
|||
)
|
||||
|
||||
_PARITY_PROVIDER_HOST: Final = "parity-provider.invalid"
|
||||
_SECRET_HEADERS: Final = frozenset(
|
||||
{
|
||||
"authorization",
|
||||
"proxy-authorization",
|
||||
"cookie",
|
||||
"x-api-key",
|
||||
"api-key",
|
||||
"anthropic-api-key",
|
||||
"openai-api-key",
|
||||
"azure-api-key",
|
||||
"x-goog-api-key",
|
||||
"ocp-apim-subscription-key",
|
||||
"x-amz-security-token",
|
||||
}
|
||||
)
|
||||
|
||||
InputT = TypeVar("InputT")
|
||||
|
||||
|
|
@ -34,6 +51,12 @@ class UpstreamEndpoint:
|
|||
base_url: str
|
||||
|
||||
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class RecordedInteraction:
|
||||
request: Request
|
||||
response: RecordedResponse
|
||||
|
||||
|
||||
def _end_to_end_headers(headers: httpx.Headers) -> tuple[HttpHeader, ...]:
|
||||
decoded: Final = tuple((name.decode("ascii"), value.decode("latin-1")) for name, value in headers.raw)
|
||||
excluded: Final = dropped_response_headers(decoded)
|
||||
|
|
@ -68,18 +91,18 @@ class _RecordingProvider(ThreadingHTTPServer):
|
|||
def __init__(self, spec: UpstreamEndpoint) -> None:
|
||||
super().__init__(("127.0.0.1", 0), _RecordingHandler)
|
||||
self.spec: Final = spec
|
||||
self.responses: queue.Queue[RecordedResponse] = queue.Queue()
|
||||
self.interactions: queue.Queue[RecordedInteraction] = queue.Queue()
|
||||
|
||||
@property
|
||||
def url(self) -> str:
|
||||
return f"http://127.0.0.1:{self.server_address[1]}"
|
||||
|
||||
def take_responses(self) -> tuple[RecordedResponse, ...]:
|
||||
def take_interactions(self) -> tuple[RecordedInteraction, ...]:
|
||||
try:
|
||||
first: Final = self.responses.get(timeout=5)
|
||||
first: Final = self.interactions.get(timeout=5)
|
||||
except queue.Empty as error:
|
||||
raise RuntimeError("successful SDK call did not produce a recorded response") from error
|
||||
remaining: Final = tuple(self.responses.get_nowait() for _ in range(self.responses.qsize()))
|
||||
remaining: Final = tuple(self.interactions.get_nowait() for _ in range(self.interactions.qsize()))
|
||||
return (first, *remaining)
|
||||
|
||||
|
||||
|
|
@ -125,7 +148,16 @@ class _RecordingHandler(BaseHTTPRequestHandler):
|
|||
self._send_response(502, (), str(error).encode("utf-8"))
|
||||
return
|
||||
|
||||
provider.responses.put(recorded_response)
|
||||
recorded_request: Final = remove_query_parameters(
|
||||
Request(
|
||||
self.command,
|
||||
f"http://{_PARITY_PROVIDER_HOST}{self.path}",
|
||||
request_body,
|
||||
{name: value for name, value in forwarded_headers if name.lower() not in _SECRET_HEADERS},
|
||||
),
|
||||
("api_key", "api-key", "key", "access_token", "subscription-key"),
|
||||
)
|
||||
provider.interactions.put(RecordedInteraction(recorded_request, recorded_response))
|
||||
if isinstance(recorded_response, RecordedHttpResponse):
|
||||
self._send_response(
|
||||
recorded_response.status_code, recorded_response.headers, recorded_response.body_bytes()
|
||||
|
|
@ -203,19 +235,28 @@ def _recording_provider(spec: UpstreamEndpoint) -> Generator[_RecordingProvider]
|
|||
thread.join(timeout=5)
|
||||
|
||||
|
||||
def _invoke_and_take_responses(
|
||||
def _invoke_and_take_interactions(
|
||||
recorder: _RecordingProvider,
|
||||
case_input: InputT,
|
||||
sdk_call: Callable[[str, InputT], object],
|
||||
) -> tuple[RecordedResponse, ...]:
|
||||
) -> tuple[RecordedInteraction, ...]:
|
||||
try:
|
||||
sdk_call(recorder.url, case_input)
|
||||
except Exception as invocation_error:
|
||||
try:
|
||||
return recorder.take_responses()
|
||||
return recorder.take_interactions()
|
||||
except RuntimeError:
|
||||
raise invocation_error
|
||||
return recorder.take_responses()
|
||||
return recorder.take_interactions()
|
||||
|
||||
|
||||
def record_upstream_interactions(
|
||||
spec: UpstreamEndpoint,
|
||||
case_input: InputT,
|
||||
sdk_call: Callable[[str, InputT], object],
|
||||
) -> tuple[RecordedInteraction, ...]:
|
||||
with _recording_provider(spec) as recorder:
|
||||
return _invoke_and_take_interactions(recorder, case_input, sdk_call)
|
||||
|
||||
|
||||
def record_upstream_responses(
|
||||
|
|
@ -223,5 +264,4 @@ def record_upstream_responses(
|
|||
case_input: InputT,
|
||||
sdk_call: Callable[[str, InputT], object],
|
||||
) -> tuple[RecordedResponse, ...]:
|
||||
with _recording_provider(spec) as recorder:
|
||||
return _invoke_and_take_responses(recorder, case_input, sdk_call)
|
||||
return tuple(item.response for item in record_upstream_interactions(spec, case_input, sdk_call))
|
||||
|
|
|
|||
|
|
@ -2,13 +2,17 @@ from __future__ import annotations
|
|||
|
||||
import hashlib
|
||||
import json
|
||||
import tempfile
|
||||
from collections.abc import Mapping
|
||||
from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
from typing import Final, Protocol, TypeVar, cast
|
||||
from typing import Final, Literal, Protocol, TypeVar, cast
|
||||
|
||||
from pydantic import AwareDatetime, BaseModel, ConfigDict, TypeAdapter, ValidationError
|
||||
|
||||
from tests.route_parity.fixtures.cassette import deserialize_cassette, serialize_cassette
|
||||
from tests.route_parity.fixtures.recording import RecordedInteraction
|
||||
|
||||
FIXTURE_SCHEMA_VERSION: Final = 1
|
||||
JSON_OBJECT: Final = TypeAdapter(dict[str, object])
|
||||
|
||||
|
|
@ -39,33 +43,58 @@ def fixture_cache_key(case_input: FixtureInput) -> dict[str, object]:
|
|||
def fixture_path(directory: Path, case_input: FixtureInput) -> Path:
|
||||
input_json: Final = canonical_json(fixture_cache_key(case_input))
|
||||
digest: Final = hashlib.sha256(input_json.encode("utf-8")).hexdigest()
|
||||
return directory / f"{digest}.json"
|
||||
return directory / f"{digest}.yaml"
|
||||
|
||||
|
||||
def load_fixture(directory: Path, case_input: FixtureInput, case_type: type[CaseT]) -> CaseT | None:
|
||||
path: Final = fixture_path(directory, case_input)
|
||||
if not path.is_file():
|
||||
if path.is_file():
|
||||
return read_fixture(path, case_type)
|
||||
legacy_path: Final = path.with_suffix(".json")
|
||||
if not legacy_path.is_file():
|
||||
return None
|
||||
return _load_fixture(JSON_OBJECT.validate_json(path.read_text(encoding="utf-8")), path, case_type)
|
||||
return read_fixture(legacy_path, case_type)
|
||||
|
||||
|
||||
def save_fixture(directory: Path, case_input: FixtureInput, case: BaseModel) -> Path:
|
||||
def save_fixture(
|
||||
directory: Path,
|
||||
case_input: FixtureInput,
|
||||
case: BaseModel,
|
||||
interactions: tuple[RecordedInteraction, ...],
|
||||
*,
|
||||
recorded_at: datetime | None = None,
|
||||
request_source: Literal["recorded", "python_replay"] = "recorded",
|
||||
) -> Path:
|
||||
directory.mkdir(parents=True, exist_ok=True)
|
||||
path: Final = fixture_path(directory, case_input)
|
||||
temporary_path: Final = path.with_suffix(".tmp")
|
||||
envelope: Final = FixtureEnvelope(
|
||||
schema_version=FIXTURE_SCHEMA_VERSION,
|
||||
recorded_at=datetime.now(timezone.utc),
|
||||
case=cast(dict[str, object], case.model_dump(mode="json", exclude_unset=True)),
|
||||
serialized: Final = serialize_cassette(
|
||||
cast(dict[str, object], case.model_dump(mode="json", exclude_unset=True)),
|
||||
interactions,
|
||||
recorded_at or datetime.now(timezone.utc),
|
||||
request_source,
|
||||
)
|
||||
serialized: Final = (
|
||||
json.dumps(envelope.model_dump(mode="json", exclude_unset=True), indent=2, sort_keys=True) + "\n"
|
||||
)
|
||||
temporary_path.write_text(serialized, encoding="utf-8")
|
||||
temporary_path.replace(path)
|
||||
with tempfile.NamedTemporaryFile(mode="w", encoding="utf-8", dir=directory, delete=False) as temporary:
|
||||
temporary_path: Final = Path(temporary.name)
|
||||
try:
|
||||
temporary.write(serialized)
|
||||
temporary.close()
|
||||
temporary_path.replace(path)
|
||||
finally:
|
||||
temporary_path.unlink(missing_ok=True)
|
||||
return path
|
||||
|
||||
|
||||
def read_fixture(path: Path, case_type: type[CaseT]) -> CaseT:
|
||||
contents: Final = path.read_text(encoding="utf-8")
|
||||
if path.suffix == ".json":
|
||||
return _load_fixture(JSON_OBJECT.validate_json(contents), path, case_type)
|
||||
try:
|
||||
cassette: Final = deserialize_cassette(contents)
|
||||
return case_type.model_validate(cassette.case_data())
|
||||
except ValueError as error:
|
||||
raise ValueError(f"invalid parity cassette {path}") from error
|
||||
|
||||
|
||||
def _load_fixture(raw_fixture: dict[str, object], path: Path, case_type: type[CaseT]) -> CaseT:
|
||||
schema_version: Final = raw_fixture.get("schema_version")
|
||||
if schema_version != FIXTURE_SCHEMA_VERSION:
|
||||
|
|
@ -83,10 +112,8 @@ def _load_fixture(raw_fixture: dict[str, object], path: Path, case_type: type[Ca
|
|||
def recorded_fixtures(directory: Path, case_type: type[CaseT]) -> tuple[CaseT, ...]:
|
||||
if not directory.is_dir():
|
||||
return ()
|
||||
paths: Final = tuple(sorted(directory.rglob("*.json")))
|
||||
return tuple(
|
||||
_load_fixture(JSON_OBJECT.validate_json(path.read_text(encoding="utf-8")), path, case_type) for path in paths
|
||||
)
|
||||
paths: Final = tuple(sorted((*directory.rglob("*.yaml"), *directory.rglob("*.json"))))
|
||||
return tuple(read_fixture(path, case_type) for path in paths)
|
||||
|
||||
|
||||
def fixture_directory(configured: Path | None, env_value: str | None, default: Path) -> Path:
|
||||
|
|
|
|||
95
tests/route_parity/fixtures/test_cassette.py
Normal file
95
tests/route_parity/fixtures/test_cassette.py
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
from typing import Final
|
||||
|
||||
import httpx
|
||||
import pytest
|
||||
from vcr import VCR
|
||||
from vcr.request import Request
|
||||
|
||||
from tests.route_parity.fixture_models import ParityCase, SdkInputBase
|
||||
from tests.route_parity.fixtures.cassette import deserialize_cassette
|
||||
from tests.route_parity.fixtures.recording import RecordedInteraction
|
||||
from tests.route_parity.fixtures.store import load_fixture, save_fixture
|
||||
from tests.route_parity.recorded_http import (
|
||||
HttpHeader,
|
||||
RecordedHttpResponse,
|
||||
RecordedHttpStreamResponse,
|
||||
RecordedResponse,
|
||||
RecordedStreamChunk,
|
||||
)
|
||||
from tests.route_parity.replay import replay_server
|
||||
|
||||
_URI: Final = "http://parity-provider.invalid/operation?api-version=1"
|
||||
|
||||
|
||||
class _Input(SdkInputBase):
|
||||
model: str = "fixture-model"
|
||||
|
||||
|
||||
@pytest.mark.parametrize("body", (b'{"text":"caf\xc3\xa9"}', b"\x00\xff\x80", b""))
|
||||
def test_cassette_replays_repeated_requests_with_vcr_and_preserves_bytes(tmp_path: Path, body: bytes) -> None:
|
||||
sdk_input: Final = _Input()
|
||||
responses: Final = tuple(
|
||||
RecordedHttpResponse.from_bytes(
|
||||
status,
|
||||
(HttpHeader(name="content-type", value="application/octet-stream"),),
|
||||
body,
|
||||
)
|
||||
for status in (200, 429)
|
||||
)
|
||||
case: Final = ParityCase[_Input](litellm_input=sdk_input, provider_responses=responses)
|
||||
interactions: Final = tuple(
|
||||
RecordedInteraction(Request("POST", _URI, b"\xffrequest", {}), response) for response in responses
|
||||
)
|
||||
timestamp: Final = datetime(2020, 1, 1, tzinfo=timezone.utc)
|
||||
path: Final = save_fixture(tmp_path, sdk_input, case, interactions, recorded_at=timestamp)
|
||||
|
||||
assert load_fixture(tmp_path, sdk_input, ParityCase[_Input]) == case
|
||||
assert deserialize_cassette(path.read_text()).recorded_at == timestamp
|
||||
with VCR().use_cassette(str(path), record_mode="none", match_on=("method", "uri", "body")) as cassette:
|
||||
for status in (200, 429):
|
||||
replayed: Final = httpx.post(_URI, content=b"\xffrequest")
|
||||
assert replayed.status_code == status
|
||||
assert replayed.content == body
|
||||
assert cassette.all_played
|
||||
|
||||
|
||||
def test_stream_cassette_preserves_chunk_boundaries_through_local_replay(tmp_path: Path) -> None:
|
||||
sdk_input: Final = _Input()
|
||||
chunks: Final = (b"data: caf\xc3", b"\xa9\n\n", b"data: [DONE]\n\n")
|
||||
response: Final = RecordedHttpStreamResponse(
|
||||
kind="http_stream",
|
||||
status_code=200,
|
||||
headers=(HttpHeader(name="content-type", value="text/event-stream"),),
|
||||
chunks=tuple(RecordedStreamChunk.from_bytes(chunk) for chunk in chunks),
|
||||
)
|
||||
case: Final = ParityCase[_Input](litellm_input=sdk_input, provider_responses=(response,))
|
||||
path: Final = save_fixture(
|
||||
tmp_path, sdk_input, case, (RecordedInteraction(Request("POST", _URI, b"{}", {}), response),)
|
||||
)
|
||||
loaded: Final = load_fixture(tmp_path, sdk_input, ParityCase[_Input])
|
||||
assert loaded == case
|
||||
with replay_server() as server:
|
||||
server.enqueue_response(loaded.provider_responses[0])
|
||||
with httpx.stream("POST", f"{server.url}/operation", content=b"{}") as replayed:
|
||||
assert tuple(replayed.iter_raw()) == chunks
|
||||
server.take_requests(1)
|
||||
path.write_text(path.read_text().replace("- 10\n", "- 999\n"))
|
||||
with pytest.raises(ValueError, match="invalid parity cassette"):
|
||||
load_fixture(tmp_path, sdk_input, ParityCase[_Input])
|
||||
|
||||
|
||||
def test_cassette_preserves_duplicate_response_headers(tmp_path: Path) -> None:
|
||||
sdk_input: Final = _Input()
|
||||
response: Final[RecordedResponse] = RecordedHttpResponse.from_bytes(
|
||||
200,
|
||||
(HttpHeader(name="x-test", value="first"), HttpHeader(name="x-test", value="second")),
|
||||
b"{}",
|
||||
)
|
||||
case: Final = ParityCase[_Input](litellm_input=sdk_input, provider_responses=(response,))
|
||||
save_fixture(tmp_path, sdk_input, case, (RecordedInteraction(Request("POST", _URI, b"", {}), response),))
|
||||
|
||||
assert load_fixture(tmp_path, sdk_input, ParityCase[_Input]) == case
|
||||
|
|
@ -174,7 +174,9 @@ def test_failure_does_not_stop_independent_recordings(tmp_path: Path) -> None:
|
|||
stale_input: Final = _FixtureInput(identifier="stale")
|
||||
stale_directory: Final = tmp_path / "stale"
|
||||
stale_directory.mkdir()
|
||||
fixture_path(stale_directory, stale_input).write_text('{"schema_version": 0}\n', encoding="utf-8")
|
||||
fixture_path(stale_directory, stale_input).with_suffix(".json").write_text(
|
||||
'{"schema_version": 0}\n', encoding="utf-8"
|
||||
)
|
||||
with _upstream() as upstream:
|
||||
targets: Final = (
|
||||
_target("stale", upstream.url, stale_input, _Invocation()),
|
||||
|
|
|
|||
|
|
@ -14,7 +14,11 @@ from hypothesis import strategies as st
|
|||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
from tests.route_parity.fixtures.pipeline import RecordingTarget, record_fixtures
|
||||
from tests.route_parity.fixtures.recording import UpstreamEndpoint, record_upstream_responses
|
||||
from tests.route_parity.fixtures.recording import (
|
||||
UpstreamEndpoint,
|
||||
record_upstream_interactions,
|
||||
record_upstream_responses,
|
||||
)
|
||||
from tests.route_parity.fixtures.store import (
|
||||
FIXTURE_SCHEMA_VERSION,
|
||||
fixture_path,
|
||||
|
|
@ -96,6 +100,10 @@ class _ControlledUpstreamHandler(BaseHTTPRequestHandler):
|
|||
assert isinstance(upstream, _ControlledUpstream)
|
||||
length: Final = int(self.headers.get("content-length") or "0")
|
||||
self.rfile.read(length)
|
||||
if self.path == "/credentials?api_key=query-secret&api-version=1":
|
||||
authorized: Final = self.headers.get("authorization") == "Bearer header-secret"
|
||||
self._send_json(200 if authorized else 401, b"{}")
|
||||
return
|
||||
if self.path == "/upload":
|
||||
self._send_json(200, b'{"file_id":"fixture://document.pdf"}')
|
||||
return
|
||||
|
|
@ -247,17 +255,17 @@ def test_recording_deduplicates_per_target_and_caps_global_concurrency(tmp_path:
|
|||
assert upstream.request_count == 2
|
||||
assert upstream.max_active_requests == 2
|
||||
assert len(recorded_fixtures(tmp_path, _ParityCase)) == 2
|
||||
for path in tmp_path.rglob("*.json"):
|
||||
for path in tmp_path.rglob("*.yaml"):
|
||||
contents = path.read_text(encoding="utf-8")
|
||||
assert f'"schema_version": {FIXTURE_SCHEMA_VERSION}' in contents
|
||||
assert '"recorded_at":' in contents
|
||||
assert f"schema_version: {FIXTURE_SCHEMA_VERSION}" in contents
|
||||
assert "recorded_at:" in contents
|
||||
|
||||
|
||||
def test_pipeline_rejects_stale_fixture_before_provider_call(tmp_path: Path) -> None:
|
||||
case_input: Final = _case("stale")
|
||||
directory: Final = tmp_path / "stale-target"
|
||||
directory.mkdir()
|
||||
path: Final = fixture_path(directory, case_input)
|
||||
path: Final = fixture_path(directory, case_input).with_suffix(".json")
|
||||
path.write_text('{"schema_version": 0}\n', encoding="utf-8")
|
||||
target: Final = RecordingTarget(
|
||||
name="stale-target",
|
||||
|
|
@ -345,6 +353,34 @@ def test_sensitive_response_headers_are_not_recorded() -> None:
|
|||
assert all(header.name.lower() != "set-cookie" for header in responses[0].headers)
|
||||
|
||||
|
||||
def test_recorded_requests_strip_credentials_without_changing_the_live_request() -> None:
|
||||
def sdk_call(api_base: str, case_input: _FixtureInput) -> object:
|
||||
return httpx.post(
|
||||
f"{api_base}/credentials?api_key=query-secret&api-version=1",
|
||||
headers={
|
||||
"Authorization": "Bearer header-secret",
|
||||
"Ocp-Apim-Subscription-Key": "azure-secret",
|
||||
"Cookie": "session=cookie-secret",
|
||||
"X-Test": case_input.identifier,
|
||||
},
|
||||
content=b"\xffdocument",
|
||||
)
|
||||
|
||||
with _controlled_upstream() as upstream:
|
||||
interactions: Final = record_upstream_interactions(
|
||||
UpstreamEndpoint(upstream.url), _case("credentials"), sdk_call
|
||||
)
|
||||
|
||||
interaction: Final = interactions[0]
|
||||
assert interaction.response.status_code == 200
|
||||
assert interaction.request.uri == "http://parity-provider.invalid/credentials?api-version=1"
|
||||
assert interaction.request.body == b"\xffdocument"
|
||||
assert interaction.request.headers["x-test"] == "credentials"
|
||||
assert all(
|
||||
header not in interaction.request.headers for header in ("authorization", "ocp-apim-subscription-key", "cookie")
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("method", ("PUT", "PATCH", "DELETE"))
|
||||
def test_recording_and_replay_support_mutating_http_methods(method: str) -> None:
|
||||
sdk_call: Final = _method_sdk_call(method)
|
||||
|
|
|
|||
|
|
@ -16,6 +16,20 @@ uv run python -m tests.test_litellm.ocr.fixtures.record --examples 4 --concurren
|
|||
`--concurrency` caps provider calls across all targets. Independent jobs finish after a failure, then the command exits
|
||||
nonzero if any job failed
|
||||
|
||||
New recordings are VCR YAML cassettes. The committed corpus contains 31 migrated cassettes: 18 Mistral, 9 Reducto v3,
|
||||
and 4 Reducto legacy. Their original response bytes, statuses, headers, and recording timestamps are preserved
|
||||
|
||||
To migrate an existing JSON fixture directory locally:
|
||||
|
||||
```shell
|
||||
uv run python -m tests.test_litellm.ocr.fixtures.migrate --fixture-dir tests/test_litellm/ocr/fixtures/data
|
||||
```
|
||||
|
||||
The migration replays each old response through the Python SDK to reconstruct missing requests, writes and validates
|
||||
the YAML cassette, then removes its JSON predecessor. It calls only local recording/replay servers and needs no provider
|
||||
credentials. Reconstructed requests are labeled `python_replay`; they are not historical wire captures. Filenames use
|
||||
the current normalized SDK input hash, including the fixture contract
|
||||
|
||||
OCR strategies generate public `litellm.ocr()` and `litellm.aocr()` inputs. Every case contains the normalized model,
|
||||
document, optional provider override, and LiteLLM keyword arguments. The fixture-only `contract` literal selects the
|
||||
input schema and is removed before calling the SDK. Strategies never build provider wire payloads
|
||||
|
|
|
|||
|
|
@ -1,138 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"bbox_annotation_format": {
|
||||
"json_schema": {
|
||||
"description": "Extract the visible document fields",
|
||||
"name": "bounding_boxes",
|
||||
"schema": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"title"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"strict": true
|
||||
},
|
||||
"type": "json_schema"
|
||||
},
|
||||
"document": {
|
||||
"image_url": "https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24",
|
||||
"type": "image_url"
|
||||
},
|
||||
"document_annotation_format": {
|
||||
"json_schema": {
|
||||
"description": "Extract the visible document fields",
|
||||
"name": "document_title",
|
||||
"schema": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"title"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"strict": true
|
||||
},
|
||||
"type": "json_schema"
|
||||
},
|
||||
"extract_header": true,
|
||||
"image_min_size": 300,
|
||||
"include_blocks": true,
|
||||
"include_image_base64": false,
|
||||
"model": "mistral/mistral-ocr-latest",
|
||||
"pages": [
|
||||
0
|
||||
],
|
||||
"table_format": "markdown"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJwYWdlcyI6W3siaW5kZXgiOjAsIm1hcmtkb3duIjoiaW52b2ljZSAxMjMiLCJpbWFnZXMiOltdLCJ0YWJsZXMiOltdLCJoeXBlcmxpbmtzIjpbXSwiaGVhZGVyIjpudWxsLCJmb290ZXIiOm51bGwsImRpbWVuc2lvbnMiOnsiZHBpIjoyMDAsImhlaWdodCI6MzAwLCJ3aWR0aCI6ODAwfSwiY29uZmlkZW5jZV9zY29yZXMiOm51bGwsImJsb2NrcyI6W3sidG9wX2xlZnRfeCI6MzM1LCJ0b3BfbGVmdF95IjoxMzgsImJvdHRvbV9yaWdodF94Ijo0NjQsImJvdHRvbV9yaWdodF95IjoxNjIsImNvbnRlbnQiOiJpbnZvaWNlIDEyMyIsImNvbmZpZGVuY2Vfc2NvcmVzIjpudWxsLCJ0eXBlIjoidGV4dCJ9XX1dLCJtb2RlbCI6Im1pc3RyYWwtb2NyLWxhdGVzdCIsImRvY3VtZW50X2Fubm90YXRpb24iOiJ7XCJ0aXRsZVwiOiBcIkludm9pY2VfMTIzXCJ9IiwidXNhZ2VfaW5mbyI6eyJwYWdlc19wcm9jZXNzZWQiOjEsImRvY19zaXplX2J5dGVzIjo0MTI0fX0=",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:26 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "mistral-correlation-id",
|
||||
"value": "01a05e89-85bd-7075-af53-8e341b35a63e"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-request-id",
|
||||
"value": "01a05e89-85bd-7075-af53-8e341b35a63e"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-limit-ocr-pages-minute",
|
||||
"value": "60"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-remaining-ocr-pages-minute",
|
||||
"value": "43"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-ocr-pages-query-cost",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"name": "x-envoy-upstream-service-time",
|
||||
"value": "432"
|
||||
},
|
||||
{
|
||||
"name": "Server",
|
||||
"value": "cloudflare"
|
||||
},
|
||||
{
|
||||
"name": "access-control-allow-origin",
|
||||
"value": "*"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-upstream-latency",
|
||||
"value": "433"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-proxy-latency",
|
||||
"value": "13"
|
||||
},
|
||||
{
|
||||
"name": "X-Content-Type-Options",
|
||||
"value": "nosniff"
|
||||
},
|
||||
{
|
||||
"name": "cf-cache-status",
|
||||
"value": "DYNAMIC"
|
||||
},
|
||||
{
|
||||
"name": "Strict-Transport-Security",
|
||||
"value": "max-age=15552000; includeSubDomains; preload"
|
||||
},
|
||||
{
|
||||
"name": "CF-RAY",
|
||||
"value": "a346d3a89a85f953-SJC"
|
||||
},
|
||||
{
|
||||
"name": "alt-svc",
|
||||
"value": "h3=\":443\"; ma=86400"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:26.965078Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: '{"model":"mistral-ocr-latest","document":{"type":"image_url","image_url":"https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24"},"image_limit":1}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/v1/ocr
|
||||
response:
|
||||
body:
|
||||
string: '{"pages":[{"index":0,"markdown":"invoice 123","images":[],"tables":[],"hyperlinks":[],"header":null,"footer":null,"dimensions":{"dpi":200,"height":300,"width":800},"confidence_scores":null,"blocks":[{"top_left_x":335,"top_left_y":138,"bottom_right_x":464,"bottom_right_y":162,"content":"invoice
|
||||
123","confidence_scores":null,"type":"text"}]}],"model":"mistral-ocr-latest","document_annotation":null,"usage_info":{"pages_processed":1,"doc_size_bytes":4124}}'
|
||||
headers:
|
||||
CF-RAY:
|
||||
- a346d3637dc2c090-SJC
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:15 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Strict-Transport-Security:
|
||||
- max-age=15552000; includeSubDomains; preload
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-allow-origin:
|
||||
- '*'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
mistral-correlation-id:
|
||||
- 01a05e89-5a87-7148-8ae4-4e14967bebf3
|
||||
x-envoy-upstream-service-time:
|
||||
- '226'
|
||||
x-kong-proxy-latency:
|
||||
- '19'
|
||||
x-kong-request-id:
|
||||
- 01a05e89-5a87-7148-8ae4-4e14967bebf3
|
||||
x-kong-upstream-latency:
|
||||
- '227'
|
||||
x-ratelimit-limit-ocr-pages-minute:
|
||||
- '60'
|
||||
x-ratelimit-ocr-pages-query-cost:
|
||||
- '1'
|
||||
x-ratelimit-remaining-ocr-pages-minute:
|
||||
- '56'
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:15.394028+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: mistral
|
||||
document:
|
||||
image_url: https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24
|
||||
type: image_url
|
||||
image_limit: 1
|
||||
model: mistral/mistral-ocr-latest
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -1,91 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"image_url": "https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24",
|
||||
"type": "image_url"
|
||||
},
|
||||
"extract_footer": true,
|
||||
"model": "mistral/mistral-ocr-latest"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJwYWdlcyI6W3siaW5kZXgiOjAsIm1hcmtkb3duIjoiaW52b2ljZSAxMjMiLCJpbWFnZXMiOltdLCJ0YWJsZXMiOltdLCJoeXBlcmxpbmtzIjpbXSwiaGVhZGVyIjpudWxsLCJmb290ZXIiOm51bGwsImRpbWVuc2lvbnMiOnsiZHBpIjoyMDAsImhlaWdodCI6MzAwLCJ3aWR0aCI6ODAwfSwiY29uZmlkZW5jZV9zY29yZXMiOm51bGwsImJsb2NrcyI6W3sidG9wX2xlZnRfeCI6MzM1LCJ0b3BfbGVmdF95IjoxMzgsImJvdHRvbV9yaWdodF94Ijo0NjQsImJvdHRvbV9yaWdodF95IjoxNjIsImNvbnRlbnQiOiJpbnZvaWNlIDEyMyIsImNvbmZpZGVuY2Vfc2NvcmVzIjpudWxsLCJ0eXBlIjoidGV4dCJ9XX1dLCJtb2RlbCI6Im1pc3RyYWwtb2NyLWxhdGVzdCIsImRvY3VtZW50X2Fubm90YXRpb24iOm51bGwsInVzYWdlX2luZm8iOnsicGFnZXNfcHJvY2Vzc2VkIjoxLCJkb2Nfc2l6ZV9ieXRlcyI6NDEyNH19",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:20 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "mistral-correlation-id",
|
||||
"value": "01a05e89-6c42-7ea1-b08b-07cae50734e0"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-request-id",
|
||||
"value": "01a05e89-6c42-7ea1-b08b-07cae50734e0"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-limit-ocr-pages-minute",
|
||||
"value": "60"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-remaining-ocr-pages-minute",
|
||||
"value": "50"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-ocr-pages-query-cost",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"name": "x-envoy-upstream-service-time",
|
||||
"value": "523"
|
||||
},
|
||||
{
|
||||
"name": "Server",
|
||||
"value": "cloudflare"
|
||||
},
|
||||
{
|
||||
"name": "access-control-allow-origin",
|
||||
"value": "*"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-upstream-latency",
|
||||
"value": "525"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-proxy-latency",
|
||||
"value": "13"
|
||||
},
|
||||
{
|
||||
"name": "cf-cache-status",
|
||||
"value": "DYNAMIC"
|
||||
},
|
||||
{
|
||||
"name": "Strict-Transport-Security",
|
||||
"value": "max-age=15552000; includeSubDomains; preload"
|
||||
},
|
||||
{
|
||||
"name": "X-Content-Type-Options",
|
||||
"value": "nosniff"
|
||||
},
|
||||
{
|
||||
"name": "CF-RAY",
|
||||
"value": "a346d37fde0f1703-SJC"
|
||||
},
|
||||
{
|
||||
"name": "alt-svc",
|
||||
"value": "h3=\":443\"; ma=86400"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:20.425444Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,69 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: '{"model":"mistral-ocr-latest","document":{"type":"image_url","image_url":"https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24"},"pages":[0]}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/v1/ocr
|
||||
response:
|
||||
body:
|
||||
string: '{"pages":[{"index":0,"markdown":"invoice 123","images":[],"tables":[],"hyperlinks":[],"header":null,"footer":null,"dimensions":{"dpi":200,"height":300,"width":800},"confidence_scores":null,"blocks":[{"top_left_x":335,"top_left_y":138,"bottom_right_x":464,"bottom_right_y":162,"content":"invoice
|
||||
123","confidence_scores":null,"type":"text"}]}],"model":"mistral-ocr-latest","document_annotation":null,"usage_info":{"pages_processed":1,"doc_size_bytes":4124}}'
|
||||
headers:
|
||||
CF-RAY:
|
||||
- a346d35d1fbbebe5-SJC
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:14 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Strict-Transport-Security:
|
||||
- max-age=15552000; includeSubDomains; preload
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-allow-origin:
|
||||
- '*'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
mistral-correlation-id:
|
||||
- 01a05e89-5685-747f-b76d-dab242ea7512
|
||||
x-envoy-upstream-service-time:
|
||||
- '179'
|
||||
x-kong-proxy-latency:
|
||||
- '12'
|
||||
x-kong-request-id:
|
||||
- 01a05e89-5685-747f-b76d-dab242ea7512
|
||||
x-kong-upstream-latency:
|
||||
- '180'
|
||||
x-ratelimit-limit-ocr-pages-minute:
|
||||
- '60'
|
||||
x-ratelimit-ocr-pages-query-cost:
|
||||
- '1'
|
||||
x-ratelimit-remaining-ocr-pages-minute:
|
||||
- '58'
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:14.385374+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: mistral
|
||||
document:
|
||||
image_url: https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24
|
||||
type: image_url
|
||||
model: mistral/mistral-ocr-latest
|
||||
pages:
|
||||
- 0
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -1,91 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"image_url": "https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24",
|
||||
"type": "image_url"
|
||||
},
|
||||
"model": "mistral/mistral-ocr-latest",
|
||||
"table_format": "markdown"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJwYWdlcyI6W3siaW5kZXgiOjAsIm1hcmtkb3duIjoiaW52b2ljZSAxMjMiLCJpbWFnZXMiOltdLCJ0YWJsZXMiOltdLCJoeXBlcmxpbmtzIjpbXSwiaGVhZGVyIjpudWxsLCJmb290ZXIiOm51bGwsImRpbWVuc2lvbnMiOnsiZHBpIjoyMDAsImhlaWdodCI6MzAwLCJ3aWR0aCI6ODAwfSwiY29uZmlkZW5jZV9zY29yZXMiOm51bGwsImJsb2NrcyI6W3sidG9wX2xlZnRfeCI6MzM1LCJ0b3BfbGVmdF95IjoxMzgsImJvdHRvbV9yaWdodF94Ijo0NjQsImJvdHRvbV9yaWdodF95IjoxNjIsImNvbnRlbnQiOiJpbnZvaWNlIDEyMyIsImNvbmZpZGVuY2Vfc2NvcmVzIjpudWxsLCJ0eXBlIjoidGV4dCJ9XX1dLCJtb2RlbCI6Im1pc3RyYWwtb2NyLWxhdGVzdCIsImRvY3VtZW50X2Fubm90YXRpb24iOm51bGwsInVzYWdlX2luZm8iOnsicGFnZXNfcHJvY2Vzc2VkIjoxLCJkb2Nfc2l6ZV9ieXRlcyI6NDEyNH19",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:21 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "mistral-correlation-id",
|
||||
"value": "01a05e89-7015-7a8d-a18c-37b9ceacbe77"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-request-id",
|
||||
"value": "01a05e89-7015-7a8d-a18c-37b9ceacbe77"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-limit-ocr-pages-minute",
|
||||
"value": "60"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-remaining-ocr-pages-minute",
|
||||
"value": "49"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-ocr-pages-query-cost",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"name": "x-envoy-upstream-service-time",
|
||||
"value": "337"
|
||||
},
|
||||
{
|
||||
"name": "Server",
|
||||
"value": "cloudflare"
|
||||
},
|
||||
{
|
||||
"name": "access-control-allow-origin",
|
||||
"value": "*"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-upstream-latency",
|
||||
"value": "338"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-proxy-latency",
|
||||
"value": "21"
|
||||
},
|
||||
{
|
||||
"name": "X-Content-Type-Options",
|
||||
"value": "nosniff"
|
||||
},
|
||||
{
|
||||
"name": "cf-cache-status",
|
||||
"value": "DYNAMIC"
|
||||
},
|
||||
{
|
||||
"name": "Strict-Transport-Security",
|
||||
"value": "max-age=15552000; includeSubDomains; preload"
|
||||
},
|
||||
{
|
||||
"name": "CF-RAY",
|
||||
"value": "a346d385ffbda0f2-SJC"
|
||||
},
|
||||
{
|
||||
"name": "alt-svc",
|
||||
"value": "h3=\":443\"; ma=86400"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:21.430472Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -1,91 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"image_url": "https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24",
|
||||
"type": "image_url"
|
||||
},
|
||||
"image_limit": 1,
|
||||
"model": "mistral/mistral-ocr-latest"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJwYWdlcyI6W3siaW5kZXgiOjAsIm1hcmtkb3duIjoiaW52b2ljZSAxMjMiLCJpbWFnZXMiOltdLCJ0YWJsZXMiOltdLCJoeXBlcmxpbmtzIjpbXSwiaGVhZGVyIjpudWxsLCJmb290ZXIiOm51bGwsImRpbWVuc2lvbnMiOnsiZHBpIjoyMDAsImhlaWdodCI6MzAwLCJ3aWR0aCI6ODAwfSwiY29uZmlkZW5jZV9zY29yZXMiOm51bGwsImJsb2NrcyI6W3sidG9wX2xlZnRfeCI6MzM1LCJ0b3BfbGVmdF95IjoxMzgsImJvdHRvbV9yaWdodF94Ijo0NjQsImJvdHRvbV9yaWdodF95IjoxNjIsImNvbnRlbnQiOiJpbnZvaWNlIDEyMyIsImNvbmZpZGVuY2Vfc2NvcmVzIjpudWxsLCJ0eXBlIjoidGV4dCJ9XX1dLCJtb2RlbCI6Im1pc3RyYWwtb2NyLWxhdGVzdCIsImRvY3VtZW50X2Fubm90YXRpb24iOm51bGwsInVzYWdlX2luZm8iOnsicGFnZXNfcHJvY2Vzc2VkIjoxLCJkb2Nfc2l6ZV9ieXRlcyI6NDEyNH19",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:15 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "mistral-correlation-id",
|
||||
"value": "01a05e89-5a87-7148-8ae4-4e14967bebf3"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-request-id",
|
||||
"value": "01a05e89-5a87-7148-8ae4-4e14967bebf3"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-limit-ocr-pages-minute",
|
||||
"value": "60"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-remaining-ocr-pages-minute",
|
||||
"value": "56"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-ocr-pages-query-cost",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"name": "x-envoy-upstream-service-time",
|
||||
"value": "226"
|
||||
},
|
||||
{
|
||||
"name": "Server",
|
||||
"value": "cloudflare"
|
||||
},
|
||||
{
|
||||
"name": "access-control-allow-origin",
|
||||
"value": "*"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-upstream-latency",
|
||||
"value": "227"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-proxy-latency",
|
||||
"value": "19"
|
||||
},
|
||||
{
|
||||
"name": "X-Content-Type-Options",
|
||||
"value": "nosniff"
|
||||
},
|
||||
{
|
||||
"name": "cf-cache-status",
|
||||
"value": "DYNAMIC"
|
||||
},
|
||||
{
|
||||
"name": "Strict-Transport-Security",
|
||||
"value": "max-age=15552000; includeSubDomains; preload"
|
||||
},
|
||||
{
|
||||
"name": "CF-RAY",
|
||||
"value": "a346d3637dc2c090-SJC"
|
||||
},
|
||||
{
|
||||
"name": "alt-svc",
|
||||
"value": "h3=\":443\"; ma=86400"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:15.394028Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,85 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: '{"model":"mistral-ocr-latest","document":{"type":"image_url","image_url":"https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24"},"document_annotation_format":{"type":"json_schema","json_schema":{"name":"document_title","description":"Extract
|
||||
the visible document fields","schema":{"additionalProperties":false,"properties":{"title":{"type":"string"}},"required":["title"],"type":"object"},"strict":true}},"document_annotation_prompt":"Extract
|
||||
the visible title"}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/v1/ocr
|
||||
response:
|
||||
body:
|
||||
string: '{"pages":[{"index":0,"markdown":"invoice 123","images":[],"tables":[],"hyperlinks":[],"header":null,"footer":null,"dimensions":{"dpi":200,"height":300,"width":800},"confidence_scores":null,"blocks":[{"top_left_x":335,"top_left_y":138,"bottom_right_x":464,"bottom_right_y":162,"content":"invoice
|
||||
123","confidence_scores":null,"type":"text"}]}],"model":"mistral-ocr-latest","document_annotation":"{\"title\":
|
||||
\"invoice 123\"}","usage_info":{"pages_processed":1,"doc_size_bytes":4124}}'
|
||||
headers:
|
||||
CF-RAY:
|
||||
- a346d376581f74f9-SJC
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:18 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Strict-Transport-Security:
|
||||
- max-age=15552000; includeSubDomains; preload
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-allow-origin:
|
||||
- '*'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
mistral-correlation-id:
|
||||
- 01a05e89-664a-740d-a112-0a1183c302b3
|
||||
x-envoy-upstream-service-time:
|
||||
- '402'
|
||||
x-kong-proxy-latency:
|
||||
- '20'
|
||||
x-kong-request-id:
|
||||
- 01a05e89-664a-740d-a112-0a1183c302b3
|
||||
x-kong-upstream-latency:
|
||||
- '403'
|
||||
x-ratelimit-limit-ocr-pages-minute:
|
||||
- '60'
|
||||
x-ratelimit-ocr-pages-query-cost:
|
||||
- '1'
|
||||
x-ratelimit-remaining-ocr-pages-minute:
|
||||
- '52'
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:18.915814+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: mistral
|
||||
document:
|
||||
image_url: https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24
|
||||
type: image_url
|
||||
document_annotation_format:
|
||||
json_schema:
|
||||
description: Extract the visible document fields
|
||||
name: document_title
|
||||
schema:
|
||||
additionalProperties: false
|
||||
properties:
|
||||
title:
|
||||
type: string
|
||||
required:
|
||||
- title
|
||||
type: object
|
||||
strict: true
|
||||
type: json_schema
|
||||
document_annotation_prompt: Extract the visible title
|
||||
model: mistral/mistral-ocr-latest
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: '{"model":"mistral-ocr-latest","document":{"type":"image_url","image_url":"https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24"},"extract_header":true}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/v1/ocr
|
||||
response:
|
||||
body:
|
||||
string: '{"pages":[{"index":0,"markdown":"invoice 123","images":[],"tables":[],"hyperlinks":[],"header":null,"footer":null,"dimensions":{"dpi":200,"height":300,"width":800},"confidence_scores":null,"blocks":[{"top_left_x":335,"top_left_y":138,"bottom_right_x":464,"bottom_right_y":162,"content":"invoice
|
||||
123","confidence_scores":null,"type":"text"}]}],"model":"mistral-ocr-latest","document_annotation":null,"usage_info":{"pages_processed":1,"doc_size_bytes":4124}}'
|
||||
headers:
|
||||
CF-RAY:
|
||||
- a346d37c9944d8a7-SJC
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:19 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Strict-Transport-Security:
|
||||
- max-age=15552000; includeSubDomains; preload
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-allow-origin:
|
||||
- '*'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
mistral-correlation-id:
|
||||
- 01a05e89-6a3a-76c7-85b8-d40a7156155e
|
||||
x-envoy-upstream-service-time:
|
||||
- '230'
|
||||
x-kong-proxy-latency:
|
||||
- '16'
|
||||
x-kong-request-id:
|
||||
- 01a05e89-6a3a-76c7-85b8-d40a7156155e
|
||||
x-kong-upstream-latency:
|
||||
- '230'
|
||||
x-ratelimit-limit-ocr-pages-minute:
|
||||
- '60'
|
||||
x-ratelimit-ocr-pages-query-cost:
|
||||
- '1'
|
||||
x-ratelimit-remaining-ocr-pages-minute:
|
||||
- '51'
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:19.420285+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: mistral
|
||||
document:
|
||||
image_url: https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24
|
||||
type: image_url
|
||||
extract_header: true
|
||||
model: mistral/mistral-ocr-latest
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -1,110 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"bbox_annotation_format": {
|
||||
"json_schema": {
|
||||
"description": "Extract the visible document fields",
|
||||
"name": "bounding_boxes",
|
||||
"schema": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"title"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"strict": true
|
||||
},
|
||||
"type": "json_schema"
|
||||
},
|
||||
"document": {
|
||||
"image_url": "https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24",
|
||||
"type": "image_url"
|
||||
},
|
||||
"model": "mistral/mistral-ocr-latest"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJwYWdlcyI6W3siaW5kZXgiOjAsIm1hcmtkb3duIjoiaW52b2ljZSAxMjMiLCJpbWFnZXMiOltdLCJ0YWJsZXMiOltdLCJoeXBlcmxpbmtzIjpbXSwiaGVhZGVyIjpudWxsLCJmb290ZXIiOm51bGwsImRpbWVuc2lvbnMiOnsiZHBpIjoyMDAsImhlaWdodCI6MzAwLCJ3aWR0aCI6ODAwfSwiY29uZmlkZW5jZV9zY29yZXMiOm51bGwsImJsb2NrcyI6W3sidG9wX2xlZnRfeCI6MzM1LCJ0b3BfbGVmdF95IjoxMzgsImJvdHRvbV9yaWdodF94Ijo0NjQsImJvdHRvbV9yaWdodF95IjoxNjIsImNvbnRlbnQiOiJpbnZvaWNlIDEyMyIsImNvbmZpZGVuY2Vfc2NvcmVzIjpudWxsLCJ0eXBlIjoidGV4dCJ9XX1dLCJtb2RlbCI6Im1pc3RyYWwtb2NyLWxhdGVzdCIsImRvY3VtZW50X2Fubm90YXRpb24iOm51bGwsInVzYWdlX2luZm8iOnsicGFnZXNfcHJvY2Vzc2VkIjoxLCJkb2Nfc2l6ZV9ieXRlcyI6NDEyNH19",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:16 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "mistral-correlation-id",
|
||||
"value": "01a05e89-5e6e-70ac-890d-c0110a5e81af"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-request-id",
|
||||
"value": "01a05e89-5e6e-70ac-890d-c0110a5e81af"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-limit-ocr-pages-minute",
|
||||
"value": "60"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-remaining-ocr-pages-minute",
|
||||
"value": "54"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-ocr-pages-query-cost",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"name": "x-envoy-upstream-service-time",
|
||||
"value": "210"
|
||||
},
|
||||
{
|
||||
"name": "Server",
|
||||
"value": "cloudflare"
|
||||
},
|
||||
{
|
||||
"name": "access-control-allow-origin",
|
||||
"value": "*"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-upstream-latency",
|
||||
"value": "212"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-proxy-latency",
|
||||
"value": "17"
|
||||
},
|
||||
{
|
||||
"name": "X-Content-Type-Options",
|
||||
"value": "nosniff"
|
||||
},
|
||||
{
|
||||
"name": "cf-cache-status",
|
||||
"value": "DYNAMIC"
|
||||
},
|
||||
{
|
||||
"name": "Strict-Transport-Security",
|
||||
"value": "max-age=15552000; includeSubDomains; preload"
|
||||
},
|
||||
{
|
||||
"name": "CF-RAY",
|
||||
"value": "a346d369be838fc5-SJC"
|
||||
},
|
||||
{
|
||||
"name": "alt-svc",
|
||||
"value": "h3=\":443\"; ma=86400"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:16.402593Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -1,90 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"image_url": "https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24",
|
||||
"type": "image_url"
|
||||
},
|
||||
"model": "mistral/mistral-ocr-latest"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJwYWdlcyI6W3siaW5kZXgiOjAsIm1hcmtkb3duIjoiaW52b2ljZSAxMjMiLCJpbWFnZXMiOltdLCJ0YWJsZXMiOltdLCJoeXBlcmxpbmtzIjpbXSwiaGVhZGVyIjpudWxsLCJmb290ZXIiOm51bGwsImRpbWVuc2lvbnMiOnsiZHBpIjoyMDAsImhlaWdodCI6MzAwLCJ3aWR0aCI6ODAwfSwiY29uZmlkZW5jZV9zY29yZXMiOm51bGwsImJsb2NrcyI6W3sidG9wX2xlZnRfeCI6MzM1LCJ0b3BfbGVmdF95IjoxMzgsImJvdHRvbV9yaWdodF94Ijo0NjQsImJvdHRvbV9yaWdodF95IjoxNjIsImNvbnRlbnQiOiJpbnZvaWNlIDEyMyIsImNvbmZpZGVuY2Vfc2NvcmVzIjpudWxsLCJ0eXBlIjoidGV4dCJ9XX1dLCJtb2RlbCI6Im1pc3RyYWwtb2NyLWxhdGVzdCIsImRvY3VtZW50X2Fubm90YXRpb24iOm51bGwsInVzYWdlX2luZm8iOnsicGFnZXNfcHJvY2Vzc2VkIjoxLCJkb2Nfc2l6ZV9ieXRlcyI6NDEyNH19",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:13 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "mistral-correlation-id",
|
||||
"value": "01a05e89-52b4-7e7b-983e-5bc4e5469b39"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-request-id",
|
||||
"value": "01a05e89-52b4-7e7b-983e-5bc4e5469b39"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-limit-ocr-pages-minute",
|
||||
"value": "60"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-remaining-ocr-pages-minute",
|
||||
"value": "59"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-ocr-pages-query-cost",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"name": "x-envoy-upstream-service-time",
|
||||
"value": "554"
|
||||
},
|
||||
{
|
||||
"name": "Server",
|
||||
"value": "cloudflare"
|
||||
},
|
||||
{
|
||||
"name": "access-control-allow-origin",
|
||||
"value": "*"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-upstream-latency",
|
||||
"value": "557"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-proxy-latency",
|
||||
"value": "13"
|
||||
},
|
||||
{
|
||||
"name": "X-Content-Type-Options",
|
||||
"value": "nosniff"
|
||||
},
|
||||
{
|
||||
"name": "cf-cache-status",
|
||||
"value": "DYNAMIC"
|
||||
},
|
||||
{
|
||||
"name": "Strict-Transport-Security",
|
||||
"value": "max-age=15552000; includeSubDomains; preload"
|
||||
},
|
||||
{
|
||||
"name": "CF-RAY",
|
||||
"value": "a346d356fb3698ce-SJC"
|
||||
},
|
||||
{
|
||||
"name": "alt-svc",
|
||||
"value": "h3=\":443\"; ma=86400"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:13.880852Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: '{"model":"mistral-ocr-latest","document":{"type":"image_url","image_url":"https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24"}}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/v1/ocr
|
||||
response:
|
||||
body:
|
||||
string: '{"pages":[{"index":0,"markdown":"invoice 123","images":[],"tables":[],"hyperlinks":[],"header":null,"footer":null,"dimensions":{"dpi":200,"height":300,"width":800},"confidence_scores":null,"blocks":[{"top_left_x":335,"top_left_y":138,"bottom_right_x":464,"bottom_right_y":162,"content":"invoice
|
||||
123","confidence_scores":null,"type":"text"}]}],"model":"mistral-ocr-latest","document_annotation":null,"usage_info":{"pages_processed":1,"doc_size_bytes":4124}}'
|
||||
headers:
|
||||
CF-RAY:
|
||||
- a346d356fb3698ce-SJC
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:13 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Strict-Transport-Security:
|
||||
- max-age=15552000; includeSubDomains; preload
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-allow-origin:
|
||||
- '*'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
mistral-correlation-id:
|
||||
- 01a05e89-52b4-7e7b-983e-5bc4e5469b39
|
||||
x-envoy-upstream-service-time:
|
||||
- '554'
|
||||
x-kong-proxy-latency:
|
||||
- '13'
|
||||
x-kong-request-id:
|
||||
- 01a05e89-52b4-7e7b-983e-5bc4e5469b39
|
||||
x-kong-upstream-latency:
|
||||
- '557'
|
||||
x-ratelimit-limit-ocr-pages-minute:
|
||||
- '60'
|
||||
x-ratelimit-ocr-pages-query-cost:
|
||||
- '1'
|
||||
x-ratelimit-remaining-ocr-pages-minute:
|
||||
- '59'
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:13.880852+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: mistral
|
||||
document:
|
||||
image_url: https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24
|
||||
type: image_url
|
||||
model: mistral/mistral-ocr-latest
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -1,122 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"bbox_annotation_format": {
|
||||
"json_schema": {
|
||||
"description": "Extract the visible document fields",
|
||||
"name": "bounding_boxes",
|
||||
"schema": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"title"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"strict": true
|
||||
},
|
||||
"type": "json_schema"
|
||||
},
|
||||
"confidence_scores_granularity": "page",
|
||||
"document": {
|
||||
"document_url": "data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==",
|
||||
"type": "document_url"
|
||||
},
|
||||
"extract_footer": false,
|
||||
"extract_header": true,
|
||||
"id": "case-1",
|
||||
"image_limit": 1,
|
||||
"image_min_size": 300,
|
||||
"include_blocks": false,
|
||||
"include_image_base64": true,
|
||||
"model": "mistral/mistral-ocr-latest",
|
||||
"pages": [
|
||||
0
|
||||
],
|
||||
"table_format": "markdown"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJwYWdlcyI6W3siaW5kZXgiOjAsIm1hcmtkb3duIjoiVGVzdCBQREYgRmlsZSIsImltYWdlcyI6W10sInRhYmxlcyI6W10sImh5cGVybGlua3MiOltdLCJoZWFkZXIiOm51bGwsImZvb3RlciI6bnVsbCwiZGltZW5zaW9ucyI6eyJkcGkiOjkzLCJoZWlnaHQiOjEwMjMsIndpZHRoIjo3OTF9LCJjb25maWRlbmNlX3Njb3JlcyI6eyJ3b3JkX2NvbmZpZGVuY2Vfc2NvcmVzIjpbXSwiYXZlcmFnZV9wYWdlX2NvbmZpZGVuY2Vfc2NvcmUiOjAuOTM3NjIyOTc0NDMyMjkzNiwibWluaW11bV9wYWdlX2NvbmZpZGVuY2Vfc2NvcmUiOjAuMjI1OTA1NTA3OTYwMzY4MzV9LCJibG9ja3MiOm51bGx9XSwibW9kZWwiOiJtaXN0cmFsLW9jci1sYXRlc3QiLCJkb2N1bWVudF9hbm5vdGF0aW9uIjpudWxsLCJ1c2FnZV9pbmZvIjp7InBhZ2VzX3Byb2Nlc3NlZCI6MSwiZG9jX3NpemVfYnl0ZXMiOjU4OX19",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:24 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "mistral-correlation-id",
|
||||
"value": "01a05e89-7deb-72b4-976d-4c244b056782"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-request-id",
|
||||
"value": "01a05e89-7deb-72b4-976d-4c244b056782"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-limit-ocr-pages-minute",
|
||||
"value": "60"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-remaining-ocr-pages-minute",
|
||||
"value": "45"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-ocr-pages-query-cost",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"name": "x-envoy-upstream-service-time",
|
||||
"value": "373"
|
||||
},
|
||||
{
|
||||
"name": "Server",
|
||||
"value": "cloudflare"
|
||||
},
|
||||
{
|
||||
"name": "access-control-allow-origin",
|
||||
"value": "*"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-upstream-latency",
|
||||
"value": "373"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-proxy-latency",
|
||||
"value": "17"
|
||||
},
|
||||
{
|
||||
"name": "X-Content-Type-Options",
|
||||
"value": "nosniff"
|
||||
},
|
||||
{
|
||||
"name": "cf-cache-status",
|
||||
"value": "DYNAMIC"
|
||||
},
|
||||
{
|
||||
"name": "Strict-Transport-Security",
|
||||
"value": "max-age=15552000; includeSubDomains; preload"
|
||||
},
|
||||
{
|
||||
"name": "CF-RAY",
|
||||
"value": "a346d39c1fe5cf12-SJC"
|
||||
},
|
||||
{
|
||||
"name": "alt-svc",
|
||||
"value": "h3=\":443\"; ma=86400"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:24.951956Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: '{"model":"mistral-ocr-latest","document":{"type":"image_url","image_url":"https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24"},"bbox_annotation_format":{"type":"json_schema","json_schema":{"name":"bounding_boxes","description":"Extract
|
||||
the visible document fields","schema":{"additionalProperties":false,"properties":{"title":{"type":"string"}},"required":["title"],"type":"object"},"strict":true}}}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/v1/ocr
|
||||
response:
|
||||
body:
|
||||
string: '{"pages":[{"index":0,"markdown":"invoice 123","images":[],"tables":[],"hyperlinks":[],"header":null,"footer":null,"dimensions":{"dpi":200,"height":300,"width":800},"confidence_scores":null,"blocks":[{"top_left_x":335,"top_left_y":138,"bottom_right_x":464,"bottom_right_y":162,"content":"invoice
|
||||
123","confidence_scores":null,"type":"text"}]}],"model":"mistral-ocr-latest","document_annotation":null,"usage_info":{"pages_processed":1,"doc_size_bytes":4124}}'
|
||||
headers:
|
||||
CF-RAY:
|
||||
- a346d369be838fc5-SJC
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:16 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Strict-Transport-Security:
|
||||
- max-age=15552000; includeSubDomains; preload
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-allow-origin:
|
||||
- '*'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
mistral-correlation-id:
|
||||
- 01a05e89-5e6e-70ac-890d-c0110a5e81af
|
||||
x-envoy-upstream-service-time:
|
||||
- '210'
|
||||
x-kong-proxy-latency:
|
||||
- '17'
|
||||
x-kong-request-id:
|
||||
- 01a05e89-5e6e-70ac-890d-c0110a5e81af
|
||||
x-kong-upstream-latency:
|
||||
- '212'
|
||||
x-ratelimit-limit-ocr-pages-minute:
|
||||
- '60'
|
||||
x-ratelimit-ocr-pages-query-cost:
|
||||
- '1'
|
||||
x-ratelimit-remaining-ocr-pages-minute:
|
||||
- '54'
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:16.402593+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
bbox_annotation_format:
|
||||
json_schema:
|
||||
description: Extract the visible document fields
|
||||
name: bounding_boxes
|
||||
schema:
|
||||
additionalProperties: false
|
||||
properties:
|
||||
title:
|
||||
type: string
|
||||
required:
|
||||
- title
|
||||
type: object
|
||||
strict: true
|
||||
type: json_schema
|
||||
contract: mistral
|
||||
document:
|
||||
image_url: https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24
|
||||
type: image_url
|
||||
model: mistral/mistral-ocr-latest
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -0,0 +1,92 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: '{"model":"mistral-ocr-latest","document":{"type":"document_url","document_url":"data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg=="},"pages":[0],"include_image_base64":true,"image_limit":1,"image_min_size":300,"bbox_annotation_format":{"type":"json_schema","json_schema":{"name":"bounding_boxes","description":"Extract
|
||||
the visible document fields","schema":{"additionalProperties":false,"properties":{"title":{"type":"string"}},"required":["title"],"type":"object"},"strict":true}},"extract_header":true,"extract_footer":false,"table_format":"markdown","confidence_scores_granularity":"page","include_blocks":false,"id":"case-1"}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/v1/ocr
|
||||
response:
|
||||
body:
|
||||
string: '{"pages":[{"index":0,"markdown":"Test PDF File","images":[],"tables":[],"hyperlinks":[],"header":null,"footer":null,"dimensions":{"dpi":93,"height":1023,"width":791},"confidence_scores":{"word_confidence_scores":[],"average_page_confidence_score":0.9376229744322936,"minimum_page_confidence_score":0.22590550796036835},"blocks":null}],"model":"mistral-ocr-latest","document_annotation":null,"usage_info":{"pages_processed":1,"doc_size_bytes":589}}'
|
||||
headers:
|
||||
CF-RAY:
|
||||
- a346d39c1fe5cf12-SJC
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:24 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Strict-Transport-Security:
|
||||
- max-age=15552000; includeSubDomains; preload
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-allow-origin:
|
||||
- '*'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
mistral-correlation-id:
|
||||
- 01a05e89-7deb-72b4-976d-4c244b056782
|
||||
x-envoy-upstream-service-time:
|
||||
- '373'
|
||||
x-kong-proxy-latency:
|
||||
- '17'
|
||||
x-kong-request-id:
|
||||
- 01a05e89-7deb-72b4-976d-4c244b056782
|
||||
x-kong-upstream-latency:
|
||||
- '373'
|
||||
x-ratelimit-limit-ocr-pages-minute:
|
||||
- '60'
|
||||
x-ratelimit-ocr-pages-query-cost:
|
||||
- '1'
|
||||
x-ratelimit-remaining-ocr-pages-minute:
|
||||
- '45'
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:24.951956+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
bbox_annotation_format:
|
||||
json_schema:
|
||||
description: Extract the visible document fields
|
||||
name: bounding_boxes
|
||||
schema:
|
||||
additionalProperties: false
|
||||
properties:
|
||||
title:
|
||||
type: string
|
||||
required:
|
||||
- title
|
||||
type: object
|
||||
strict: true
|
||||
type: json_schema
|
||||
confidence_scores_granularity: page
|
||||
contract: mistral
|
||||
document:
|
||||
document_url: data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==
|
||||
type: document_url
|
||||
extract_footer: false
|
||||
extract_header: true
|
||||
id: case-1
|
||||
image_limit: 1
|
||||
image_min_size: 300
|
||||
include_blocks: false
|
||||
include_image_base64: true
|
||||
model: mistral/mistral-ocr-latest
|
||||
pages:
|
||||
- 0
|
||||
table_format: markdown
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: '{"model":"mistral-ocr-latest","document":{"type":"image_url","image_url":"https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24"},"document_annotation_format":{"type":"json_schema","json_schema":{"name":"document_title","description":"Extract
|
||||
the visible document fields","schema":{"additionalProperties":false,"properties":{"title":{"type":"string"}},"required":["title"],"type":"object"},"strict":true}}}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/v1/ocr
|
||||
response:
|
||||
body:
|
||||
string: '{"pages":[{"index":0,"markdown":"invoice 123","images":[],"tables":[],"hyperlinks":[],"header":null,"footer":null,"dimensions":{"dpi":200,"height":300,"width":800},"confidence_scores":null,"blocks":[{"top_left_x":335,"top_left_y":138,"bottom_right_x":464,"bottom_right_y":162,"content":"invoice
|
||||
123","confidence_scores":null,"type":"text"}]}],"model":"mistral-ocr-latest","document_annotation":"{\"title\":
|
||||
\"Invoice_123\"}","usage_info":{"pages_processed":1,"doc_size_bytes":4124}}'
|
||||
headers:
|
||||
CF-RAY:
|
||||
- a346d36cd82f15ba-SJC
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:17 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Strict-Transport-Security:
|
||||
- max-age=15552000; includeSubDomains; preload
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-allow-origin:
|
||||
- '*'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
mistral-correlation-id:
|
||||
- 01a05e89-6060-71cb-9e35-66ab873b99f3
|
||||
x-envoy-upstream-service-time:
|
||||
- '888'
|
||||
x-kong-proxy-latency:
|
||||
- '12'
|
||||
x-kong-request-id:
|
||||
- 01a05e89-6060-71cb-9e35-66ab873b99f3
|
||||
x-kong-upstream-latency:
|
||||
- '889'
|
||||
x-ratelimit-limit-ocr-pages-minute:
|
||||
- '60'
|
||||
x-ratelimit-ocr-pages-query-cost:
|
||||
- '1'
|
||||
x-ratelimit-remaining-ocr-pages-minute:
|
||||
- '53'
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:17.908846+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: mistral
|
||||
document:
|
||||
image_url: https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24
|
||||
type: image_url
|
||||
document_annotation_format:
|
||||
json_schema:
|
||||
description: Extract the visible document fields
|
||||
name: document_title
|
||||
schema:
|
||||
additionalProperties: false
|
||||
properties:
|
||||
title:
|
||||
type: string
|
||||
required:
|
||||
- title
|
||||
type: object
|
||||
strict: true
|
||||
type: json_schema
|
||||
model: mistral/mistral-ocr-latest
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -1,91 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"image_url": "https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24",
|
||||
"type": "image_url"
|
||||
},
|
||||
"image_min_size": 300,
|
||||
"model": "mistral/mistral-ocr-latest"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJwYWdlcyI6W3siaW5kZXgiOjAsIm1hcmtkb3duIjoiaW52b2ljZSAxMjMiLCJpbWFnZXMiOltdLCJ0YWJsZXMiOltdLCJoeXBlcmxpbmtzIjpbXSwiaGVhZGVyIjpudWxsLCJmb290ZXIiOm51bGwsImRpbWVuc2lvbnMiOnsiZHBpIjoyMDAsImhlaWdodCI6MzAwLCJ3aWR0aCI6ODAwfSwiY29uZmlkZW5jZV9zY29yZXMiOm51bGwsImJsb2NrcyI6W3sidG9wX2xlZnRfeCI6MzM1LCJ0b3BfbGVmdF95IjoxMzgsImJvdHRvbV9yaWdodF94Ijo0NjQsImJvdHRvbV9yaWdodF95IjoxNjIsImNvbnRlbnQiOiJpbnZvaWNlIDEyMyIsImNvbmZpZGVuY2Vfc2NvcmVzIjpudWxsLCJ0eXBlIjoidGV4dCJ9XX1dLCJtb2RlbCI6Im1pc3RyYWwtb2NyLWxhdGVzdCIsImRvY3VtZW50X2Fubm90YXRpb24iOm51bGwsInVzYWdlX2luZm8iOnsicGFnZXNfcHJvY2Vzc2VkIjoxLCJkb2Nfc2l6ZV9ieXRlcyI6NDEyNH19",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:15 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "mistral-correlation-id",
|
||||
"value": "01a05e89-5c60-769b-abf3-44dcefdf5282"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-request-id",
|
||||
"value": "01a05e89-5c60-769b-abf3-44dcefdf5282"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-limit-ocr-pages-minute",
|
||||
"value": "60"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-remaining-ocr-pages-minute",
|
||||
"value": "55"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-ocr-pages-query-cost",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"name": "x-envoy-upstream-service-time",
|
||||
"value": "272"
|
||||
},
|
||||
{
|
||||
"name": "Server",
|
||||
"value": "cloudflare"
|
||||
},
|
||||
{
|
||||
"name": "access-control-allow-origin",
|
||||
"value": "*"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-upstream-latency",
|
||||
"value": "273"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-proxy-latency",
|
||||
"value": "17"
|
||||
},
|
||||
{
|
||||
"name": "cf-cache-status",
|
||||
"value": "DYNAMIC"
|
||||
},
|
||||
{
|
||||
"name": "Strict-Transport-Security",
|
||||
"value": "max-age=15552000; includeSubDomains; preload"
|
||||
},
|
||||
{
|
||||
"name": "X-Content-Type-Options",
|
||||
"value": "nosniff"
|
||||
},
|
||||
{
|
||||
"name": "CF-RAY",
|
||||
"value": "a346d36688d203c2-SJC"
|
||||
},
|
||||
{
|
||||
"name": "alt-svc",
|
||||
"value": "h3=\":443\"; ma=86400"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:15.898087Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: '{"model":"mistral-ocr-latest","document":{"type":"image_url","image_url":"https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24"},"include_image_base64":true}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/v1/ocr
|
||||
response:
|
||||
body:
|
||||
string: '{"pages":[{"index":0,"markdown":"invoice 123","images":[],"tables":[],"hyperlinks":[],"header":null,"footer":null,"dimensions":{"dpi":200,"height":300,"width":800},"confidence_scores":null,"blocks":[{"top_left_x":335,"top_left_y":138,"bottom_right_x":464,"bottom_right_y":162,"content":"invoice
|
||||
123","confidence_scores":null,"type":"text"}]}],"model":"mistral-ocr-latest","document_annotation":null,"usage_info":{"pages_processed":1,"doc_size_bytes":4124}}'
|
||||
headers:
|
||||
CF-RAY:
|
||||
- a346d360593c138a-SJC
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:14 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Strict-Transport-Security:
|
||||
- max-age=15552000; includeSubDomains; preload
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-allow-origin:
|
||||
- '*'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
mistral-correlation-id:
|
||||
- 01a05e89-588e-7e32-a54b-f816bc6c1dc4
|
||||
x-envoy-upstream-service-time:
|
||||
- '242'
|
||||
x-kong-proxy-latency:
|
||||
- '16'
|
||||
x-kong-request-id:
|
||||
- 01a05e89-588e-7e32-a54b-f816bc6c1dc4
|
||||
x-kong-upstream-latency:
|
||||
- '242'
|
||||
x-ratelimit-limit-ocr-pages-minute:
|
||||
- '60'
|
||||
x-ratelimit-ocr-pages-query-cost:
|
||||
- '1'
|
||||
x-ratelimit-remaining-ocr-pages-minute:
|
||||
- '57'
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:14.889667+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: mistral
|
||||
document:
|
||||
image_url: https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24
|
||||
type: image_url
|
||||
include_image_base64: true
|
||||
model: mistral/mistral-ocr-latest
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -1,111 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"image_url": "https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24",
|
||||
"type": "image_url"
|
||||
},
|
||||
"document_annotation_format": {
|
||||
"json_schema": {
|
||||
"description": "Extract the visible document fields",
|
||||
"name": "document_title",
|
||||
"schema": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"title"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"strict": true
|
||||
},
|
||||
"type": "json_schema"
|
||||
},
|
||||
"document_annotation_prompt": "Extract the visible title",
|
||||
"model": "mistral/mistral-ocr-latest"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJwYWdlcyI6W3siaW5kZXgiOjAsIm1hcmtkb3duIjoiaW52b2ljZSAxMjMiLCJpbWFnZXMiOltdLCJ0YWJsZXMiOltdLCJoeXBlcmxpbmtzIjpbXSwiaGVhZGVyIjpudWxsLCJmb290ZXIiOm51bGwsImRpbWVuc2lvbnMiOnsiZHBpIjoyMDAsImhlaWdodCI6MzAwLCJ3aWR0aCI6ODAwfSwiY29uZmlkZW5jZV9zY29yZXMiOm51bGwsImJsb2NrcyI6W3sidG9wX2xlZnRfeCI6MzM1LCJ0b3BfbGVmdF95IjoxMzgsImJvdHRvbV9yaWdodF94Ijo0NjQsImJvdHRvbV9yaWdodF95IjoxNjIsImNvbnRlbnQiOiJpbnZvaWNlIDEyMyIsImNvbmZpZGVuY2Vfc2NvcmVzIjpudWxsLCJ0eXBlIjoidGV4dCJ9XX1dLCJtb2RlbCI6Im1pc3RyYWwtb2NyLWxhdGVzdCIsImRvY3VtZW50X2Fubm90YXRpb24iOiJ7XCJ0aXRsZVwiOiBcImludm9pY2UgMTIzXCJ9IiwidXNhZ2VfaW5mbyI6eyJwYWdlc19wcm9jZXNzZWQiOjEsImRvY19zaXplX2J5dGVzIjo0MTI0fX0=",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:18 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "mistral-correlation-id",
|
||||
"value": "01a05e89-664a-740d-a112-0a1183c302b3"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-request-id",
|
||||
"value": "01a05e89-664a-740d-a112-0a1183c302b3"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-limit-ocr-pages-minute",
|
||||
"value": "60"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-remaining-ocr-pages-minute",
|
||||
"value": "52"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-ocr-pages-query-cost",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"name": "x-envoy-upstream-service-time",
|
||||
"value": "402"
|
||||
},
|
||||
{
|
||||
"name": "Server",
|
||||
"value": "cloudflare"
|
||||
},
|
||||
{
|
||||
"name": "access-control-allow-origin",
|
||||
"value": "*"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-upstream-latency",
|
||||
"value": "403"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-proxy-latency",
|
||||
"value": "20"
|
||||
},
|
||||
{
|
||||
"name": "X-Content-Type-Options",
|
||||
"value": "nosniff"
|
||||
},
|
||||
{
|
||||
"name": "cf-cache-status",
|
||||
"value": "DYNAMIC"
|
||||
},
|
||||
{
|
||||
"name": "Strict-Transport-Security",
|
||||
"value": "max-age=15552000; includeSubDomains; preload"
|
||||
},
|
||||
{
|
||||
"name": "CF-RAY",
|
||||
"value": "a346d376581f74f9-SJC"
|
||||
},
|
||||
{
|
||||
"name": "alt-svc",
|
||||
"value": "h3=\":443\"; ma=86400"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:18.915814Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: '{"model":"mistral-ocr-latest","document":{"type":"image_url","image_url":"https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24"},"image_min_size":300}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/v1/ocr
|
||||
response:
|
||||
body:
|
||||
string: '{"pages":[{"index":0,"markdown":"invoice 123","images":[],"tables":[],"hyperlinks":[],"header":null,"footer":null,"dimensions":{"dpi":200,"height":300,"width":800},"confidence_scores":null,"blocks":[{"top_left_x":335,"top_left_y":138,"bottom_right_x":464,"bottom_right_y":162,"content":"invoice
|
||||
123","confidence_scores":null,"type":"text"}]}],"model":"mistral-ocr-latest","document_annotation":null,"usage_info":{"pages_processed":1,"doc_size_bytes":4124}}'
|
||||
headers:
|
||||
CF-RAY:
|
||||
- a346d36688d203c2-SJC
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:15 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Strict-Transport-Security:
|
||||
- max-age=15552000; includeSubDomains; preload
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-allow-origin:
|
||||
- '*'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
mistral-correlation-id:
|
||||
- 01a05e89-5c60-769b-abf3-44dcefdf5282
|
||||
x-envoy-upstream-service-time:
|
||||
- '272'
|
||||
x-kong-proxy-latency:
|
||||
- '17'
|
||||
x-kong-request-id:
|
||||
- 01a05e89-5c60-769b-abf3-44dcefdf5282
|
||||
x-kong-upstream-latency:
|
||||
- '273'
|
||||
x-ratelimit-limit-ocr-pages-minute:
|
||||
- '60'
|
||||
x-ratelimit-ocr-pages-query-cost:
|
||||
- '1'
|
||||
x-ratelimit-remaining-ocr-pages-minute:
|
||||
- '55'
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:15.898087+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: mistral
|
||||
document:
|
||||
image_url: https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24
|
||||
type: image_url
|
||||
image_min_size: 300
|
||||
model: mistral/mistral-ocr-latest
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: '{"model":"mistral-ocr-latest","document":{"type":"image_url","image_url":"https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24"},"id":"case-1"}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/v1/ocr
|
||||
response:
|
||||
body:
|
||||
string: '{"pages":[{"index":0,"markdown":"invoice 123","images":[],"tables":[],"hyperlinks":[],"header":null,"footer":null,"dimensions":{"dpi":200,"height":300,"width":800},"confidence_scores":null,"blocks":[{"top_left_x":335,"top_left_y":138,"bottom_right_x":464,"bottom_right_y":162,"content":"invoice
|
||||
123","confidence_scores":null,"type":"text"}]}],"model":"mistral-ocr-latest","document_annotation":null,"usage_info":{"pages_processed":1,"doc_size_bytes":4124}}'
|
||||
headers:
|
||||
CF-RAY:
|
||||
- a346d398da783ad4-SJC
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:23 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Strict-Transport-Security:
|
||||
- max-age=15552000; includeSubDomains; preload
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-allow-origin:
|
||||
- '*'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
mistral-correlation-id:
|
||||
- 01a05e89-7bdc-74c5-b8eb-15fbd25b6cfd
|
||||
x-envoy-upstream-service-time:
|
||||
- '182'
|
||||
x-kong-proxy-latency:
|
||||
- '22'
|
||||
x-kong-request-id:
|
||||
- 01a05e89-7bdc-74c5-b8eb-15fbd25b6cfd
|
||||
x-kong-upstream-latency:
|
||||
- '183'
|
||||
x-ratelimit-limit-ocr-pages-minute:
|
||||
- '60'
|
||||
x-ratelimit-ocr-pages-query-cost:
|
||||
- '1'
|
||||
x-ratelimit-remaining-ocr-pages-minute:
|
||||
- '46'
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:23.946966+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: mistral
|
||||
document:
|
||||
image_url: https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24
|
||||
type: image_url
|
||||
id: case-1
|
||||
model: mistral/mistral-ocr-latest
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: '{"model":"mistral-ocr-latest","document":{"type":"image_url","image_url":"https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24"},"include_blocks":false}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/v1/ocr
|
||||
response:
|
||||
body:
|
||||
string: '{"pages":[{"index":0,"markdown":"invoice 123","images":[],"tables":[],"hyperlinks":[],"header":null,"footer":null,"dimensions":{"dpi":200,"height":300,"width":800},"confidence_scores":null,"blocks":null}],"model":"mistral-ocr-latest","document_annotation":null,"usage_info":{"pages_processed":1,"doc_size_bytes":4124}}'
|
||||
headers:
|
||||
CF-RAY:
|
||||
- a346d392a8432af7-SJC
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:22 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Strict-Transport-Security:
|
||||
- max-age=15552000; includeSubDomains; preload
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-allow-origin:
|
||||
- '*'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
mistral-correlation-id:
|
||||
- 01a05e89-7802-768c-bf57-9021a209ab48
|
||||
x-envoy-upstream-service-time:
|
||||
- '213'
|
||||
x-kong-proxy-latency:
|
||||
- '17'
|
||||
x-kong-request-id:
|
||||
- 01a05e89-7802-768c-bf57-9021a209ab48
|
||||
x-kong-upstream-latency:
|
||||
- '214'
|
||||
x-ratelimit-limit-ocr-pages-minute:
|
||||
- '60'
|
||||
x-ratelimit-ocr-pages-query-cost:
|
||||
- '1'
|
||||
x-ratelimit-remaining-ocr-pages-minute:
|
||||
- '47'
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:23.442341+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: mistral
|
||||
document:
|
||||
image_url: https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24
|
||||
type: image_url
|
||||
include_blocks: false
|
||||
model: mistral/mistral-ocr-latest
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: '{"model":"mistral-ocr-latest","document":{"type":"image_url","image_url":"https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24"},"confidence_scores_granularity":"page"}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/v1/ocr
|
||||
response:
|
||||
body:
|
||||
string: '{"pages":[{"index":0,"markdown":"invoice 123","images":[],"tables":[],"hyperlinks":[],"header":null,"footer":null,"dimensions":{"dpi":200,"height":300,"width":800},"confidence_scores":{"word_confidence_scores":[],"average_page_confidence_score":0.90845564554897,"minimum_page_confidence_score":0.16168208839823475},"blocks":[{"top_left_x":335,"top_left_y":138,"bottom_right_x":464,"bottom_right_y":162,"content":"invoice
|
||||
123","confidence_scores":null,"type":"text"}]}],"model":"mistral-ocr-latest","document_annotation":null,"usage_info":{"pages_processed":1,"doc_size_bytes":4124}}'
|
||||
headers:
|
||||
CF-RAY:
|
||||
- a346d38c59681749-SJC
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:22 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Strict-Transport-Security:
|
||||
- max-age=15552000; includeSubDomains; preload
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-allow-origin:
|
||||
- '*'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
mistral-correlation-id:
|
||||
- 01a05e89-7411-7d2c-9e43-01320e4cad1c
|
||||
x-envoy-upstream-service-time:
|
||||
- '329'
|
||||
x-kong-proxy-latency:
|
||||
- '14'
|
||||
x-kong-request-id:
|
||||
- 01a05e89-7411-7d2c-9e43-01320e4cad1c
|
||||
x-kong-upstream-latency:
|
||||
- '330'
|
||||
x-ratelimit-limit-ocr-pages-minute:
|
||||
- '60'
|
||||
x-ratelimit-ocr-pages-query-cost:
|
||||
- '1'
|
||||
x-ratelimit-remaining-ocr-pages-minute:
|
||||
- '48'
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:22.437385+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
confidence_scores_granularity: page
|
||||
contract: mistral
|
||||
document:
|
||||
image_url: https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24
|
||||
type: image_url
|
||||
model: mistral/mistral-ocr-latest
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: '{"model":"mistral-ocr-latest","document":{"type":"image_url","image_url":"https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24"},"extract_footer":true}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/v1/ocr
|
||||
response:
|
||||
body:
|
||||
string: '{"pages":[{"index":0,"markdown":"invoice 123","images":[],"tables":[],"hyperlinks":[],"header":null,"footer":null,"dimensions":{"dpi":200,"height":300,"width":800},"confidence_scores":null,"blocks":[{"top_left_x":335,"top_left_y":138,"bottom_right_x":464,"bottom_right_y":162,"content":"invoice
|
||||
123","confidence_scores":null,"type":"text"}]}],"model":"mistral-ocr-latest","document_annotation":null,"usage_info":{"pages_processed":1,"doc_size_bytes":4124}}'
|
||||
headers:
|
||||
CF-RAY:
|
||||
- a346d37fde0f1703-SJC
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:20 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Strict-Transport-Security:
|
||||
- max-age=15552000; includeSubDomains; preload
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-allow-origin:
|
||||
- '*'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
mistral-correlation-id:
|
||||
- 01a05e89-6c42-7ea1-b08b-07cae50734e0
|
||||
x-envoy-upstream-service-time:
|
||||
- '523'
|
||||
x-kong-proxy-latency:
|
||||
- '13'
|
||||
x-kong-request-id:
|
||||
- 01a05e89-6c42-7ea1-b08b-07cae50734e0
|
||||
x-kong-upstream-latency:
|
||||
- '525'
|
||||
x-ratelimit-limit-ocr-pages-minute:
|
||||
- '60'
|
||||
x-ratelimit-ocr-pages-query-cost:
|
||||
- '1'
|
||||
x-ratelimit-remaining-ocr-pages-minute:
|
||||
- '50'
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:20.425444+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: mistral
|
||||
document:
|
||||
image_url: https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24
|
||||
type: image_url
|
||||
extract_footer: true
|
||||
model: mistral/mistral-ocr-latest
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: '{"model":"mistral-ocr-latest","document":{"type":"document_url","document_url":"data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg=="},"document_annotation_format":{"type":"json_schema","json_schema":{"name":"document_title","description":"Extract
|
||||
the visible document fields","schema":{"additionalProperties":false,"properties":{"title":{"type":"string"}},"required":["title"],"type":"object"},"strict":true}}}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/v1/ocr
|
||||
response:
|
||||
body:
|
||||
string: '{"pages":[{"index":0,"markdown":"Test PDF File","images":[],"tables":[],"hyperlinks":[],"header":null,"footer":null,"dimensions":{"dpi":93,"height":1023,"width":791},"confidence_scores":null,"blocks":[{"top_left_x":126,"top_left_y":104,"bottom_right_x":229,"bottom_right_y":127,"content":"Test
|
||||
PDF File","confidence_scores":null,"type":"text"}]}],"model":"mistral-ocr-latest","document_annotation":"{\"title\":
|
||||
\"Test_PDF_File\"}","usage_info":{"pages_processed":1,"doc_size_bytes":589}}'
|
||||
headers:
|
||||
CF-RAY:
|
||||
- a346d3a25d0cccb8-SJC
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:25 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Strict-Transport-Security:
|
||||
- max-age=15552000; includeSubDomains; preload
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-allow-origin:
|
||||
- '*'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
mistral-correlation-id:
|
||||
- 01a05e89-81d5-79f8-914d-e3863af2d24b
|
||||
x-envoy-upstream-service-time:
|
||||
- '448'
|
||||
x-kong-proxy-latency:
|
||||
- '15'
|
||||
x-kong-request-id:
|
||||
- 01a05e89-81d5-79f8-914d-e3863af2d24b
|
||||
x-kong-upstream-latency:
|
||||
- '449'
|
||||
x-ratelimit-limit-ocr-pages-minute:
|
||||
- '60'
|
||||
x-ratelimit-ocr-pages-query-cost:
|
||||
- '1'
|
||||
x-ratelimit-remaining-ocr-pages-minute:
|
||||
- '44'
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:25.959391+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: mistral
|
||||
document:
|
||||
document_url: data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==
|
||||
type: document_url
|
||||
document_annotation_format:
|
||||
json_schema:
|
||||
description: Extract the visible document fields
|
||||
name: document_title
|
||||
schema:
|
||||
additionalProperties: false
|
||||
properties:
|
||||
title:
|
||||
type: string
|
||||
required:
|
||||
- title
|
||||
type: object
|
||||
strict: true
|
||||
type: json_schema
|
||||
model: mistral/mistral-ocr-latest
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -1,91 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"confidence_scores_granularity": "page",
|
||||
"document": {
|
||||
"image_url": "https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24",
|
||||
"type": "image_url"
|
||||
},
|
||||
"model": "mistral/mistral-ocr-latest"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJwYWdlcyI6W3siaW5kZXgiOjAsIm1hcmtkb3duIjoiaW52b2ljZSAxMjMiLCJpbWFnZXMiOltdLCJ0YWJsZXMiOltdLCJoeXBlcmxpbmtzIjpbXSwiaGVhZGVyIjpudWxsLCJmb290ZXIiOm51bGwsImRpbWVuc2lvbnMiOnsiZHBpIjoyMDAsImhlaWdodCI6MzAwLCJ3aWR0aCI6ODAwfSwiY29uZmlkZW5jZV9zY29yZXMiOnsid29yZF9jb25maWRlbmNlX3Njb3JlcyI6W10sImF2ZXJhZ2VfcGFnZV9jb25maWRlbmNlX3Njb3JlIjowLjkwODQ1NTY0NTU0ODk3LCJtaW5pbXVtX3BhZ2VfY29uZmlkZW5jZV9zY29yZSI6MC4xNjE2ODIwODgzOTgyMzQ3NX0sImJsb2NrcyI6W3sidG9wX2xlZnRfeCI6MzM1LCJ0b3BfbGVmdF95IjoxMzgsImJvdHRvbV9yaWdodF94Ijo0NjQsImJvdHRvbV9yaWdodF95IjoxNjIsImNvbnRlbnQiOiJpbnZvaWNlIDEyMyIsImNvbmZpZGVuY2Vfc2NvcmVzIjpudWxsLCJ0eXBlIjoidGV4dCJ9XX1dLCJtb2RlbCI6Im1pc3RyYWwtb2NyLWxhdGVzdCIsImRvY3VtZW50X2Fubm90YXRpb24iOm51bGwsInVzYWdlX2luZm8iOnsicGFnZXNfcHJvY2Vzc2VkIjoxLCJkb2Nfc2l6ZV9ieXRlcyI6NDEyNH19",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:22 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "mistral-correlation-id",
|
||||
"value": "01a05e89-7411-7d2c-9e43-01320e4cad1c"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-request-id",
|
||||
"value": "01a05e89-7411-7d2c-9e43-01320e4cad1c"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-limit-ocr-pages-minute",
|
||||
"value": "60"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-remaining-ocr-pages-minute",
|
||||
"value": "48"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-ocr-pages-query-cost",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"name": "x-envoy-upstream-service-time",
|
||||
"value": "329"
|
||||
},
|
||||
{
|
||||
"name": "Server",
|
||||
"value": "cloudflare"
|
||||
},
|
||||
{
|
||||
"name": "access-control-allow-origin",
|
||||
"value": "*"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-upstream-latency",
|
||||
"value": "330"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-proxy-latency",
|
||||
"value": "14"
|
||||
},
|
||||
{
|
||||
"name": "cf-cache-status",
|
||||
"value": "DYNAMIC"
|
||||
},
|
||||
{
|
||||
"name": "Strict-Transport-Security",
|
||||
"value": "max-age=15552000; includeSubDomains; preload"
|
||||
},
|
||||
{
|
||||
"name": "X-Content-Type-Options",
|
||||
"value": "nosniff"
|
||||
},
|
||||
{
|
||||
"name": "CF-RAY",
|
||||
"value": "a346d38c59681749-SJC"
|
||||
},
|
||||
{
|
||||
"name": "alt-svc",
|
||||
"value": "h3=\":443\"; ma=86400"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:22.437385Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -1,93 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"image_url": "https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24",
|
||||
"type": "image_url"
|
||||
},
|
||||
"model": "mistral/mistral-ocr-latest",
|
||||
"pages": [
|
||||
0
|
||||
]
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJwYWdlcyI6W3siaW5kZXgiOjAsIm1hcmtkb3duIjoiaW52b2ljZSAxMjMiLCJpbWFnZXMiOltdLCJ0YWJsZXMiOltdLCJoeXBlcmxpbmtzIjpbXSwiaGVhZGVyIjpudWxsLCJmb290ZXIiOm51bGwsImRpbWVuc2lvbnMiOnsiZHBpIjoyMDAsImhlaWdodCI6MzAwLCJ3aWR0aCI6ODAwfSwiY29uZmlkZW5jZV9zY29yZXMiOm51bGwsImJsb2NrcyI6W3sidG9wX2xlZnRfeCI6MzM1LCJ0b3BfbGVmdF95IjoxMzgsImJvdHRvbV9yaWdodF94Ijo0NjQsImJvdHRvbV9yaWdodF95IjoxNjIsImNvbnRlbnQiOiJpbnZvaWNlIDEyMyIsImNvbmZpZGVuY2Vfc2NvcmVzIjpudWxsLCJ0eXBlIjoidGV4dCJ9XX1dLCJtb2RlbCI6Im1pc3RyYWwtb2NyLWxhdGVzdCIsImRvY3VtZW50X2Fubm90YXRpb24iOm51bGwsInVzYWdlX2luZm8iOnsicGFnZXNfcHJvY2Vzc2VkIjoxLCJkb2Nfc2l6ZV9ieXRlcyI6NDEyNH19",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:14 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "mistral-correlation-id",
|
||||
"value": "01a05e89-5685-747f-b76d-dab242ea7512"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-request-id",
|
||||
"value": "01a05e89-5685-747f-b76d-dab242ea7512"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-limit-ocr-pages-minute",
|
||||
"value": "60"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-remaining-ocr-pages-minute",
|
||||
"value": "58"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-ocr-pages-query-cost",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"name": "x-envoy-upstream-service-time",
|
||||
"value": "179"
|
||||
},
|
||||
{
|
||||
"name": "Server",
|
||||
"value": "cloudflare"
|
||||
},
|
||||
{
|
||||
"name": "access-control-allow-origin",
|
||||
"value": "*"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-upstream-latency",
|
||||
"value": "180"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-proxy-latency",
|
||||
"value": "12"
|
||||
},
|
||||
{
|
||||
"name": "X-Content-Type-Options",
|
||||
"value": "nosniff"
|
||||
},
|
||||
{
|
||||
"name": "cf-cache-status",
|
||||
"value": "DYNAMIC"
|
||||
},
|
||||
{
|
||||
"name": "Strict-Transport-Security",
|
||||
"value": "max-age=15552000; includeSubDomains; preload"
|
||||
},
|
||||
{
|
||||
"name": "CF-RAY",
|
||||
"value": "a346d35d1fbbebe5-SJC"
|
||||
},
|
||||
{
|
||||
"name": "alt-svc",
|
||||
"value": "h3=\":443\"; ma=86400"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:14.385374Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: '{"model":"mistral-ocr-latest","document":{"type":"image_url","image_url":"https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24"},"table_format":"markdown"}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/v1/ocr
|
||||
response:
|
||||
body:
|
||||
string: '{"pages":[{"index":0,"markdown":"invoice 123","images":[],"tables":[],"hyperlinks":[],"header":null,"footer":null,"dimensions":{"dpi":200,"height":300,"width":800},"confidence_scores":null,"blocks":[{"top_left_x":335,"top_left_y":138,"bottom_right_x":464,"bottom_right_y":162,"content":"invoice
|
||||
123","confidence_scores":null,"type":"text"}]}],"model":"mistral-ocr-latest","document_annotation":null,"usage_info":{"pages_processed":1,"doc_size_bytes":4124}}'
|
||||
headers:
|
||||
CF-RAY:
|
||||
- a346d385ffbda0f2-SJC
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:21 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Strict-Transport-Security:
|
||||
- max-age=15552000; includeSubDomains; preload
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-allow-origin:
|
||||
- '*'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
mistral-correlation-id:
|
||||
- 01a05e89-7015-7a8d-a18c-37b9ceacbe77
|
||||
x-envoy-upstream-service-time:
|
||||
- '337'
|
||||
x-kong-proxy-latency:
|
||||
- '21'
|
||||
x-kong-request-id:
|
||||
- 01a05e89-7015-7a8d-a18c-37b9ceacbe77
|
||||
x-kong-upstream-latency:
|
||||
- '338'
|
||||
x-ratelimit-limit-ocr-pages-minute:
|
||||
- '60'
|
||||
x-ratelimit-ocr-pages-query-cost:
|
||||
- '1'
|
||||
x-ratelimit-remaining-ocr-pages-minute:
|
||||
- '49'
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:21.430472+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: mistral
|
||||
document:
|
||||
image_url: https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24
|
||||
type: image_url
|
||||
model: mistral/mistral-ocr-latest
|
||||
table_format: markdown
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -1,91 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"image_url": "https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24",
|
||||
"type": "image_url"
|
||||
},
|
||||
"include_image_base64": true,
|
||||
"model": "mistral/mistral-ocr-latest"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJwYWdlcyI6W3siaW5kZXgiOjAsIm1hcmtkb3duIjoiaW52b2ljZSAxMjMiLCJpbWFnZXMiOltdLCJ0YWJsZXMiOltdLCJoeXBlcmxpbmtzIjpbXSwiaGVhZGVyIjpudWxsLCJmb290ZXIiOm51bGwsImRpbWVuc2lvbnMiOnsiZHBpIjoyMDAsImhlaWdodCI6MzAwLCJ3aWR0aCI6ODAwfSwiY29uZmlkZW5jZV9zY29yZXMiOm51bGwsImJsb2NrcyI6W3sidG9wX2xlZnRfeCI6MzM1LCJ0b3BfbGVmdF95IjoxMzgsImJvdHRvbV9yaWdodF94Ijo0NjQsImJvdHRvbV9yaWdodF95IjoxNjIsImNvbnRlbnQiOiJpbnZvaWNlIDEyMyIsImNvbmZpZGVuY2Vfc2NvcmVzIjpudWxsLCJ0eXBlIjoidGV4dCJ9XX1dLCJtb2RlbCI6Im1pc3RyYWwtb2NyLWxhdGVzdCIsImRvY3VtZW50X2Fubm90YXRpb24iOm51bGwsInVzYWdlX2luZm8iOnsicGFnZXNfcHJvY2Vzc2VkIjoxLCJkb2Nfc2l6ZV9ieXRlcyI6NDEyNH19",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:14 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "mistral-correlation-id",
|
||||
"value": "01a05e89-588e-7e32-a54b-f816bc6c1dc4"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-request-id",
|
||||
"value": "01a05e89-588e-7e32-a54b-f816bc6c1dc4"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-limit-ocr-pages-minute",
|
||||
"value": "60"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-remaining-ocr-pages-minute",
|
||||
"value": "57"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-ocr-pages-query-cost",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"name": "x-envoy-upstream-service-time",
|
||||
"value": "242"
|
||||
},
|
||||
{
|
||||
"name": "Server",
|
||||
"value": "cloudflare"
|
||||
},
|
||||
{
|
||||
"name": "access-control-allow-origin",
|
||||
"value": "*"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-upstream-latency",
|
||||
"value": "242"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-proxy-latency",
|
||||
"value": "16"
|
||||
},
|
||||
{
|
||||
"name": "X-Content-Type-Options",
|
||||
"value": "nosniff"
|
||||
},
|
||||
{
|
||||
"name": "cf-cache-status",
|
||||
"value": "DYNAMIC"
|
||||
},
|
||||
{
|
||||
"name": "Strict-Transport-Security",
|
||||
"value": "max-age=15552000; includeSubDomains; preload"
|
||||
},
|
||||
{
|
||||
"name": "CF-RAY",
|
||||
"value": "a346d360593c138a-SJC"
|
||||
},
|
||||
{
|
||||
"name": "alt-svc",
|
||||
"value": "h3=\":443\"; ma=86400"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:14.889667Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -0,0 +1,105 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: '{"model":"mistral-ocr-latest","document":{"type":"image_url","image_url":"https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24"},"pages":[0],"include_image_base64":false,"image_min_size":300,"bbox_annotation_format":{"type":"json_schema","json_schema":{"name":"bounding_boxes","description":"Extract
|
||||
the visible document fields","schema":{"additionalProperties":false,"properties":{"title":{"type":"string"}},"required":["title"],"type":"object"},"strict":true}},"document_annotation_format":{"type":"json_schema","json_schema":{"name":"document_title","description":"Extract
|
||||
the visible document fields","schema":{"additionalProperties":false,"properties":{"title":{"type":"string"}},"required":["title"],"type":"object"},"strict":true}},"extract_header":true,"table_format":"markdown","include_blocks":true}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/v1/ocr
|
||||
response:
|
||||
body:
|
||||
string: '{"pages":[{"index":0,"markdown":"invoice 123","images":[],"tables":[],"hyperlinks":[],"header":null,"footer":null,"dimensions":{"dpi":200,"height":300,"width":800},"confidence_scores":null,"blocks":[{"top_left_x":335,"top_left_y":138,"bottom_right_x":464,"bottom_right_y":162,"content":"invoice
|
||||
123","confidence_scores":null,"type":"text"}]}],"model":"mistral-ocr-latest","document_annotation":"{\"title\":
|
||||
\"Invoice_123\"}","usage_info":{"pages_processed":1,"doc_size_bytes":4124}}'
|
||||
headers:
|
||||
CF-RAY:
|
||||
- a346d3a89a85f953-SJC
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:26 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Strict-Transport-Security:
|
||||
- max-age=15552000; includeSubDomains; preload
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
access-control-allow-origin:
|
||||
- '*'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
cf-cache-status:
|
||||
- DYNAMIC
|
||||
mistral-correlation-id:
|
||||
- 01a05e89-85bd-7075-af53-8e341b35a63e
|
||||
x-envoy-upstream-service-time:
|
||||
- '432'
|
||||
x-kong-proxy-latency:
|
||||
- '13'
|
||||
x-kong-request-id:
|
||||
- 01a05e89-85bd-7075-af53-8e341b35a63e
|
||||
x-kong-upstream-latency:
|
||||
- '433'
|
||||
x-ratelimit-limit-ocr-pages-minute:
|
||||
- '60'
|
||||
x-ratelimit-ocr-pages-query-cost:
|
||||
- '1'
|
||||
x-ratelimit-remaining-ocr-pages-minute:
|
||||
- '43'
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:26.965078+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
bbox_annotation_format:
|
||||
json_schema:
|
||||
description: Extract the visible document fields
|
||||
name: bounding_boxes
|
||||
schema:
|
||||
additionalProperties: false
|
||||
properties:
|
||||
title:
|
||||
type: string
|
||||
required:
|
||||
- title
|
||||
type: object
|
||||
strict: true
|
||||
type: json_schema
|
||||
contract: mistral
|
||||
document:
|
||||
image_url: https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24
|
||||
type: image_url
|
||||
document_annotation_format:
|
||||
json_schema:
|
||||
description: Extract the visible document fields
|
||||
name: document_title
|
||||
schema:
|
||||
additionalProperties: false
|
||||
properties:
|
||||
title:
|
||||
type: string
|
||||
required:
|
||||
- title
|
||||
type: object
|
||||
strict: true
|
||||
type: json_schema
|
||||
extract_header: true
|
||||
image_min_size: 300
|
||||
include_blocks: true
|
||||
include_image_base64: false
|
||||
model: mistral/mistral-ocr-latest
|
||||
pages:
|
||||
- 0
|
||||
table_format: markdown
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -1,110 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"image_url": "https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24",
|
||||
"type": "image_url"
|
||||
},
|
||||
"document_annotation_format": {
|
||||
"json_schema": {
|
||||
"description": "Extract the visible document fields",
|
||||
"name": "document_title",
|
||||
"schema": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"title"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"strict": true
|
||||
},
|
||||
"type": "json_schema"
|
||||
},
|
||||
"model": "mistral/mistral-ocr-latest"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJwYWdlcyI6W3siaW5kZXgiOjAsIm1hcmtkb3duIjoiaW52b2ljZSAxMjMiLCJpbWFnZXMiOltdLCJ0YWJsZXMiOltdLCJoeXBlcmxpbmtzIjpbXSwiaGVhZGVyIjpudWxsLCJmb290ZXIiOm51bGwsImRpbWVuc2lvbnMiOnsiZHBpIjoyMDAsImhlaWdodCI6MzAwLCJ3aWR0aCI6ODAwfSwiY29uZmlkZW5jZV9zY29yZXMiOm51bGwsImJsb2NrcyI6W3sidG9wX2xlZnRfeCI6MzM1LCJ0b3BfbGVmdF95IjoxMzgsImJvdHRvbV9yaWdodF94Ijo0NjQsImJvdHRvbV9yaWdodF95IjoxNjIsImNvbnRlbnQiOiJpbnZvaWNlIDEyMyIsImNvbmZpZGVuY2Vfc2NvcmVzIjpudWxsLCJ0eXBlIjoidGV4dCJ9XX1dLCJtb2RlbCI6Im1pc3RyYWwtb2NyLWxhdGVzdCIsImRvY3VtZW50X2Fubm90YXRpb24iOiJ7XCJ0aXRsZVwiOiBcIkludm9pY2VfMTIzXCJ9IiwidXNhZ2VfaW5mbyI6eyJwYWdlc19wcm9jZXNzZWQiOjEsImRvY19zaXplX2J5dGVzIjo0MTI0fX0=",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:17 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "mistral-correlation-id",
|
||||
"value": "01a05e89-6060-71cb-9e35-66ab873b99f3"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-request-id",
|
||||
"value": "01a05e89-6060-71cb-9e35-66ab873b99f3"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-limit-ocr-pages-minute",
|
||||
"value": "60"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-remaining-ocr-pages-minute",
|
||||
"value": "53"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-ocr-pages-query-cost",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"name": "x-envoy-upstream-service-time",
|
||||
"value": "888"
|
||||
},
|
||||
{
|
||||
"name": "Server",
|
||||
"value": "cloudflare"
|
||||
},
|
||||
{
|
||||
"name": "access-control-allow-origin",
|
||||
"value": "*"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-upstream-latency",
|
||||
"value": "889"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-proxy-latency",
|
||||
"value": "12"
|
||||
},
|
||||
{
|
||||
"name": "cf-cache-status",
|
||||
"value": "DYNAMIC"
|
||||
},
|
||||
{
|
||||
"name": "Strict-Transport-Security",
|
||||
"value": "max-age=15552000; includeSubDomains; preload"
|
||||
},
|
||||
{
|
||||
"name": "X-Content-Type-Options",
|
||||
"value": "nosniff"
|
||||
},
|
||||
{
|
||||
"name": "CF-RAY",
|
||||
"value": "a346d36cd82f15ba-SJC"
|
||||
},
|
||||
{
|
||||
"name": "alt-svc",
|
||||
"value": "h3=\":443\"; ma=86400"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:17.908846Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -1,91 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"image_url": "https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24",
|
||||
"type": "image_url"
|
||||
},
|
||||
"extract_header": true,
|
||||
"model": "mistral/mistral-ocr-latest"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJwYWdlcyI6W3siaW5kZXgiOjAsIm1hcmtkb3duIjoiaW52b2ljZSAxMjMiLCJpbWFnZXMiOltdLCJ0YWJsZXMiOltdLCJoeXBlcmxpbmtzIjpbXSwiaGVhZGVyIjpudWxsLCJmb290ZXIiOm51bGwsImRpbWVuc2lvbnMiOnsiZHBpIjoyMDAsImhlaWdodCI6MzAwLCJ3aWR0aCI6ODAwfSwiY29uZmlkZW5jZV9zY29yZXMiOm51bGwsImJsb2NrcyI6W3sidG9wX2xlZnRfeCI6MzM1LCJ0b3BfbGVmdF95IjoxMzgsImJvdHRvbV9yaWdodF94Ijo0NjQsImJvdHRvbV9yaWdodF95IjoxNjIsImNvbnRlbnQiOiJpbnZvaWNlIDEyMyIsImNvbmZpZGVuY2Vfc2NvcmVzIjpudWxsLCJ0eXBlIjoidGV4dCJ9XX1dLCJtb2RlbCI6Im1pc3RyYWwtb2NyLWxhdGVzdCIsImRvY3VtZW50X2Fubm90YXRpb24iOm51bGwsInVzYWdlX2luZm8iOnsicGFnZXNfcHJvY2Vzc2VkIjoxLCJkb2Nfc2l6ZV9ieXRlcyI6NDEyNH19",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:19 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "mistral-correlation-id",
|
||||
"value": "01a05e89-6a3a-76c7-85b8-d40a7156155e"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-request-id",
|
||||
"value": "01a05e89-6a3a-76c7-85b8-d40a7156155e"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-limit-ocr-pages-minute",
|
||||
"value": "60"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-remaining-ocr-pages-minute",
|
||||
"value": "51"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-ocr-pages-query-cost",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"name": "x-envoy-upstream-service-time",
|
||||
"value": "230"
|
||||
},
|
||||
{
|
||||
"name": "Server",
|
||||
"value": "cloudflare"
|
||||
},
|
||||
{
|
||||
"name": "access-control-allow-origin",
|
||||
"value": "*"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-upstream-latency",
|
||||
"value": "230"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-proxy-latency",
|
||||
"value": "16"
|
||||
},
|
||||
{
|
||||
"name": "cf-cache-status",
|
||||
"value": "DYNAMIC"
|
||||
},
|
||||
{
|
||||
"name": "Strict-Transport-Security",
|
||||
"value": "max-age=15552000; includeSubDomains; preload"
|
||||
},
|
||||
{
|
||||
"name": "X-Content-Type-Options",
|
||||
"value": "nosniff"
|
||||
},
|
||||
{
|
||||
"name": "CF-RAY",
|
||||
"value": "a346d37c9944d8a7-SJC"
|
||||
},
|
||||
{
|
||||
"name": "alt-svc",
|
||||
"value": "h3=\":443\"; ma=86400"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:19.420285Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -1,91 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"image_url": "https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24",
|
||||
"type": "image_url"
|
||||
},
|
||||
"id": "case-1",
|
||||
"model": "mistral/mistral-ocr-latest"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJwYWdlcyI6W3siaW5kZXgiOjAsIm1hcmtkb3duIjoiaW52b2ljZSAxMjMiLCJpbWFnZXMiOltdLCJ0YWJsZXMiOltdLCJoeXBlcmxpbmtzIjpbXSwiaGVhZGVyIjpudWxsLCJmb290ZXIiOm51bGwsImRpbWVuc2lvbnMiOnsiZHBpIjoyMDAsImhlaWdodCI6MzAwLCJ3aWR0aCI6ODAwfSwiY29uZmlkZW5jZV9zY29yZXMiOm51bGwsImJsb2NrcyI6W3sidG9wX2xlZnRfeCI6MzM1LCJ0b3BfbGVmdF95IjoxMzgsImJvdHRvbV9yaWdodF94Ijo0NjQsImJvdHRvbV9yaWdodF95IjoxNjIsImNvbnRlbnQiOiJpbnZvaWNlIDEyMyIsImNvbmZpZGVuY2Vfc2NvcmVzIjpudWxsLCJ0eXBlIjoidGV4dCJ9XX1dLCJtb2RlbCI6Im1pc3RyYWwtb2NyLWxhdGVzdCIsImRvY3VtZW50X2Fubm90YXRpb24iOm51bGwsInVzYWdlX2luZm8iOnsicGFnZXNfcHJvY2Vzc2VkIjoxLCJkb2Nfc2l6ZV9ieXRlcyI6NDEyNH19",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:23 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "mistral-correlation-id",
|
||||
"value": "01a05e89-7bdc-74c5-b8eb-15fbd25b6cfd"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-request-id",
|
||||
"value": "01a05e89-7bdc-74c5-b8eb-15fbd25b6cfd"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-limit-ocr-pages-minute",
|
||||
"value": "60"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-remaining-ocr-pages-minute",
|
||||
"value": "46"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-ocr-pages-query-cost",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"name": "x-envoy-upstream-service-time",
|
||||
"value": "182"
|
||||
},
|
||||
{
|
||||
"name": "Server",
|
||||
"value": "cloudflare"
|
||||
},
|
||||
{
|
||||
"name": "access-control-allow-origin",
|
||||
"value": "*"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-upstream-latency",
|
||||
"value": "183"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-proxy-latency",
|
||||
"value": "22"
|
||||
},
|
||||
{
|
||||
"name": "cf-cache-status",
|
||||
"value": "DYNAMIC"
|
||||
},
|
||||
{
|
||||
"name": "Strict-Transport-Security",
|
||||
"value": "max-age=15552000; includeSubDomains; preload"
|
||||
},
|
||||
{
|
||||
"name": "X-Content-Type-Options",
|
||||
"value": "nosniff"
|
||||
},
|
||||
{
|
||||
"name": "CF-RAY",
|
||||
"value": "a346d398da783ad4-SJC"
|
||||
},
|
||||
{
|
||||
"name": "alt-svc",
|
||||
"value": "h3=\":443\"; ma=86400"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:23.946966Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -1,110 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"document_url": "data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==",
|
||||
"type": "document_url"
|
||||
},
|
||||
"document_annotation_format": {
|
||||
"json_schema": {
|
||||
"description": "Extract the visible document fields",
|
||||
"name": "document_title",
|
||||
"schema": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"title"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"strict": true
|
||||
},
|
||||
"type": "json_schema"
|
||||
},
|
||||
"model": "mistral/mistral-ocr-latest"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJwYWdlcyI6W3siaW5kZXgiOjAsIm1hcmtkb3duIjoiVGVzdCBQREYgRmlsZSIsImltYWdlcyI6W10sInRhYmxlcyI6W10sImh5cGVybGlua3MiOltdLCJoZWFkZXIiOm51bGwsImZvb3RlciI6bnVsbCwiZGltZW5zaW9ucyI6eyJkcGkiOjkzLCJoZWlnaHQiOjEwMjMsIndpZHRoIjo3OTF9LCJjb25maWRlbmNlX3Njb3JlcyI6bnVsbCwiYmxvY2tzIjpbeyJ0b3BfbGVmdF94IjoxMjYsInRvcF9sZWZ0X3kiOjEwNCwiYm90dG9tX3JpZ2h0X3giOjIyOSwiYm90dG9tX3JpZ2h0X3kiOjEyNywiY29udGVudCI6IlRlc3QgUERGIEZpbGUiLCJjb25maWRlbmNlX3Njb3JlcyI6bnVsbCwidHlwZSI6InRleHQifV19XSwibW9kZWwiOiJtaXN0cmFsLW9jci1sYXRlc3QiLCJkb2N1bWVudF9hbm5vdGF0aW9uIjoie1widGl0bGVcIjogXCJUZXN0X1BERl9GaWxlXCJ9IiwidXNhZ2VfaW5mbyI6eyJwYWdlc19wcm9jZXNzZWQiOjEsImRvY19zaXplX2J5dGVzIjo1ODl9fQ==",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:25 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "mistral-correlation-id",
|
||||
"value": "01a05e89-81d5-79f8-914d-e3863af2d24b"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-request-id",
|
||||
"value": "01a05e89-81d5-79f8-914d-e3863af2d24b"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-limit-ocr-pages-minute",
|
||||
"value": "60"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-remaining-ocr-pages-minute",
|
||||
"value": "44"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-ocr-pages-query-cost",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"name": "x-envoy-upstream-service-time",
|
||||
"value": "448"
|
||||
},
|
||||
{
|
||||
"name": "Server",
|
||||
"value": "cloudflare"
|
||||
},
|
||||
{
|
||||
"name": "access-control-allow-origin",
|
||||
"value": "*"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-upstream-latency",
|
||||
"value": "449"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-proxy-latency",
|
||||
"value": "15"
|
||||
},
|
||||
{
|
||||
"name": "cf-cache-status",
|
||||
"value": "DYNAMIC"
|
||||
},
|
||||
{
|
||||
"name": "Strict-Transport-Security",
|
||||
"value": "max-age=15552000; includeSubDomains; preload"
|
||||
},
|
||||
{
|
||||
"name": "X-Content-Type-Options",
|
||||
"value": "nosniff"
|
||||
},
|
||||
{
|
||||
"name": "CF-RAY",
|
||||
"value": "a346d3a25d0cccb8-SJC"
|
||||
},
|
||||
{
|
||||
"name": "alt-svc",
|
||||
"value": "h3=\":443\"; ma=86400"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:25.959391Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -1,91 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"image_url": "https://dummyjson.com/image/800x300/ffffff/000000?text=invoice%20123&fontSize=24",
|
||||
"type": "image_url"
|
||||
},
|
||||
"include_blocks": false,
|
||||
"model": "mistral/mistral-ocr-latest"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJwYWdlcyI6W3siaW5kZXgiOjAsIm1hcmtkb3duIjoiaW52b2ljZSAxMjMiLCJpbWFnZXMiOltdLCJ0YWJsZXMiOltdLCJoeXBlcmxpbmtzIjpbXSwiaGVhZGVyIjpudWxsLCJmb290ZXIiOm51bGwsImRpbWVuc2lvbnMiOnsiZHBpIjoyMDAsImhlaWdodCI6MzAwLCJ3aWR0aCI6ODAwfSwiY29uZmlkZW5jZV9zY29yZXMiOm51bGwsImJsb2NrcyI6bnVsbH1dLCJtb2RlbCI6Im1pc3RyYWwtb2NyLWxhdGVzdCIsImRvY3VtZW50X2Fubm90YXRpb24iOm51bGwsInVzYWdlX2luZm8iOnsicGFnZXNfcHJvY2Vzc2VkIjoxLCJkb2Nfc2l6ZV9ieXRlcyI6NDEyNH19",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:22 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "mistral-correlation-id",
|
||||
"value": "01a05e89-7802-768c-bf57-9021a209ab48"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-request-id",
|
||||
"value": "01a05e89-7802-768c-bf57-9021a209ab48"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-limit-ocr-pages-minute",
|
||||
"value": "60"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-remaining-ocr-pages-minute",
|
||||
"value": "47"
|
||||
},
|
||||
{
|
||||
"name": "x-ratelimit-ocr-pages-query-cost",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"name": "x-envoy-upstream-service-time",
|
||||
"value": "213"
|
||||
},
|
||||
{
|
||||
"name": "Server",
|
||||
"value": "cloudflare"
|
||||
},
|
||||
{
|
||||
"name": "access-control-allow-origin",
|
||||
"value": "*"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-upstream-latency",
|
||||
"value": "214"
|
||||
},
|
||||
{
|
||||
"name": "x-kong-proxy-latency",
|
||||
"value": "17"
|
||||
},
|
||||
{
|
||||
"name": "X-Content-Type-Options",
|
||||
"value": "nosniff"
|
||||
},
|
||||
{
|
||||
"name": "cf-cache-status",
|
||||
"value": "DYNAMIC"
|
||||
},
|
||||
{
|
||||
"name": "Strict-Transport-Security",
|
||||
"value": "max-age=15552000; includeSubDomains; preload"
|
||||
},
|
||||
{
|
||||
"name": "CF-RAY",
|
||||
"value": "a346d392a8432af7-SJC"
|
||||
},
|
||||
{
|
||||
"name": "alt-svc",
|
||||
"value": "h3=\":443\"; ma=86400"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:23.442341Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: "--3d54cb2e388c04dbfc172c1497aaa396\r\nContent-Disposition: form-data; name=\"file\";
|
||||
filename=\"document\"\r\nContent-Type: application/pdf\r\n\r\n%PDF-1.4\n1 0
|
||||
obj\n<< /Type /Catalog /Pages 2 0 R >>\nendobj\n2 0 obj\n<< /Type /Pages /Kids
|
||||
[3 0 R] /Count 1 >>\nendobj\n3 0 obj\n<< /Type /Page /Parent 2 0 R /Resources
|
||||
4 0 R /MediaBox [0 0 612 792] /Contents 5 0 R >>\nendobj\n4 0 obj\n<< /Font
|
||||
<< /F1 << /Type /Font /Subtype /Type1 /BaseFont /Helvetica >> >> >>\nendobj\n5
|
||||
0 obj\n<< /Length 44 >>\nstream\nBT\n/F1 12 Tf\n100 700 Td\n(Test PDF File)
|
||||
Tj\nET\nendstream\nendobj\nxref\n0 6\n0000000000 65535 f \n0000000009 00000
|
||||
n \n0000000058 00000 n \n0000000115 00000 n \n0000000214 00000 n \n0000000293
|
||||
00000 n \ntrailer\n<< /Size 6 /Root 1 0 R >>\nstartxref\n385\n%%EOF\n\r\n--3d54cb2e388c04dbfc172c1497aaa396--\r\n"
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- multipart/form-data; boundary=3d54cb2e388c04dbfc172c1497aaa396
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/upload
|
||||
response:
|
||||
body:
|
||||
string: '{"file_id":"reducto://45d3cbbc-4d77-4967-8941-935b0c4a0493.pdf","presigned_url":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:58 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
- request:
|
||||
body: '{"document_url":"reducto://45d3cbbc-4d77-4967-8941-935b0c4a0493.pdf"}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/parse
|
||||
response:
|
||||
body:
|
||||
string: '{"response_type":"parse","job_id":"262ed683-ecd8-40b9-a568-f7b7014854c9","duration":2.4146597385406494,"pdf_url":"https://prod-storage20241010144745140900000001.s3.amazonaws.com/org/8bd983d1-47dd-440b-93d8-431412d819bf/a91f568b-6e98-4962-9924-097202093779.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA2UOK6OVBOUYL7WYA%2F20260901%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260901T195456Z&X-Amz-Expires=43200&X-Amz-SignedHeaders=host&X-Amz-Signature=aa77b33e20fc1426307688f55147d57e8d3b2286a787c096b2da016d7d7d0c93","studio_link":"https://studio.reducto.ai/job/cddd635e-5d16-4621-bf48-031e7637dc0b","usage":{"num_pages":1,"credits":1.0,"credit_breakdown":{"page":1.0},"page_billing_breakdown":{"1":["page"]},"non_empty_cell_count":null},"result":{"type":"full","chunks":[{"content":"#
|
||||
Test PDF File","embed":"# Test PDF File","enriched":null,"enrichment_success":false,"blocks":[{"type":"Title","bbox":{"left":0.16352969387356803,"top":0.10490237663507056,"width":0.11855640077405508,"height":0.011359045881442221,"page":1,"original_page":1},"content":"Test
|
||||
PDF File","image_url":null,"chart_data":null,"confidence":"high","granular_confidence":{"extract_confidence":null,"parse_confidence":0.7126715332269669},"extra":null}]}],"ocr":null,"custom":null},"parse_mode":null,"document_properties":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:59 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:59.198829+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: reducto_legacy
|
||||
custom_llm_provider: reducto
|
||||
document:
|
||||
document_url: data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==
|
||||
type: document_url
|
||||
model: parse-legacy
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"custom_llm_provider": "reducto",
|
||||
"document": {
|
||||
"document_url": "data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==",
|
||||
"type": "document_url"
|
||||
},
|
||||
"model": "parse-legacy"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJmaWxlX2lkIjoicmVkdWN0bzovLzQ1ZDNjYmJjLTRkNzctNDk2Ny04OTQxLTkzNWIwYzRhMDQ5My5wZGYiLCJwcmVzaWduZWRfdXJsIjpudWxsfQ==",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:58 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"body_b64": "eyJyZXNwb25zZV90eXBlIjoicGFyc2UiLCJqb2JfaWQiOiIyNjJlZDY4My1lY2Q4LTQwYjktYTU2OC1mN2I3MDE0ODU0YzkiLCJkdXJhdGlvbiI6Mi40MTQ2NTk3Mzg1NDA2NDk0LCJwZGZfdXJsIjoiaHR0cHM6Ly9wcm9kLXN0b3JhZ2UyMDI0MTAxMDE0NDc0NTE0MDkwMDAwMDAwMS5zMy5hbWF6b25hd3MuY29tL29yZy84YmQ5ODNkMS00N2RkLTQ0MGItOTNkOC00MzE0MTJkODE5YmYvYTkxZjU2OGItNmU5OC00OTYyLTk5MjQtMDk3MjAyMDkzNzc5LnBkZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUEyVU9LNk9WQk9VWUw3V1lBJTJGMjAyNjA5MDElMkZ1cy13ZXN0LTIlMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTAxVDE5NTQ1NlomWC1BbXotRXhwaXJlcz00MzIwMCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmWC1BbXotU2lnbmF0dXJlPWFhNzdiMzNlMjBmYzE0MjYzMDc2ODhmNTUxNDdkNTdlOGQzYjIyODZhNzg3YzA5NmIyZGEwMTZkN2Q3ZDBjOTMiLCJzdHVkaW9fbGluayI6Imh0dHBzOi8vc3R1ZGlvLnJlZHVjdG8uYWkvam9iL2NkZGQ2MzVlLTVkMTYtNDYyMS1iZjQ4LTAzMWU3NjM3ZGMwYiIsInVzYWdlIjp7Im51bV9wYWdlcyI6MSwiY3JlZGl0cyI6MS4wLCJjcmVkaXRfYnJlYWtkb3duIjp7InBhZ2UiOjEuMH0sInBhZ2VfYmlsbGluZ19icmVha2Rvd24iOnsiMSI6WyJwYWdlIl19LCJub25fZW1wdHlfY2VsbF9jb3VudCI6bnVsbH0sInJlc3VsdCI6eyJ0eXBlIjoiZnVsbCIsImNodW5rcyI6W3siY29udGVudCI6IiMgVGVzdCBQREYgRmlsZSIsImVtYmVkIjoiIyBUZXN0IFBERiBGaWxlIiwiZW5yaWNoZWQiOm51bGwsImVucmljaG1lbnRfc3VjY2VzcyI6ZmFsc2UsImJsb2NrcyI6W3sidHlwZSI6IlRpdGxlIiwiYmJveCI6eyJsZWZ0IjowLjE2MzUyOTY5Mzg3MzU2ODAzLCJ0b3AiOjAuMTA0OTAyMzc2NjM1MDcwNTYsIndpZHRoIjowLjExODU1NjQwMDc3NDA1NTA4LCJoZWlnaHQiOjAuMDExMzU5MDQ1ODgxNDQyMjIxLCJwYWdlIjoxLCJvcmlnaW5hbF9wYWdlIjoxfSwiY29udGVudCI6IlRlc3QgUERGIEZpbGUiLCJpbWFnZV91cmwiOm51bGwsImNoYXJ0X2RhdGEiOm51bGwsImNvbmZpZGVuY2UiOiJoaWdoIiwiZ3JhbnVsYXJfY29uZmlkZW5jZSI6eyJleHRyYWN0X2NvbmZpZGVuY2UiOm51bGwsInBhcnNlX2NvbmZpZGVuY2UiOjAuNzEyNjcxNTMzMjI2OTY2OX0sImV4dHJhIjpudWxsfV19XSwib2NyIjpudWxsLCJjdXN0b20iOm51bGx9LCJwYXJzZV9tb2RlIjpudWxsLCJkb2N1bWVudF9wcm9wZXJ0aWVzIjpudWxsfQ==",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:59 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:59.198829Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"document_url": "reducto://invalid-document-for-parity",
|
||||
"type": "document_url"
|
||||
},
|
||||
"model": "reducto/parse-legacy"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJlcnJvciI6eyJjb2RlIjo0MDQsIm5hbWUiOiJOT1RfRk9VTkQiLCJtZXNzYWdlIjoiRG9jdW1lbnQgJ1RoZSBmaWxlIG1heSBoYXZlIGV4cGlyZWQgb3IgYmVlbiBkZWxldGVkLiBQbGVhc2UgcmUtdXBsb2FkIGFuZCB0cnkgYWdhaW4uJyBub3QgZm91bmQifSwiZGV0YWlsIjoiRG9jdW1lbnQgJ1RoZSBmaWxlIG1heSBoYXZlIGV4cGlyZWQgb3IgYmVlbiBkZWxldGVkLiBQbGVhc2UgcmUtdXBsb2FkIGFuZCB0cnkgYWdhaW4uJyBub3QgZm91bmQifQ==",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Wed, 02 Sep 2026 01:14:06 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 404
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-02T01:14:06.814847Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: '{"document_url":"reducto://invalid-document-for-parity"}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/parse
|
||||
response:
|
||||
body:
|
||||
string: '{"error":{"code":404,"name":"NOT_FOUND","message":"Document ''The file
|
||||
may have expired or been deleted. Please re-upload and try again.'' not found"},"detail":"Document
|
||||
''The file may have expired or been deleted. Please re-upload and try again.''
|
||||
not found"}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Wed, 02 Sep 2026 01:14:06 GMT
|
||||
status:
|
||||
code: 404
|
||||
message: ''
|
||||
recorded_at: '2026-09-02T01:14:06.814847+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: reducto_legacy
|
||||
document:
|
||||
document_url: reducto://invalid-document-for-parity
|
||||
type: document_url
|
||||
model: reducto/parse-legacy
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: "--90e8e7e6a71b2a4b14695234a736d695\r\nContent-Disposition: form-data; name=\"file\";
|
||||
filename=\"document\"\r\nContent-Type: application/pdf\r\n\r\n%PDF-1.4\n1 0
|
||||
obj\n<< /Type /Catalog /Pages 2 0 R >>\nendobj\n2 0 obj\n<< /Type /Pages /Kids
|
||||
[3 0 R] /Count 1 >>\nendobj\n3 0 obj\n<< /Type /Page /Parent 2 0 R /Resources
|
||||
4 0 R /MediaBox [0 0 612 792] /Contents 5 0 R >>\nendobj\n4 0 obj\n<< /Font
|
||||
<< /F1 << /Type /Font /Subtype /Type1 /BaseFont /Helvetica >> >> >>\nendobj\n5
|
||||
0 obj\n<< /Length 44 >>\nstream\nBT\n/F1 12 Tf\n100 700 Td\n(Test PDF File)
|
||||
Tj\nET\nendstream\nendobj\nxref\n0 6\n0000000000 65535 f \n0000000009 00000
|
||||
n \n0000000058 00000 n \n0000000115 00000 n \n0000000214 00000 n \n0000000293
|
||||
00000 n \ntrailer\n<< /Size 6 /Root 1 0 R >>\nstartxref\n385\n%%EOF\n\r\n--90e8e7e6a71b2a4b14695234a736d695--\r\n"
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- multipart/form-data; boundary=90e8e7e6a71b2a4b14695234a736d695
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/upload
|
||||
response:
|
||||
body:
|
||||
string: '{"file_id":"reducto://b9f242fd-fdb4-4b0a-9535-f11f432c7678.pdf","presigned_url":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:57 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
- request:
|
||||
body: '{"document_url":"reducto://b9f242fd-fdb4-4b0a-9535-f11f432c7678.pdf","options":{"enhance":{}}}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/parse
|
||||
response:
|
||||
body:
|
||||
string: '{"response_type":"parse","job_id":"25b78189-66fe-46d9-8114-14372a9d442d","duration":2.4146597385406494,"pdf_url":"https://prod-storage20241010144745140900000001.s3.amazonaws.com/org/8bd983d1-47dd-440b-93d8-431412d819bf/a91f568b-6e98-4962-9924-097202093779.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA2UOK6OVBOUYL7WYA%2F20260901%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260901T195456Z&X-Amz-Expires=43200&X-Amz-SignedHeaders=host&X-Amz-Signature=aa77b33e20fc1426307688f55147d57e8d3b2286a787c096b2da016d7d7d0c93","studio_link":"https://studio.reducto.ai/job/cddd635e-5d16-4621-bf48-031e7637dc0b","usage":{"num_pages":1,"credits":1.0,"credit_breakdown":{"page":1.0},"page_billing_breakdown":{"1":["page"]},"non_empty_cell_count":null},"result":{"type":"full","chunks":[{"content":"#
|
||||
Test PDF File","embed":"# Test PDF File","enriched":null,"enrichment_success":false,"blocks":[{"type":"Title","bbox":{"left":0.16352969387356803,"top":0.10490237663507056,"width":0.11855640077405508,"height":0.011359045881442221,"page":1,"original_page":1},"content":"Test
|
||||
PDF File","image_url":null,"chart_data":null,"confidence":"high","granular_confidence":{"extract_confidence":null,"parse_confidence":0.7126715332269669},"extra":null}]}],"ocr":null,"custom":null},"parse_mode":null,"document_properties":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:57 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:58.471820+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: reducto_legacy
|
||||
document:
|
||||
document_url: data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==
|
||||
type: document_url
|
||||
enhance: {}
|
||||
model: reducto/parse-legacy
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: "--87aea09e72c511f78d32f6eabd194f5c\r\nContent-Disposition: form-data; name=\"file\";
|
||||
filename=\"document\"\r\nContent-Type: application/pdf\r\n\r\n%PDF-1.4\n1 0
|
||||
obj\n<< /Type /Catalog /Pages 2 0 R >>\nendobj\n2 0 obj\n<< /Type /Pages /Kids
|
||||
[3 0 R] /Count 1 >>\nendobj\n3 0 obj\n<< /Type /Page /Parent 2 0 R /Resources
|
||||
4 0 R /MediaBox [0 0 612 792] /Contents 5 0 R >>\nendobj\n4 0 obj\n<< /Font
|
||||
<< /F1 << /Type /Font /Subtype /Type1 /BaseFont /Helvetica >> >> >>\nendobj\n5
|
||||
0 obj\n<< /Length 44 >>\nstream\nBT\n/F1 12 Tf\n100 700 Td\n(Test PDF File)
|
||||
Tj\nET\nendstream\nendobj\nxref\n0 6\n0000000000 65535 f \n0000000009 00000
|
||||
n \n0000000058 00000 n \n0000000115 00000 n \n0000000214 00000 n \n0000000293
|
||||
00000 n \ntrailer\n<< /Size 6 /Root 1 0 R >>\nstartxref\n385\n%%EOF\n\r\n--87aea09e72c511f78d32f6eabd194f5c--\r\n"
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- multipart/form-data; boundary=87aea09e72c511f78d32f6eabd194f5c
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/upload
|
||||
response:
|
||||
body:
|
||||
string: '{"file_id":"reducto://a91f568b-6e98-4962-9924-097202093779.pdf","presigned_url":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:53 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
- request:
|
||||
body: '{"document_url":"reducto://a91f568b-6e98-4962-9924-097202093779.pdf"}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/parse
|
||||
response:
|
||||
body:
|
||||
string: '{"response_type":"parse","job_id":"cddd635e-5d16-4621-bf48-031e7637dc0b","duration":2.4146597385406494,"pdf_url":"https://prod-storage20241010144745140900000001.s3.amazonaws.com/org/8bd983d1-47dd-440b-93d8-431412d819bf/a91f568b-6e98-4962-9924-097202093779.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA2UOK6OVBOUYL7WYA%2F20260901%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260901T195456Z&X-Amz-Expires=43200&X-Amz-SignedHeaders=host&X-Amz-Signature=aa77b33e20fc1426307688f55147d57e8d3b2286a787c096b2da016d7d7d0c93","studio_link":"https://studio.reducto.ai/job/cddd635e-5d16-4621-bf48-031e7637dc0b","usage":{"num_pages":1,"credits":1.0,"credit_breakdown":{"page":1.0},"page_billing_breakdown":{"1":["page"]},"non_empty_cell_count":null},"result":{"type":"full","chunks":[{"content":"#
|
||||
Test PDF File","embed":"# Test PDF File","enriched":null,"enrichment_success":false,"blocks":[{"type":"Title","bbox":{"left":0.16352969387356803,"top":0.10490237663507056,"width":0.11855640077405508,"height":0.011359045881442221,"page":1,"original_page":1},"content":"Test
|
||||
PDF File","image_url":null,"chart_data":null,"confidence":"high","granular_confidence":{"extract_confidence":null,"parse_confidence":0.7126715332269669},"extra":null}]}],"ocr":null,"custom":null},"parse_mode":null,"document_properties":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:57 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:57.246119+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: reducto_legacy
|
||||
document:
|
||||
document_url: data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==
|
||||
type: document_url
|
||||
model: reducto/parse-legacy
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"document_url": "data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==",
|
||||
"type": "document_url"
|
||||
},
|
||||
"enhance": {},
|
||||
"model": "reducto/parse-legacy"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJmaWxlX2lkIjoicmVkdWN0bzovL2I5ZjI0MmZkLWZkYjQtNGIwYS05NTM1LWYxMWY0MzJjNzY3OC5wZGYiLCJwcmVzaWduZWRfdXJsIjpudWxsfQ==",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:57 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"body_b64": "eyJyZXNwb25zZV90eXBlIjoicGFyc2UiLCJqb2JfaWQiOiIyNWI3ODE4OS02NmZlLTQ2ZDktODExNC0xNDM3MmE5ZDQ0MmQiLCJkdXJhdGlvbiI6Mi40MTQ2NTk3Mzg1NDA2NDk0LCJwZGZfdXJsIjoiaHR0cHM6Ly9wcm9kLXN0b3JhZ2UyMDI0MTAxMDE0NDc0NTE0MDkwMDAwMDAwMS5zMy5hbWF6b25hd3MuY29tL29yZy84YmQ5ODNkMS00N2RkLTQ0MGItOTNkOC00MzE0MTJkODE5YmYvYTkxZjU2OGItNmU5OC00OTYyLTk5MjQtMDk3MjAyMDkzNzc5LnBkZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUEyVU9LNk9WQk9VWUw3V1lBJTJGMjAyNjA5MDElMkZ1cy13ZXN0LTIlMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTAxVDE5NTQ1NlomWC1BbXotRXhwaXJlcz00MzIwMCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmWC1BbXotU2lnbmF0dXJlPWFhNzdiMzNlMjBmYzE0MjYzMDc2ODhmNTUxNDdkNTdlOGQzYjIyODZhNzg3YzA5NmIyZGEwMTZkN2Q3ZDBjOTMiLCJzdHVkaW9fbGluayI6Imh0dHBzOi8vc3R1ZGlvLnJlZHVjdG8uYWkvam9iL2NkZGQ2MzVlLTVkMTYtNDYyMS1iZjQ4LTAzMWU3NjM3ZGMwYiIsInVzYWdlIjp7Im51bV9wYWdlcyI6MSwiY3JlZGl0cyI6MS4wLCJjcmVkaXRfYnJlYWtkb3duIjp7InBhZ2UiOjEuMH0sInBhZ2VfYmlsbGluZ19icmVha2Rvd24iOnsiMSI6WyJwYWdlIl19LCJub25fZW1wdHlfY2VsbF9jb3VudCI6bnVsbH0sInJlc3VsdCI6eyJ0eXBlIjoiZnVsbCIsImNodW5rcyI6W3siY29udGVudCI6IiMgVGVzdCBQREYgRmlsZSIsImVtYmVkIjoiIyBUZXN0IFBERiBGaWxlIiwiZW5yaWNoZWQiOm51bGwsImVucmljaG1lbnRfc3VjY2VzcyI6ZmFsc2UsImJsb2NrcyI6W3sidHlwZSI6IlRpdGxlIiwiYmJveCI6eyJsZWZ0IjowLjE2MzUyOTY5Mzg3MzU2ODAzLCJ0b3AiOjAuMTA0OTAyMzc2NjM1MDcwNTYsIndpZHRoIjowLjExODU1NjQwMDc3NDA1NTA4LCJoZWlnaHQiOjAuMDExMzU5MDQ1ODgxNDQyMjIxLCJwYWdlIjoxLCJvcmlnaW5hbF9wYWdlIjoxfSwiY29udGVudCI6IlRlc3QgUERGIEZpbGUiLCJpbWFnZV91cmwiOm51bGwsImNoYXJ0X2RhdGEiOm51bGwsImNvbmZpZGVuY2UiOiJoaWdoIiwiZ3JhbnVsYXJfY29uZmlkZW5jZSI6eyJleHRyYWN0X2NvbmZpZGVuY2UiOm51bGwsInBhcnNlX2NvbmZpZGVuY2UiOjAuNzEyNjcxNTMzMjI2OTY2OX0sImV4dHJhIjpudWxsfV19XSwib2NyIjpudWxsLCJjdXN0b20iOm51bGx9LCJwYXJzZV9tb2RlIjpudWxsLCJkb2N1bWVudF9wcm9wZXJ0aWVzIjpudWxsfQ==",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:57 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:58.471820Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"document_url": "data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==",
|
||||
"type": "document_url"
|
||||
},
|
||||
"model": "reducto/parse-legacy"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJmaWxlX2lkIjoicmVkdWN0bzovL2E5MWY1NjhiLTZlOTgtNDk2Mi05OTI0LTA5NzIwMjA5Mzc3OS5wZGYiLCJwcmVzaWduZWRfdXJsIjpudWxsfQ==",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:53 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"body_b64": "eyJyZXNwb25zZV90eXBlIjoicGFyc2UiLCJqb2JfaWQiOiJjZGRkNjM1ZS01ZDE2LTQ2MjEtYmY0OC0wMzFlNzYzN2RjMGIiLCJkdXJhdGlvbiI6Mi40MTQ2NTk3Mzg1NDA2NDk0LCJwZGZfdXJsIjoiaHR0cHM6Ly9wcm9kLXN0b3JhZ2UyMDI0MTAxMDE0NDc0NTE0MDkwMDAwMDAwMS5zMy5hbWF6b25hd3MuY29tL29yZy84YmQ5ODNkMS00N2RkLTQ0MGItOTNkOC00MzE0MTJkODE5YmYvYTkxZjU2OGItNmU5OC00OTYyLTk5MjQtMDk3MjAyMDkzNzc5LnBkZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUEyVU9LNk9WQk9VWUw3V1lBJTJGMjAyNjA5MDElMkZ1cy13ZXN0LTIlMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTAxVDE5NTQ1NlomWC1BbXotRXhwaXJlcz00MzIwMCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmWC1BbXotU2lnbmF0dXJlPWFhNzdiMzNlMjBmYzE0MjYzMDc2ODhmNTUxNDdkNTdlOGQzYjIyODZhNzg3YzA5NmIyZGEwMTZkN2Q3ZDBjOTMiLCJzdHVkaW9fbGluayI6Imh0dHBzOi8vc3R1ZGlvLnJlZHVjdG8uYWkvam9iL2NkZGQ2MzVlLTVkMTYtNDYyMS1iZjQ4LTAzMWU3NjM3ZGMwYiIsInVzYWdlIjp7Im51bV9wYWdlcyI6MSwiY3JlZGl0cyI6MS4wLCJjcmVkaXRfYnJlYWtkb3duIjp7InBhZ2UiOjEuMH0sInBhZ2VfYmlsbGluZ19icmVha2Rvd24iOnsiMSI6WyJwYWdlIl19LCJub25fZW1wdHlfY2VsbF9jb3VudCI6bnVsbH0sInJlc3VsdCI6eyJ0eXBlIjoiZnVsbCIsImNodW5rcyI6W3siY29udGVudCI6IiMgVGVzdCBQREYgRmlsZSIsImVtYmVkIjoiIyBUZXN0IFBERiBGaWxlIiwiZW5yaWNoZWQiOm51bGwsImVucmljaG1lbnRfc3VjY2VzcyI6ZmFsc2UsImJsb2NrcyI6W3sidHlwZSI6IlRpdGxlIiwiYmJveCI6eyJsZWZ0IjowLjE2MzUyOTY5Mzg3MzU2ODAzLCJ0b3AiOjAuMTA0OTAyMzc2NjM1MDcwNTYsIndpZHRoIjowLjExODU1NjQwMDc3NDA1NTA4LCJoZWlnaHQiOjAuMDExMzU5MDQ1ODgxNDQyMjIxLCJwYWdlIjoxLCJvcmlnaW5hbF9wYWdlIjoxfSwiY29udGVudCI6IlRlc3QgUERGIEZpbGUiLCJpbWFnZV91cmwiOm51bGwsImNoYXJ0X2RhdGEiOm51bGwsImNvbmZpZGVuY2UiOiJoaWdoIiwiZ3JhbnVsYXJfY29uZmlkZW5jZSI6eyJleHRyYWN0X2NvbmZpZGVuY2UiOm51bGwsInBhcnNlX2NvbmZpZGVuY2UiOjAuNzEyNjcxNTMzMjI2OTY2OX0sImV4dHJhIjpudWxsfV19XSwib2NyIjpudWxsLCJjdXN0b20iOm51bGx9LCJwYXJzZV9tb2RlIjpudWxsLCJkb2N1bWVudF9wcm9wZXJ0aWVzIjpudWxsfQ==",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:57 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:57.246119Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"custom_llm_provider": "reducto",
|
||||
"document": {
|
||||
"document_url": "data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==",
|
||||
"type": "document_url"
|
||||
},
|
||||
"model": "parse-v3"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJmaWxlX2lkIjoicmVkdWN0bzovL2E2ZDNjM2JiLWE2ZjEtNDYzNi04YjNhLWVlOTIwYjI5ZDM4Ny5wZGYiLCJwcmVzaWduZWRfdXJsIjpudWxsfQ==",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:46 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"body_b64": "eyJyZXNwb25zZV90eXBlIjoicGFyc2UiLCJqb2JfaWQiOiI0YTc4Yzk3NS0xODY1LTQ2ZmUtOGY4OS1iZWE5MmE0OWUyMTUiLCJkdXJhdGlvbiI6MS4xMTk0NDI3MDEzMzk3MjE3LCJwZGZfdXJsIjoiaHR0cHM6Ly9wcm9kLXN0b3JhZ2UyMDI0MTAxMDE0NDc0NTE0MDkwMDAwMDAwMS5zMy5hbWF6b25hd3MuY29tL29yZy84YmQ5ODNkMS00N2RkLTQ0MGItOTNkOC00MzE0MTJkODE5YmYvNmFiOWJjZjQtMTg5My00YjM3LWJkZGItYWNkYThjZTQ1ZGZiLnBkZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUEyVU9LNk9WQk9VWUw3V1lBJTJGMjAyNjA5MDElMkZ1cy13ZXN0LTIlMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTAxVDE5NTQ0NVomWC1BbXotRXhwaXJlcz00MzIwMCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmWC1BbXotU2lnbmF0dXJlPTFkYjYxZDMzZjYwMmYxM2U4NDQ0ZTg1ODBiNzM3YjMxZjM0NmU0NzQ5M2NjN2VjYTdjNGZjZGRiZGUwZGZiNDMiLCJzdHVkaW9fbGluayI6Imh0dHBzOi8vc3R1ZGlvLnJlZHVjdG8uYWkvam9iL2QzNDU1NDlmLTVkOTgtNGM2Mi1iM2UzLTI0Yzk5MDE0NGRmNCIsInVzYWdlIjp7Im51bV9wYWdlcyI6MSwiY3JlZGl0cyI6MS4wLCJjcmVkaXRfYnJlYWtkb3duIjp7InBhZ2UiOjEuMH0sInBhZ2VfYmlsbGluZ19icmVha2Rvd24iOnsiMSI6WyJwYWdlIl19LCJub25fZW1wdHlfY2VsbF9jb3VudCI6bnVsbH0sInJlc3VsdCI6eyJ0eXBlIjoiZnVsbCIsImNodW5rcyI6W3siY29udGVudCI6IiMgVGVzdCBQREYgRmlsZSIsImVtYmVkIjoiIyBUZXN0IFBERiBGaWxlIiwiZW5yaWNoZWQiOm51bGwsImVucmljaG1lbnRfc3VjY2VzcyI6ZmFsc2UsImJsb2NrcyI6W3sidHlwZSI6IlRpdGxlIiwiYmJveCI6eyJsZWZ0IjowLjE2MTg5NTc0NTI3MTgyNzQ4LCJ0b3AiOjAuMDk0NzkyOTU1NTM4MTQxMjEsIndpZHRoIjowLjExOTQ2MjkwNjUwODIwODc1LCJoZWlnaHQiOjAuMDIxNDY0MTQzMDE3MTA1MDcsInBhZ2UiOjEsIm9yaWdpbmFsX3BhZ2UiOjF9LCJjb250ZW50IjoiVGVzdCBQREYgRmlsZSIsImltYWdlX3VybCI6bnVsbCwiY2hhcnRfZGF0YSI6bnVsbCwiY29uZmlkZW5jZSI6ImhpZ2giLCJncmFudWxhcl9jb25maWRlbmNlIjp7ImV4dHJhY3RfY29uZmlkZW5jZSI6bnVsbCwicGFyc2VfY29uZmlkZW5jZSI6MC43MTg1MzU1NjkzMTAxODgyfSwiZXh0cmEiOm51bGx9XX1dLCJvY3IiOm51bGwsImN1c3RvbSI6bnVsbH0sInBhcnNlX21vZGUiOm51bGwsImRvY3VtZW50X3Byb3BlcnRpZXMiOm51bGx9",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:47 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:47.967951Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"custom_llm_provider": null,
|
||||
"document": {
|
||||
"document_url": "data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==",
|
||||
"type": "document_url"
|
||||
},
|
||||
"formatting": {
|
||||
"add_page_markers": true,
|
||||
"include": [
|
||||
"change_tracking",
|
||||
"highlight",
|
||||
"comments"
|
||||
],
|
||||
"merge_tables": true,
|
||||
"table_output_format": "json"
|
||||
},
|
||||
"model": "reducto/parse-v3"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJmaWxlX2lkIjoicmVkdWN0bzovL2Y4YmYxN2U4LWNhMGItNGFkZC1iNDg0LTk5ODJkMmU0YWMyYS5wZGYiLCJwcmVzaWduZWRfdXJsIjpudWxsfQ==",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:50 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"body_b64": "eyJyZXNwb25zZV90eXBlIjoicGFyc2UiLCJqb2JfaWQiOiJlMzc5MjM4Ny04Mzg0LTQ1YWEtYjAyZS1hODQ1MjFkYjExNmEiLCJkdXJhdGlvbiI6MS4wNDk3MzYyNjEzNjc3OTc5LCJwZGZfdXJsIjoiaHR0cHM6Ly9wcm9kLXN0b3JhZ2UyMDI0MTAxMDE0NDc0NTE0MDkwMDAwMDAwMS5zMy5hbWF6b25hd3MuY29tL29yZy84YmQ5ODNkMS00N2RkLTQ0MGItOTNkOC00MzE0MTJkODE5YmYvZjhiZjE3ZTgtY2EwYi00YWRkLWI0ODQtOTk4MmQyZTRhYzJhLnBkZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUEyVU9LNk9WQk9VWUw3V1lBJTJGMjAyNjA5MDElMkZ1cy13ZXN0LTIlMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTAxVDE5NTQ1MlomWC1BbXotRXhwaXJlcz00MzIwMCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmWC1BbXotU2lnbmF0dXJlPTczNjcyNzVhNjlkZmQ1M2Y5ZmNmOWYwMjc3N2YwZmU5NzNlN2U1NDFmYTE4NzFlMDM0N2Y3ODhiOGM1MDc4ZjQiLCJzdHVkaW9fbGluayI6Imh0dHBzOi8vc3R1ZGlvLnJlZHVjdG8uYWkvam9iL2UzNzkyMzg3LTgzODQtNDVhYS1iMDJlLWE4NDUyMWRiMTE2YSIsInVzYWdlIjp7Im51bV9wYWdlcyI6MSwiY3JlZGl0cyI6MS4wLCJjcmVkaXRfYnJlYWtkb3duIjp7InBhZ2UiOjEuMH0sInBhZ2VfYmlsbGluZ19icmVha2Rvd24iOnsiMSI6WyJwYWdlIl19LCJub25fZW1wdHlfY2VsbF9jb3VudCI6bnVsbH0sInJlc3VsdCI6eyJ0eXBlIjoiZnVsbCIsImNodW5rcyI6W3siY29udGVudCI6IltbU1RBUlQgT0YgUEFHRSAxXV1cblxuIyBUZXN0IFBERiBGaWxlXG5cbltbRU5EIE9GIFBBR0UgMV1dIiwiZW1iZWQiOiJbW1NUQVJUIE9GIFBBR0UgMV1dXG5cbiMgVGVzdCBQREYgRmlsZVxuXG5bW0VORCBPRiBQQUdFIDFdXSIsImVucmljaGVkIjpudWxsLCJlbnJpY2htZW50X3N1Y2Nlc3MiOmZhbHNlLCJibG9ja3MiOlt7InR5cGUiOiJQYWdlIE51bWJlciIsImJib3giOnsibGVmdCI6MC4wLCJ0b3AiOjAuMCwid2lkdGgiOjAuMCwiaGVpZ2h0IjowLjAsInBhZ2UiOjEsIm9yaWdpbmFsX3BhZ2UiOjF9LCJjb250ZW50IjoiW1tTVEFSVCBPRiBQQUdFIDFdXSIsImltYWdlX3VybCI6bnVsbCwiY2hhcnRfZGF0YSI6bnVsbCwiY29uZmlkZW5jZSI6ImhpZ2giLCJncmFudWxhcl9jb25maWRlbmNlIjp7ImV4dHJhY3RfY29uZmlkZW5jZSI6bnVsbCwicGFyc2VfY29uZmlkZW5jZSI6bnVsbH0sImV4dHJhIjpudWxsfSx7InR5cGUiOiJUaXRsZSIsImJib3giOnsibGVmdCI6MC4xNjE4OTU3NDUyNzE4Mjc0OCwidG9wIjowLjA5NDc5Mjk1NTUzODE0MTIxLCJ3aWR0aCI6MC4xMTk0NjI5MDY1MDgyMDg3NSwiaGVpZ2h0IjowLjAyMTQ2NDE0MzAxNzEwNTA3LCJwYWdlIjoxLCJvcmlnaW5hbF9wYWdlIjoxfSwiY29udGVudCI6IlRlc3QgUERGIEZpbGUiLCJpbWFnZV91cmwiOm51bGwsImNoYXJ0X2RhdGEiOm51bGwsImNvbmZpZGVuY2UiOiJoaWdoIiwiZ3JhbnVsYXJfY29uZmlkZW5jZSI6eyJleHRyYWN0X2NvbmZpZGVuY2UiOm51bGwsInBhcnNlX2NvbmZpZGVuY2UiOjAuNzE4NTM1NTY5MzEwMTg4Mn0sImV4dHJhIjpudWxsfSx7InR5cGUiOiJQYWdlIE51bWJlciIsImJib3giOnsibGVmdCI6MC4wLCJ0b3AiOjAuMCwid2lkdGgiOjAuMCwiaGVpZ2h0IjowLjAsInBhZ2UiOjEsIm9yaWdpbmFsX3BhZ2UiOjF9LCJjb250ZW50IjoiW1tFTkQgT0YgUEFHRSAxXV0iLCJpbWFnZV91cmwiOm51bGwsImNoYXJ0X2RhdGEiOm51bGwsImNvbmZpZGVuY2UiOiJoaWdoIiwiZ3JhbnVsYXJfY29uZmlkZW5jZSI6eyJleHRyYWN0X2NvbmZpZGVuY2UiOm51bGwsInBhcnNlX2NvbmZpZGVuY2UiOm51bGx9LCJleHRyYSI6bnVsbH1dfV0sIm9jciI6bnVsbCwiY3VzdG9tIjpudWxsfSwicGFyc2VfbW9kZSI6bnVsbCwiZG9jdW1lbnRfcHJvcGVydGllcyI6bnVsbH0=",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:52 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:53.454592Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: "--3c37fd2676c46ae1ff34a706baa70fad\r\nContent-Disposition: form-data; name=\"file\";
|
||||
filename=\"document\"\r\nContent-Type: application/pdf\r\n\r\n%PDF-1.4\n1 0
|
||||
obj\n<< /Type /Catalog /Pages 2 0 R >>\nendobj\n2 0 obj\n<< /Type /Pages /Kids
|
||||
[3 0 R] /Count 1 >>\nendobj\n3 0 obj\n<< /Type /Page /Parent 2 0 R /Resources
|
||||
4 0 R /MediaBox [0 0 612 792] /Contents 5 0 R >>\nendobj\n4 0 obj\n<< /Font
|
||||
<< /F1 << /Type /Font /Subtype /Type1 /BaseFont /Helvetica >> >> >>\nendobj\n5
|
||||
0 obj\n<< /Length 44 >>\nstream\nBT\n/F1 12 Tf\n100 700 Td\n(Test PDF File)
|
||||
Tj\nET\nendstream\nendobj\nxref\n0 6\n0000000000 65535 f \n0000000009 00000
|
||||
n \n0000000058 00000 n \n0000000115 00000 n \n0000000214 00000 n \n0000000293
|
||||
00000 n \ntrailer\n<< /Size 6 /Root 1 0 R >>\nstartxref\n385\n%%EOF\n\r\n--3c37fd2676c46ae1ff34a706baa70fad--\r\n"
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- multipart/form-data; boundary=3c37fd2676c46ae1ff34a706baa70fad
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/upload
|
||||
response:
|
||||
body:
|
||||
string: '{"file_id":"reducto://671d6e00-6df5-493a-bd9e-8bbf3d77d3ab.pdf","presigned_url":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:36 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
- request:
|
||||
body: '{"input":"reducto://671d6e00-6df5-493a-bd9e-8bbf3d77d3ab.pdf","retrieval":{"chunking":{"chunk_mode":"page"}}}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/parse
|
||||
response:
|
||||
body:
|
||||
string: '{"response_type":"parse","job_id":"8f15b6dd-f2d2-48e2-a4c9-0230a9ace704","duration":3.7510643005371094,"pdf_url":"https://prod-storage20241010144745140900000001.s3.amazonaws.com/org/8bd983d1-47dd-440b-93d8-431412d819bf/671d6e00-6df5-493a-bd9e-8bbf3d77d3ab.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA2UOK6OVBOUYL7WYA%2F20260901%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260901T195440Z&X-Amz-Expires=43200&X-Amz-SignedHeaders=host&X-Amz-Signature=96a4f904e8d3ca58d399ab21ade69ec0ea62ff5dfee320c5eeaa6eaa0c4e0561","studio_link":"https://studio.reducto.ai/job/8f15b6dd-f2d2-48e2-a4c9-0230a9ace704","usage":{"num_pages":1,"credits":1.0,"credit_breakdown":{"page":1.0},"page_billing_breakdown":{"1":["page"]},"non_empty_cell_count":null},"result":{"type":"full","chunks":[{"content":"#
|
||||
Test PDF File","embed":"# Test PDF File","enriched":null,"enrichment_success":false,"blocks":[{"type":"Title","bbox":{"left":0.16189574527182748,"top":0.09479295553814121,"width":0.11946290650820875,"height":0.02146414301710507,"page":1,"original_page":1},"content":"Test
|
||||
PDF File","image_url":null,"chart_data":null,"confidence":"high","granular_confidence":{"extract_confidence":null,"parse_confidence":0.7185355693101882},"extra":null}]}],"ocr":null,"custom":null},"parse_mode":null,"document_properties":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:40 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:41.233002+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: reducto_v3
|
||||
document:
|
||||
document_url: data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==
|
||||
type: document_url
|
||||
model: reducto/parse-v3
|
||||
retrieval:
|
||||
chunking:
|
||||
chunk_mode: page
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"document_url": "data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==",
|
||||
"type": "document_url"
|
||||
},
|
||||
"model": "reducto/parse-v3",
|
||||
"settings": {
|
||||
"return_ocr_data": true
|
||||
}
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJmaWxlX2lkIjoicmVkdWN0bzovL2ZjNmViY2IxLTk1ZDQtNDZlYy05MGQwLWVmY2EzM2VmMTk3Zi5wZGYiLCJwcmVzaWduZWRfdXJsIjpudWxsfQ==",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:41 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"body_b64": "eyJyZXNwb25zZV90eXBlIjoicGFyc2UiLCJqb2JfaWQiOiIzZjZlZjY0ZC1jOTQ5LTRiOGQtOTg5OC1hZmIzYjAxNjY5ZTYiLCJkdXJhdGlvbiI6MS40NDgwNzQzNDA4MjAzMTI1LCJwZGZfdXJsIjoiaHR0cHM6Ly9wcm9kLXN0b3JhZ2UyMDI0MTAxMDE0NDc0NTE0MDkwMDAwMDAwMS5zMy5hbWF6b25hd3MuY29tL29yZy84YmQ5ODNkMS00N2RkLTQ0MGItOTNkOC00MzE0MTJkODE5YmYvZmM2ZWJjYjEtOTVkNC00NmVjLTkwZDAtZWZjYTMzZWYxOTdmLnBkZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUEyVU9LNk9WQk9VWUw3V1lBJTJGMjAyNjA5MDElMkZ1cy13ZXN0LTIlMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTAxVDE5NTQ0M1omWC1BbXotRXhwaXJlcz00MzIwMCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmWC1BbXotU2lnbmF0dXJlPTA5NjVjYTEyOWNlZTQ5YTQxNjUwZGYxNTIwNTdhMTdhNGY5ZTI2NWY5MmYyMjYxYTRmNjU3NjU4NzI3MmViMDMiLCJzdHVkaW9fbGluayI6Imh0dHBzOi8vc3R1ZGlvLnJlZHVjdG8uYWkvam9iLzNmNmVmNjRkLWM5NDktNGI4ZC05ODk4LWFmYjNiMDE2NjllNiIsInVzYWdlIjp7Im51bV9wYWdlcyI6MSwiY3JlZGl0cyI6MS4wLCJjcmVkaXRfYnJlYWtkb3duIjp7InBhZ2UiOjEuMH0sInBhZ2VfYmlsbGluZ19icmVha2Rvd24iOnsiMSI6WyJwYWdlIl19LCJub25fZW1wdHlfY2VsbF9jb3VudCI6bnVsbH0sInJlc3VsdCI6eyJ0eXBlIjoiZnVsbCIsImNodW5rcyI6W3siY29udGVudCI6IiMgVGVzdCBQREYgRmlsZSIsImVtYmVkIjoiIyBUZXN0IFBERiBGaWxlIiwiZW5yaWNoZWQiOm51bGwsImVucmljaG1lbnRfc3VjY2VzcyI6ZmFsc2UsImJsb2NrcyI6W3sidHlwZSI6IlRpdGxlIiwiYmJveCI6eyJsZWZ0IjowLjE2MTg5NTc0NTI3MTgyNzQ4LCJ0b3AiOjAuMDk0NzkyOTU1NTM4MTQxMjEsIndpZHRoIjowLjExOTQ2MjkwNjUwODIwODc1LCJoZWlnaHQiOjAuMDIxNDY0MTQzMDE3MTA1MDcsInBhZ2UiOjEsIm9yaWdpbmFsX3BhZ2UiOjF9LCJjb250ZW50IjoiVGVzdCBQREYgRmlsZSIsImltYWdlX3VybCI6bnVsbCwiY2hhcnRfZGF0YSI6bnVsbCwiY29uZmlkZW5jZSI6ImhpZ2giLCJncmFudWxhcl9jb25maWRlbmNlIjp7ImV4dHJhY3RfY29uZmlkZW5jZSI6bnVsbCwicGFyc2VfY29uZmlkZW5jZSI6MC43MTg1MzU1NjkzMTAxODgyfSwiZXh0cmEiOm51bGx9XX1dLCJvY3IiOnsid29yZHMiOlt7InRleHQiOiJUZXN0IiwiYmJveCI6eyJsZWZ0IjowLjE2MTg5NDc1NDY0NjY1MDMyLCJ0b3AiOjAuMDk0OTE5MjE0MzQ0OTg3OTcsIndpZHRoIjowLjAzODMyMDg5MDQzOTEwMjA3LCJoZWlnaHQiOjAuMDIxMDE5NTMxMDE4ODA2MjI1LCJwYWdlIjoxLCJvcmlnaW5hbF9wYWdlIjoxfSwiY29uZmlkZW5jZSI6MS4wLCJjaHVua19pbmRleCI6bnVsbCwicm90YXRpb24iOjM1OX0seyJ0ZXh0IjoiUERGIiwiYmJveCI6eyJsZWZ0IjowLjIwNTQ4MTk1OTMyNDI1NzA2LCJ0b3AiOjAuMDk1MTQ5OTA3MTk4ODE5MjQsIndpZHRoIjowLjAzOTM5OTI5MDM5NjQ5NzE0LCJoZWlnaHQiOjAuMDIxMDI1MjQzNDMxNjMwNzYsInBhZ2UiOjEsIm9yaWdpbmFsX3BhZ2UiOjF9LCJjb25maWRlbmNlIjoxLjAsImNodW5rX2luZGV4IjpudWxsLCJyb3RhdGlvbiI6MzU5fSx7InRleHQiOiJGaWxlIiwiYmJveCI6eyJsZWZ0IjowLjI1MDE0NzU3NjQyNTU4OTc3LCJ0b3AiOjAuMDk1Mzg2MzAyODMyNDAxMTUsIndpZHRoIjowLjAzMTc3MjAxNTE0MTUwNTgyLCJoZWlnaHQiOjAuMDIwOTg0ODcxMjE4OTAyODk1LCJwYWdlIjoxLCJvcmlnaW5hbF9wYWdlIjoxfSwiY29uZmlkZW5jZSI6MS4wLCJjaHVua19pbmRleCI6bnVsbCwicm90YXRpb24iOjM1OX1dLCJsaW5lcyI6W3sidGV4dCI6IlRlc3QgUERGIEZpbGUiLCJiYm94Ijp7ImxlZnQiOjAuMTYxODk0NzU0NjQ2NjUwMzIsInRvcCI6MC4wOTQ5MTkyMTQzNDQ5ODc5Nywid2lkdGgiOjAuMTIwMDI0ODM2OTIwNDQ1MjYsImhlaWdodCI6MC4wMjE0NTE5NTk3MDYzMTYwOTIsInBhZ2UiOjEsIm9yaWdpbmFsX3BhZ2UiOjF9LCJjb25maWRlbmNlIjoxLjAsImNodW5rX2luZGV4IjpudWxsLCJyb3RhdGlvbiI6MzU5fV19LCJjdXN0b20iOm51bGx9LCJwYXJzZV9tb2RlIjpudWxsLCJkb2N1bWVudF9wcm9wZXJ0aWVzIjpudWxsfQ==",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:43 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:43.968997Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: "--43159c32150fa5f506932c4b4a645ef6\r\nContent-Disposition: form-data; name=\"file\";
|
||||
filename=\"document\"\r\nContent-Type: application/pdf\r\n\r\n%PDF-1.4\n1 0
|
||||
obj\n<< /Type /Catalog /Pages 2 0 R >>\nendobj\n2 0 obj\n<< /Type /Pages /Kids
|
||||
[3 0 R] /Count 1 >>\nendobj\n3 0 obj\n<< /Type /Page /Parent 2 0 R /Resources
|
||||
4 0 R /MediaBox [0 0 612 792] /Contents 5 0 R >>\nendobj\n4 0 obj\n<< /Font
|
||||
<< /F1 << /Type /Font /Subtype /Type1 /BaseFont /Helvetica >> >> >>\nendobj\n5
|
||||
0 obj\n<< /Length 44 >>\nstream\nBT\n/F1 12 Tf\n100 700 Td\n(Test PDF File)
|
||||
Tj\nET\nendstream\nendobj\nxref\n0 6\n0000000000 65535 f \n0000000009 00000
|
||||
n \n0000000058 00000 n \n0000000115 00000 n \n0000000214 00000 n \n0000000293
|
||||
00000 n \ntrailer\n<< /Size 6 /Root 1 0 R >>\nstartxref\n385\n%%EOF\n\r\n--43159c32150fa5f506932c4b4a645ef6--\r\n"
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- multipart/form-data; boundary=43159c32150fa5f506932c4b4a645ef6
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/upload
|
||||
response:
|
||||
body:
|
||||
string: '{"file_id":"reducto://f8bf17e8-ca0b-4add-b484-9982d2e4ac2a.pdf","presigned_url":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:50 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
- request:
|
||||
body: '{"input":"reducto://f8bf17e8-ca0b-4add-b484-9982d2e4ac2a.pdf","formatting":{"add_page_markers":true,"table_output_format":"json","merge_tables":true,"include":["change_tracking","highlight","comments"]}}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/parse
|
||||
response:
|
||||
body:
|
||||
string: '{"response_type":"parse","job_id":"e3792387-8384-45aa-b02e-a84521db116a","duration":1.0497362613677979,"pdf_url":"https://prod-storage20241010144745140900000001.s3.amazonaws.com/org/8bd983d1-47dd-440b-93d8-431412d819bf/f8bf17e8-ca0b-4add-b484-9982d2e4ac2a.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA2UOK6OVBOUYL7WYA%2F20260901%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260901T195452Z&X-Amz-Expires=43200&X-Amz-SignedHeaders=host&X-Amz-Signature=7367275a69dfd53f9fcf9f02777f0fe973e7e541fa1871e0347f788b8c5078f4","studio_link":"https://studio.reducto.ai/job/e3792387-8384-45aa-b02e-a84521db116a","usage":{"num_pages":1,"credits":1.0,"credit_breakdown":{"page":1.0},"page_billing_breakdown":{"1":["page"]},"non_empty_cell_count":null},"result":{"type":"full","chunks":[{"content":"[[START
|
||||
OF PAGE 1]]\n\n# Test PDF File\n\n[[END OF PAGE 1]]","embed":"[[START OF PAGE
|
||||
1]]\n\n# Test PDF File\n\n[[END OF PAGE 1]]","enriched":null,"enrichment_success":false,"blocks":[{"type":"Page
|
||||
Number","bbox":{"left":0.0,"top":0.0,"width":0.0,"height":0.0,"page":1,"original_page":1},"content":"[[START
|
||||
OF PAGE 1]]","image_url":null,"chart_data":null,"confidence":"high","granular_confidence":{"extract_confidence":null,"parse_confidence":null},"extra":null},{"type":"Title","bbox":{"left":0.16189574527182748,"top":0.09479295553814121,"width":0.11946290650820875,"height":0.02146414301710507,"page":1,"original_page":1},"content":"Test
|
||||
PDF File","image_url":null,"chart_data":null,"confidence":"high","granular_confidence":{"extract_confidence":null,"parse_confidence":0.7185355693101882},"extra":null},{"type":"Page
|
||||
Number","bbox":{"left":0.0,"top":0.0,"width":0.0,"height":0.0,"page":1,"original_page":1},"content":"[[END
|
||||
OF PAGE 1]]","image_url":null,"chart_data":null,"confidence":"high","granular_confidence":{"extract_confidence":null,"parse_confidence":null},"extra":null}]}],"ocr":null,"custom":null},"parse_mode":null,"document_properties":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:52 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:53.454592+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: reducto_v3
|
||||
custom_llm_provider: null
|
||||
document:
|
||||
document_url: data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==
|
||||
type: document_url
|
||||
formatting:
|
||||
add_page_markers: true
|
||||
include:
|
||||
- change_tracking
|
||||
- highlight
|
||||
- comments
|
||||
merge_tables: true
|
||||
table_output_format: json
|
||||
model: reducto/parse-v3
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"document_url": "data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==",
|
||||
"type": "document_url"
|
||||
},
|
||||
"model": "reducto/parse-v3"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJmaWxlX2lkIjoicmVkdWN0bzovLzAxMGIwMWIyLTgzYmQtNDQ2ZC1hZjExLWQxMjBjNWFjMmMwMi5wZGYiLCJwcmVzaWduZWRfdXJsIjpudWxsfQ==",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:27 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"body_b64": "eyJyZXNwb25zZV90eXBlIjoicGFyc2UiLCJqb2JfaWQiOiI4MTM4YTZjNi1iNzI2LTQzMDAtOTBiNC1lNmQ1ZDQzZjZmNzAiLCJkdXJhdGlvbiI6MS4yNjQ4MjcyNTE0MzQzMjYyLCJwZGZfdXJsIjoiaHR0cHM6Ly9wcm9kLXN0b3JhZ2UyMDI0MTAxMDE0NDc0NTE0MDkwMDAwMDAwMS5zMy5hbWF6b25hd3MuY29tL29yZy84YmQ5ODNkMS00N2RkLTQ0MGItOTNkOC00MzE0MTJkODE5YmYvMDEwYjAxYjItODNiZC00NDZkLWFmMTEtZDEyMGM1YWMyYzAyLnBkZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUEyVU9LNk9WQk9VWUw3V1lBJTJGMjAyNjA5MDElMkZ1cy13ZXN0LTIlMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTAxVDE5NTQyOFomWC1BbXotRXhwaXJlcz00MzIwMCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmWC1BbXotU2lnbmF0dXJlPTNjZGE5MDIwZmVmZmY4NWQ5ZGQxM2YxMjQ5MDhkN2IwMGU1NWI2ZTgyYTcyMDM5NTQ2ZDI2MjA5OWNmY2YzYjQiLCJzdHVkaW9fbGluayI6Imh0dHBzOi8vc3R1ZGlvLnJlZHVjdG8uYWkvam9iLzgxMzhhNmM2LWI3MjYtNDMwMC05MGI0LWU2ZDVkNDNmNmY3MCIsInVzYWdlIjp7Im51bV9wYWdlcyI6MSwiY3JlZGl0cyI6MS4wLCJjcmVkaXRfYnJlYWtkb3duIjp7InBhZ2UiOjEuMH0sInBhZ2VfYmlsbGluZ19icmVha2Rvd24iOnsiMSI6WyJwYWdlIl19LCJub25fZW1wdHlfY2VsbF9jb3VudCI6bnVsbH0sInJlc3VsdCI6eyJ0eXBlIjoiZnVsbCIsImNodW5rcyI6W3siY29udGVudCI6IiMgVGVzdCBQREYgRmlsZSIsImVtYmVkIjoiIyBUZXN0IFBERiBGaWxlIiwiZW5yaWNoZWQiOm51bGwsImVucmljaG1lbnRfc3VjY2VzcyI6ZmFsc2UsImJsb2NrcyI6W3sidHlwZSI6IlRpdGxlIiwiYmJveCI6eyJsZWZ0IjowLjE2MTg5NTc0NTI3MTgyNzQ4LCJ0b3AiOjAuMDk0NzkyOTU1NTM4MTQxMjEsIndpZHRoIjowLjExOTQ2MjkwNjUwODIwODc1LCJoZWlnaHQiOjAuMDIxNDY0MTQzMDE3MTA1MDcsInBhZ2UiOjEsIm9yaWdpbmFsX3BhZ2UiOjF9LCJjb250ZW50IjoiVGVzdCBQREYgRmlsZSIsImltYWdlX3VybCI6bnVsbCwiY2hhcnRfZGF0YSI6bnVsbCwiY29uZmlkZW5jZSI6ImhpZ2giLCJncmFudWxhcl9jb25maWRlbmNlIjp7ImV4dHJhY3RfY29uZmlkZW5jZSI6bnVsbCwicGFyc2VfY29uZmlkZW5jZSI6MC43MTg1MzU1NjkzMTAxODgyfSwiZXh0cmEiOm51bGx9XX1dLCJvY3IiOm51bGwsImN1c3RvbSI6bnVsbH0sInBhcnNlX21vZGUiOm51bGwsImRvY3VtZW50X3Byb3BlcnRpZXMiOm51bGx9",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:29 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:30.255600Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -1,82 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"custom_llm_provider": null,
|
||||
"document": {
|
||||
"document_url": "data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==",
|
||||
"type": "document_url"
|
||||
},
|
||||
"formatting": {
|
||||
"add_page_markers": false,
|
||||
"include": [
|
||||
"signatures",
|
||||
"ignore_watermarks"
|
||||
],
|
||||
"merge_tables": true,
|
||||
"table_output_format": "json"
|
||||
},
|
||||
"model": "reducto/parse-v3",
|
||||
"retrieval": {
|
||||
"chunking": {
|
||||
"chunk_mode": "variable",
|
||||
"chunk_overlap": 32,
|
||||
"chunk_size": 1500
|
||||
},
|
||||
"embedding_optimized": false,
|
||||
"filter_blocks": [
|
||||
"Figure",
|
||||
"Table",
|
||||
"Key Value"
|
||||
]
|
||||
},
|
||||
"settings": {
|
||||
"embed_pdf_metadata": false,
|
||||
"embed_pdf_metadata_dpi": 100,
|
||||
"extraction_mode": "hybrid",
|
||||
"force_url_result": false,
|
||||
"ocr_system": "legacy",
|
||||
"page_range": [
|
||||
1
|
||||
],
|
||||
"persist_results": false,
|
||||
"return_images": [],
|
||||
"return_ocr_data": false,
|
||||
"timeout": 900.0
|
||||
}
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJmaWxlX2lkIjoicmVkdWN0bzovLzVkZjc0NWY0LTI4NzctNGNmNi05YmRlLWEyZjgyOWM5M2VlYS5wZGYiLCJwcmVzaWduZWRfdXJsIjpudWxsfQ==",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:48 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"body_b64": "eyJyZXNwb25zZV90eXBlIjoicGFyc2UiLCJqb2JfaWQiOiI3Y2E2NzI0Mi0xNjc3LTQ4NGUtYjJlZi1iMjU2ZGNkZDFlYTQiLCJkdXJhdGlvbiI6MS4zMzU5MzA4MjQyNzk3ODUyLCJwZGZfdXJsIjoiaHR0cHM6Ly9wcm9kLXN0b3JhZ2UyMDI0MTAxMDE0NDc0NTE0MDkwMDAwMDAwMS5zMy5hbWF6b25hd3MuY29tL29yZy84YmQ5ODNkMS00N2RkLTQ0MGItOTNkOC00MzE0MTJkODE5YmYvNWRmNzQ1ZjQtMjg3Ny00Y2Y2LTliZGUtYTJmODI5YzkzZWVhLnBkZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUEyVU9LNk9WQk9VWUw3V1lBJTJGMjAyNjA5MDElMkZ1cy13ZXN0LTIlMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTAxVDE5NTQ0OVomWC1BbXotRXhwaXJlcz00MzIwMCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmWC1BbXotU2lnbmF0dXJlPTA3N2E2NTUxMjAxZDI1NjJmZDE1NDNmZDVjMzkxNTQxY2ZmZTYwNmQ2NDMwN2EzZjZkMTAzY2YxODIxOWY4MGEiLCJzdHVkaW9fbGluayI6Imh0dHBzOi8vc3R1ZGlvLnJlZHVjdG8uYWkvam9iLzdjYTY3MjQyLTE2NzctNDg0ZS1iMmVmLWIyNTZkY2RkMWVhNCIsInVzYWdlIjp7Im51bV9wYWdlcyI6MSwiY3JlZGl0cyI6MS4wLCJjcmVkaXRfYnJlYWtkb3duIjp7InBhZ2UiOjEuMH0sInBhZ2VfYmlsbGluZ19icmVha2Rvd24iOnsiMSI6WyJwYWdlIl19LCJub25fZW1wdHlfY2VsbF9jb3VudCI6bnVsbH0sInJlc3VsdCI6eyJ0eXBlIjoiZnVsbCIsImNodW5rcyI6W3siY29udGVudCI6IiMgVGVzdCBQREYgRmlsZSIsImVtYmVkIjoiIyBUZXN0IFBERiBGaWxlIiwiZW5yaWNoZWQiOm51bGwsImVucmljaG1lbnRfc3VjY2VzcyI6ZmFsc2UsImJsb2NrcyI6W3sidHlwZSI6IlRpdGxlIiwiYmJveCI6eyJsZWZ0IjowLjE2MTg5NTc0NTI3MTgyNzQ4LCJ0b3AiOjAuMDk0NzkyOTU1NTM4MTQxMjEsIndpZHRoIjowLjExOTQ2MjkwNjUwODIwODc1LCJoZWlnaHQiOjAuMDIxNDY0MTQzMDE3MTA1MDcsInBhZ2UiOjEsIm9yaWdpbmFsX3BhZ2UiOjF9LCJjb250ZW50IjoiVGVzdCBQREYgRmlsZSIsImltYWdlX3VybCI6bnVsbCwiY2hhcnRfZGF0YSI6bnVsbCwiY29uZmlkZW5jZSI6ImhpZ2giLCJncmFudWxhcl9jb25maWRlbmNlIjp7ImV4dHJhY3RfY29uZmlkZW5jZSI6bnVsbCwicGFyc2VfY29uZmlkZW5jZSI6MC43MTg1MzU1NjkzMTAxODgyfSwiZXh0cmEiOm51bGx9XX1dLCJvY3IiOm51bGwsImN1c3RvbSI6bnVsbH0sInBhcnNlX21vZGUiOm51bGwsImRvY3VtZW50X3Byb3BlcnRpZXMiOm51bGx9",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:50 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:50.708637Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: "--ba392e7bb7694af286b0acfe46365a0f\r\nContent-Disposition: form-data; name=\"file\";
|
||||
filename=\"document\"\r\nContent-Type: application/pdf\r\n\r\n%PDF-1.4\n1 0
|
||||
obj\n<< /Type /Catalog /Pages 2 0 R >>\nendobj\n2 0 obj\n<< /Type /Pages /Kids
|
||||
[3 0 R] /Count 1 >>\nendobj\n3 0 obj\n<< /Type /Page /Parent 2 0 R /Resources
|
||||
4 0 R /MediaBox [0 0 612 792] /Contents 5 0 R >>\nendobj\n4 0 obj\n<< /Font
|
||||
<< /F1 << /Type /Font /Subtype /Type1 /BaseFont /Helvetica >> >> >>\nendobj\n5
|
||||
0 obj\n<< /Length 44 >>\nstream\nBT\n/F1 12 Tf\n100 700 Td\n(Test PDF File)
|
||||
Tj\nET\nendstream\nendobj\nxref\n0 6\n0000000000 65535 f \n0000000009 00000
|
||||
n \n0000000058 00000 n \n0000000115 00000 n \n0000000214 00000 n \n0000000293
|
||||
00000 n \ntrailer\n<< /Size 6 /Root 1 0 R >>\nstartxref\n385\n%%EOF\n\r\n--ba392e7bb7694af286b0acfe46365a0f--\r\n"
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- multipart/form-data; boundary=ba392e7bb7694af286b0acfe46365a0f
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/upload
|
||||
response:
|
||||
body:
|
||||
string: '{"file_id":"reducto://a6d3c3bb-a6f1-4636-8b3a-ee920b29d387.pdf","presigned_url":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:46 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
- request:
|
||||
body: '{"input":"reducto://a6d3c3bb-a6f1-4636-8b3a-ee920b29d387.pdf"}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/parse
|
||||
response:
|
||||
body:
|
||||
string: '{"response_type":"parse","job_id":"4a78c975-1865-46fe-8f89-bea92a49e215","duration":1.1194427013397217,"pdf_url":"https://prod-storage20241010144745140900000001.s3.amazonaws.com/org/8bd983d1-47dd-440b-93d8-431412d819bf/6ab9bcf4-1893-4b37-bddb-acda8ce45dfb.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA2UOK6OVBOUYL7WYA%2F20260901%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260901T195445Z&X-Amz-Expires=43200&X-Amz-SignedHeaders=host&X-Amz-Signature=1db61d33f602f13e8444e8580b737b31f346e47493cc7eca7c4fcddbde0dfb43","studio_link":"https://studio.reducto.ai/job/d345549f-5d98-4c62-b3e3-24c990144df4","usage":{"num_pages":1,"credits":1.0,"credit_breakdown":{"page":1.0},"page_billing_breakdown":{"1":["page"]},"non_empty_cell_count":null},"result":{"type":"full","chunks":[{"content":"#
|
||||
Test PDF File","embed":"# Test PDF File","enriched":null,"enrichment_success":false,"blocks":[{"type":"Title","bbox":{"left":0.16189574527182748,"top":0.09479295553814121,"width":0.11946290650820875,"height":0.02146414301710507,"page":1,"original_page":1},"content":"Test
|
||||
PDF File","image_url":null,"chart_data":null,"confidence":"high","granular_confidence":{"extract_confidence":null,"parse_confidence":0.7185355693101882},"extra":null}]}],"ocr":null,"custom":null},"parse_mode":null,"document_properties":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:47 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:47.967951+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: reducto_v3
|
||||
custom_llm_provider: reducto
|
||||
document:
|
||||
document_url: data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==
|
||||
type: document_url
|
||||
model: parse-v3
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: "--0f6127f8c781afd158616115a5ebdece\r\nContent-Disposition: form-data; name=\"file\";
|
||||
filename=\"document\"\r\nContent-Type: application/pdf\r\n\r\n%PDF-1.4\n1 0
|
||||
obj\n<< /Type /Catalog /Pages 2 0 R >>\nendobj\n2 0 obj\n<< /Type /Pages /Kids
|
||||
[3 0 R] /Count 1 >>\nendobj\n3 0 obj\n<< /Type /Page /Parent 2 0 R /Resources
|
||||
4 0 R /MediaBox [0 0 612 792] /Contents 5 0 R >>\nendobj\n4 0 obj\n<< /Font
|
||||
<< /F1 << /Type /Font /Subtype /Type1 /BaseFont /Helvetica >> >> >>\nendobj\n5
|
||||
0 obj\n<< /Length 44 >>\nstream\nBT\n/F1 12 Tf\n100 700 Td\n(Test PDF File)
|
||||
Tj\nET\nendstream\nendobj\nxref\n0 6\n0000000000 65535 f \n0000000009 00000
|
||||
n \n0000000058 00000 n \n0000000115 00000 n \n0000000214 00000 n \n0000000293
|
||||
00000 n \ntrailer\n<< /Size 6 /Root 1 0 R >>\nstartxref\n385\n%%EOF\n\r\n--0f6127f8c781afd158616115a5ebdece--\r\n"
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- multipart/form-data; boundary=0f6127f8c781afd158616115a5ebdece
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/upload
|
||||
response:
|
||||
body:
|
||||
string: '{"file_id":"reducto://6ab9bcf4-1893-4b37-bddb-acda8ce45dfb.pdf","presigned_url":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:44 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
- request:
|
||||
body: '{"input":"reducto://6ab9bcf4-1893-4b37-bddb-acda8ce45dfb.pdf"}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/parse
|
||||
response:
|
||||
body:
|
||||
string: '{"response_type":"parse","job_id":"d345549f-5d98-4c62-b3e3-24c990144df4","duration":1.1194427013397217,"pdf_url":"https://prod-storage20241010144745140900000001.s3.amazonaws.com/org/8bd983d1-47dd-440b-93d8-431412d819bf/6ab9bcf4-1893-4b37-bddb-acda8ce45dfb.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA2UOK6OVBOUYL7WYA%2F20260901%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260901T195445Z&X-Amz-Expires=43200&X-Amz-SignedHeaders=host&X-Amz-Signature=1db61d33f602f13e8444e8580b737b31f346e47493cc7eca7c4fcddbde0dfb43","studio_link":"https://studio.reducto.ai/job/d345549f-5d98-4c62-b3e3-24c990144df4","usage":{"num_pages":1,"credits":1.0,"credit_breakdown":{"page":1.0},"page_billing_breakdown":{"1":["page"]},"non_empty_cell_count":null},"result":{"type":"full","chunks":[{"content":"#
|
||||
Test PDF File","embed":"# Test PDF File","enriched":null,"enrichment_success":false,"blocks":[{"type":"Title","bbox":{"left":0.16189574527182748,"top":0.09479295553814121,"width":0.11946290650820875,"height":0.02146414301710507,"page":1,"original_page":1},"content":"Test
|
||||
PDF File","image_url":null,"chart_data":null,"confidence":"high","granular_confidence":{"extract_confidence":null,"parse_confidence":0.7185355693101882},"extra":null}]}],"ocr":null,"custom":null},"parse_mode":null,"document_properties":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:46 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:46.694836+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: reducto_v3
|
||||
custom_llm_provider: null
|
||||
document:
|
||||
document_url: data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==
|
||||
type: document_url
|
||||
model: reducto/parse-v3
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: "--22b7cb49f85a1ae5113a6328b0381ffb\r\nContent-Disposition: form-data; name=\"file\";
|
||||
filename=\"document\"\r\nContent-Type: application/pdf\r\n\r\n%PDF-1.4\n1 0
|
||||
obj\n<< /Type /Catalog /Pages 2 0 R >>\nendobj\n2 0 obj\n<< /Type /Pages /Kids
|
||||
[3 0 R] /Count 1 >>\nendobj\n3 0 obj\n<< /Type /Page /Parent 2 0 R /Resources
|
||||
4 0 R /MediaBox [0 0 612 792] /Contents 5 0 R >>\nendobj\n4 0 obj\n<< /Font
|
||||
<< /F1 << /Type /Font /Subtype /Type1 /BaseFont /Helvetica >> >> >>\nendobj\n5
|
||||
0 obj\n<< /Length 44 >>\nstream\nBT\n/F1 12 Tf\n100 700 Td\n(Test PDF File)
|
||||
Tj\nET\nendstream\nendobj\nxref\n0 6\n0000000000 65535 f \n0000000009 00000
|
||||
n \n0000000058 00000 n \n0000000115 00000 n \n0000000214 00000 n \n0000000293
|
||||
00000 n \ntrailer\n<< /Size 6 /Root 1 0 R >>\nstartxref\n385\n%%EOF\n\r\n--22b7cb49f85a1ae5113a6328b0381ffb--\r\n"
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- multipart/form-data; boundary=22b7cb49f85a1ae5113a6328b0381ffb
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/upload
|
||||
response:
|
||||
body:
|
||||
string: '{"file_id":"reducto://5df745f4-2877-4cf6-9bde-a2f829c93eea.pdf","presigned_url":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:48 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
- request:
|
||||
body: '{"input":"reducto://5df745f4-2877-4cf6-9bde-a2f829c93eea.pdf","formatting":{"add_page_markers":false,"table_output_format":"json","merge_tables":true,"include":["signatures","ignore_watermarks"]},"retrieval":{"chunking":{"chunk_mode":"variable","chunk_size":1500,"chunk_overlap":32},"filter_blocks":["Figure","Table","Key
|
||||
Value"],"embedding_optimized":false},"settings":{"ocr_system":"legacy","extraction_mode":"hybrid","force_url_result":false,"return_ocr_data":false,"return_images":[],"embed_pdf_metadata":false,"embed_pdf_metadata_dpi":100,"persist_results":false,"timeout":900.0,"page_range":[1]}}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/parse
|
||||
response:
|
||||
body:
|
||||
string: '{"response_type":"parse","job_id":"7ca67242-1677-484e-b2ef-b256dcdd1ea4","duration":1.3359308242797852,"pdf_url":"https://prod-storage20241010144745140900000001.s3.amazonaws.com/org/8bd983d1-47dd-440b-93d8-431412d819bf/5df745f4-2877-4cf6-9bde-a2f829c93eea.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA2UOK6OVBOUYL7WYA%2F20260901%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260901T195449Z&X-Amz-Expires=43200&X-Amz-SignedHeaders=host&X-Amz-Signature=077a6551201d2562fd1543fd5c391541cffe606d64307a3f6d103cf18219f80a","studio_link":"https://studio.reducto.ai/job/7ca67242-1677-484e-b2ef-b256dcdd1ea4","usage":{"num_pages":1,"credits":1.0,"credit_breakdown":{"page":1.0},"page_billing_breakdown":{"1":["page"]},"non_empty_cell_count":null},"result":{"type":"full","chunks":[{"content":"#
|
||||
Test PDF File","embed":"# Test PDF File","enriched":null,"enrichment_success":false,"blocks":[{"type":"Title","bbox":{"left":0.16189574527182748,"top":0.09479295553814121,"width":0.11946290650820875,"height":0.02146414301710507,"page":1,"original_page":1},"content":"Test
|
||||
PDF File","image_url":null,"chart_data":null,"confidence":"high","granular_confidence":{"extract_confidence":null,"parse_confidence":0.7185355693101882},"extra":null}]}],"ocr":null,"custom":null},"parse_mode":null,"document_properties":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:50 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:50.708637+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: reducto_v3
|
||||
custom_llm_provider: null
|
||||
document:
|
||||
document_url: data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==
|
||||
type: document_url
|
||||
formatting:
|
||||
add_page_markers: false
|
||||
include:
|
||||
- signatures
|
||||
- ignore_watermarks
|
||||
merge_tables: true
|
||||
table_output_format: json
|
||||
model: reducto/parse-v3
|
||||
retrieval:
|
||||
chunking:
|
||||
chunk_mode: variable
|
||||
chunk_overlap: 32
|
||||
chunk_size: 1500
|
||||
embedding_optimized: false
|
||||
filter_blocks:
|
||||
- Figure
|
||||
- Table
|
||||
- Key Value
|
||||
settings:
|
||||
embed_pdf_metadata: false
|
||||
embed_pdf_metadata_dpi: 100
|
||||
extraction_mode: hybrid
|
||||
force_url_result: false
|
||||
ocr_system: legacy
|
||||
page_range:
|
||||
- 1
|
||||
persist_results: false
|
||||
return_images: []
|
||||
return_ocr_data: false
|
||||
timeout: 900.0
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"document_url": "data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==",
|
||||
"type": "document_url"
|
||||
},
|
||||
"model": "reducto/parse-v3",
|
||||
"retrieval": {
|
||||
"chunking": {
|
||||
"chunk_mode": "page"
|
||||
}
|
||||
}
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJmaWxlX2lkIjoicmVkdWN0bzovLzY3MWQ2ZTAwLTZkZjUtNDkzYS1iZDllLThiYmYzZDc3ZDNhYi5wZGYiLCJwcmVzaWduZWRfdXJsIjpudWxsfQ==",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:36 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"body_b64": "eyJyZXNwb25zZV90eXBlIjoicGFyc2UiLCJqb2JfaWQiOiI4ZjE1YjZkZC1mMmQyLTQ4ZTItYTRjOS0wMjMwYTlhY2U3MDQiLCJkdXJhdGlvbiI6My43NTEwNjQzMDA1MzcxMDk0LCJwZGZfdXJsIjoiaHR0cHM6Ly9wcm9kLXN0b3JhZ2UyMDI0MTAxMDE0NDc0NTE0MDkwMDAwMDAwMS5zMy5hbWF6b25hd3MuY29tL29yZy84YmQ5ODNkMS00N2RkLTQ0MGItOTNkOC00MzE0MTJkODE5YmYvNjcxZDZlMDAtNmRmNS00OTNhLWJkOWUtOGJiZjNkNzdkM2FiLnBkZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUEyVU9LNk9WQk9VWUw3V1lBJTJGMjAyNjA5MDElMkZ1cy13ZXN0LTIlMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTAxVDE5NTQ0MFomWC1BbXotRXhwaXJlcz00MzIwMCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmWC1BbXotU2lnbmF0dXJlPTk2YTRmOTA0ZThkM2NhNThkMzk5YWIyMWFkZTY5ZWMwZWE2MmZmNWRmZWUzMjBjNWVlYWE2ZWFhMGM0ZTA1NjEiLCJzdHVkaW9fbGluayI6Imh0dHBzOi8vc3R1ZGlvLnJlZHVjdG8uYWkvam9iLzhmMTViNmRkLWYyZDItNDhlMi1hNGM5LTAyMzBhOWFjZTcwNCIsInVzYWdlIjp7Im51bV9wYWdlcyI6MSwiY3JlZGl0cyI6MS4wLCJjcmVkaXRfYnJlYWtkb3duIjp7InBhZ2UiOjEuMH0sInBhZ2VfYmlsbGluZ19icmVha2Rvd24iOnsiMSI6WyJwYWdlIl19LCJub25fZW1wdHlfY2VsbF9jb3VudCI6bnVsbH0sInJlc3VsdCI6eyJ0eXBlIjoiZnVsbCIsImNodW5rcyI6W3siY29udGVudCI6IiMgVGVzdCBQREYgRmlsZSIsImVtYmVkIjoiIyBUZXN0IFBERiBGaWxlIiwiZW5yaWNoZWQiOm51bGwsImVucmljaG1lbnRfc3VjY2VzcyI6ZmFsc2UsImJsb2NrcyI6W3sidHlwZSI6IlRpdGxlIiwiYmJveCI6eyJsZWZ0IjowLjE2MTg5NTc0NTI3MTgyNzQ4LCJ0b3AiOjAuMDk0NzkyOTU1NTM4MTQxMjEsIndpZHRoIjowLjExOTQ2MjkwNjUwODIwODc1LCJoZWlnaHQiOjAuMDIxNDY0MTQzMDE3MTA1MDcsInBhZ2UiOjEsIm9yaWdpbmFsX3BhZ2UiOjF9LCJjb250ZW50IjoiVGVzdCBQREYgRmlsZSIsImltYWdlX3VybCI6bnVsbCwiY2hhcnRfZGF0YSI6bnVsbCwiY29uZmlkZW5jZSI6ImhpZ2giLCJncmFudWxhcl9jb25maWRlbmNlIjp7ImV4dHJhY3RfY29uZmlkZW5jZSI6bnVsbCwicGFyc2VfY29uZmlkZW5jZSI6MC43MTg1MzU1NjkzMTAxODgyfSwiZXh0cmEiOm51bGx9XX1dLCJvY3IiOm51bGwsImN1c3RvbSI6bnVsbH0sInBhcnNlX21vZGUiOm51bGwsImRvY3VtZW50X3Byb3BlcnRpZXMiOm51bGx9",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:40 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:41.233002Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"document_url": "data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==",
|
||||
"type": "document_url"
|
||||
},
|
||||
"formatting": {
|
||||
"table_output_format": "md"
|
||||
},
|
||||
"model": "reducto/parse-v3"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJmaWxlX2lkIjoicmVkdWN0bzovL2YzY2MzYzcyLTYxNGEtNDEwNC1iYjcwLWE1MTZmMzcxNDhlMC5wZGYiLCJwcmVzaWduZWRfdXJsIjpudWxsfQ==",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:30 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"body_b64": "eyJyZXNwb25zZV90eXBlIjoicGFyc2UiLCJqb2JfaWQiOiJhYmE5MjRkYy03NzczLTRkZmYtYTRhOC0zNTQ5MzY2ZWE5ZmEiLCJkdXJhdGlvbiI6NC41NzY0MTcyMDc3MTc4OTU1LCJwZGZfdXJsIjoiaHR0cHM6Ly9wcm9kLXN0b3JhZ2UyMDI0MTAxMDE0NDc0NTE0MDkwMDAwMDAwMS5zMy5hbWF6b25hd3MuY29tL29yZy84YmQ5ODNkMS00N2RkLTQ0MGItOTNkOC00MzE0MTJkODE5YmYvZjNjYzNjNzItNjE0YS00MTA0LWJiNzAtYTUxNmYzNzE0OGUwLnBkZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUEyVU9LNk9WQk9VWUw3V1lBJTJGMjAyNjA5MDElMkZ1cy13ZXN0LTIlMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTAxVDE5NTQzNVomWC1BbXotRXhwaXJlcz00MzIwMCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmWC1BbXotU2lnbmF0dXJlPTdkNGM5NDY0YmIzYTFhOWQ1YzdhNWY5NTdiYzEwODEzZmIxNmZjYzZkZTNmZWEyMDU0YTQwYjQ2OWZmYTc5YjMiLCJzdHVkaW9fbGluayI6Imh0dHBzOi8vc3R1ZGlvLnJlZHVjdG8uYWkvam9iL2FiYTkyNGRjLTc3NzMtNGRmZi1hNGE4LTM1NDkzNjZlYTlmYSIsInVzYWdlIjp7Im51bV9wYWdlcyI6MSwiY3JlZGl0cyI6MS4wLCJjcmVkaXRfYnJlYWtkb3duIjp7InBhZ2UiOjEuMH0sInBhZ2VfYmlsbGluZ19icmVha2Rvd24iOnsiMSI6WyJwYWdlIl19LCJub25fZW1wdHlfY2VsbF9jb3VudCI6bnVsbH0sInJlc3VsdCI6eyJ0eXBlIjoiZnVsbCIsImNodW5rcyI6W3siY29udGVudCI6IiMgVGVzdCBQREYgRmlsZSIsImVtYmVkIjoiIyBUZXN0IFBERiBGaWxlIiwiZW5yaWNoZWQiOm51bGwsImVucmljaG1lbnRfc3VjY2VzcyI6ZmFsc2UsImJsb2NrcyI6W3sidHlwZSI6IlRpdGxlIiwiYmJveCI6eyJsZWZ0IjowLjE2MTg5NTc0NTI3MTgyNzQ4LCJ0b3AiOjAuMDk0NzkyOTU1NTM4MTQxMjEsIndpZHRoIjowLjExOTQ2MjkwNjUwODIwODc1LCJoZWlnaHQiOjAuMDIxNDY0MTQzMDE3MTA1MDcsInBhZ2UiOjEsIm9yaWdpbmFsX3BhZ2UiOjF9LCJjb250ZW50IjoiVGVzdCBQREYgRmlsZSIsImltYWdlX3VybCI6bnVsbCwiY2hhcnRfZGF0YSI6bnVsbCwiY29uZmlkZW5jZSI6ImhpZ2giLCJncmFudWxhcl9jb25maWRlbmNlIjp7ImV4dHJhY3RfY29uZmlkZW5jZSI6bnVsbCwicGFyc2VfY29uZmlkZW5jZSI6MC43MTg1MzU1NjkzMTAxODgyfSwiZXh0cmEiOm51bGx9XX1dLCJvY3IiOm51bGwsImN1c3RvbSI6bnVsbH0sInBhcnNlX21vZGUiOm51bGwsImRvY3VtZW50X3Byb3BlcnRpZXMiOm51bGx9",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:35 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:35.993066Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"custom_llm_provider": null,
|
||||
"document": {
|
||||
"document_url": "data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==",
|
||||
"type": "document_url"
|
||||
},
|
||||
"model": "reducto/parse-v3"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJmaWxlX2lkIjoicmVkdWN0bzovLzZhYjliY2Y0LTE4OTMtNGIzNy1iZGRiLWFjZGE4Y2U0NWRmYi5wZGYiLCJwcmVzaWduZWRfdXJsIjpudWxsfQ==",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:44 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
},
|
||||
{
|
||||
"body_b64": "eyJyZXNwb25zZV90eXBlIjoicGFyc2UiLCJqb2JfaWQiOiJkMzQ1NTQ5Zi01ZDk4LTRjNjItYjNlMy0yNGM5OTAxNDRkZjQiLCJkdXJhdGlvbiI6MS4xMTk0NDI3MDEzMzk3MjE3LCJwZGZfdXJsIjoiaHR0cHM6Ly9wcm9kLXN0b3JhZ2UyMDI0MTAxMDE0NDc0NTE0MDkwMDAwMDAwMS5zMy5hbWF6b25hd3MuY29tL29yZy84YmQ5ODNkMS00N2RkLTQ0MGItOTNkOC00MzE0MTJkODE5YmYvNmFiOWJjZjQtMTg5My00YjM3LWJkZGItYWNkYThjZTQ1ZGZiLnBkZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUEyVU9LNk9WQk9VWUw3V1lBJTJGMjAyNjA5MDElMkZ1cy13ZXN0LTIlMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwOTAxVDE5NTQ0NVomWC1BbXotRXhwaXJlcz00MzIwMCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmWC1BbXotU2lnbmF0dXJlPTFkYjYxZDMzZjYwMmYxM2U4NDQ0ZTg1ODBiNzM3YjMxZjM0NmU0NzQ5M2NjN2VjYTdjNGZjZGRiZGUwZGZiNDMiLCJzdHVkaW9fbGluayI6Imh0dHBzOi8vc3R1ZGlvLnJlZHVjdG8uYWkvam9iL2QzNDU1NDlmLTVkOTgtNGM2Mi1iM2UzLTI0Yzk5MDE0NGRmNCIsInVzYWdlIjp7Im51bV9wYWdlcyI6MSwiY3JlZGl0cyI6MS4wLCJjcmVkaXRfYnJlYWtkb3duIjp7InBhZ2UiOjEuMH0sInBhZ2VfYmlsbGluZ19icmVha2Rvd24iOnsiMSI6WyJwYWdlIl19LCJub25fZW1wdHlfY2VsbF9jb3VudCI6bnVsbH0sInJlc3VsdCI6eyJ0eXBlIjoiZnVsbCIsImNodW5rcyI6W3siY29udGVudCI6IiMgVGVzdCBQREYgRmlsZSIsImVtYmVkIjoiIyBUZXN0IFBERiBGaWxlIiwiZW5yaWNoZWQiOm51bGwsImVucmljaG1lbnRfc3VjY2VzcyI6ZmFsc2UsImJsb2NrcyI6W3sidHlwZSI6IlRpdGxlIiwiYmJveCI6eyJsZWZ0IjowLjE2MTg5NTc0NTI3MTgyNzQ4LCJ0b3AiOjAuMDk0NzkyOTU1NTM4MTQxMjEsIndpZHRoIjowLjExOTQ2MjkwNjUwODIwODc1LCJoZWlnaHQiOjAuMDIxNDY0MTQzMDE3MTA1MDcsInBhZ2UiOjEsIm9yaWdpbmFsX3BhZ2UiOjF9LCJjb250ZW50IjoiVGVzdCBQREYgRmlsZSIsImltYWdlX3VybCI6bnVsbCwiY2hhcnRfZGF0YSI6bnVsbCwiY29uZmlkZW5jZSI6ImhpZ2giLCJncmFudWxhcl9jb25maWRlbmNlIjp7ImV4dHJhY3RfY29uZmlkZW5jZSI6bnVsbCwicGFyc2VfY29uZmlkZW5jZSI6MC43MTg1MzU1NjkzMTAxODgyfSwiZXh0cmEiOm51bGx9XX1dLCJvY3IiOm51bGwsImN1c3RvbSI6bnVsbH0sInBhcnNlX21vZGUiOm51bGwsImRvY3VtZW50X3Byb3BlcnRpZXMiOm51bGx9",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Tue, 01 Sep 2026 19:54:46 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 200
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-01T19:54:46.694836Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: "--7108360c769817ee2464c4729615e289\r\nContent-Disposition: form-data; name=\"file\";
|
||||
filename=\"document\"\r\nContent-Type: application/pdf\r\n\r\n%PDF-1.4\n1 0
|
||||
obj\n<< /Type /Catalog /Pages 2 0 R >>\nendobj\n2 0 obj\n<< /Type /Pages /Kids
|
||||
[3 0 R] /Count 1 >>\nendobj\n3 0 obj\n<< /Type /Page /Parent 2 0 R /Resources
|
||||
4 0 R /MediaBox [0 0 612 792] /Contents 5 0 R >>\nendobj\n4 0 obj\n<< /Font
|
||||
<< /F1 << /Type /Font /Subtype /Type1 /BaseFont /Helvetica >> >> >>\nendobj\n5
|
||||
0 obj\n<< /Length 44 >>\nstream\nBT\n/F1 12 Tf\n100 700 Td\n(Test PDF File)
|
||||
Tj\nET\nendstream\nendobj\nxref\n0 6\n0000000000 65535 f \n0000000009 00000
|
||||
n \n0000000058 00000 n \n0000000115 00000 n \n0000000214 00000 n \n0000000293
|
||||
00000 n \ntrailer\n<< /Size 6 /Root 1 0 R >>\nstartxref\n385\n%%EOF\n\r\n--7108360c769817ee2464c4729615e289--\r\n"
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- multipart/form-data; boundary=7108360c769817ee2464c4729615e289
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/upload
|
||||
response:
|
||||
body:
|
||||
string: '{"file_id":"reducto://fc6ebcb1-95d4-46ec-90d0-efca33ef197f.pdf","presigned_url":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:41 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
- request:
|
||||
body: '{"input":"reducto://fc6ebcb1-95d4-46ec-90d0-efca33ef197f.pdf","settings":{"return_ocr_data":true}}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/parse
|
||||
response:
|
||||
body:
|
||||
string: '{"response_type":"parse","job_id":"3f6ef64d-c949-4b8d-9898-afb3b01669e6","duration":1.4480743408203125,"pdf_url":"https://prod-storage20241010144745140900000001.s3.amazonaws.com/org/8bd983d1-47dd-440b-93d8-431412d819bf/fc6ebcb1-95d4-46ec-90d0-efca33ef197f.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA2UOK6OVBOUYL7WYA%2F20260901%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260901T195443Z&X-Amz-Expires=43200&X-Amz-SignedHeaders=host&X-Amz-Signature=0965ca129cee49a41650df152057a17a4f9e265f92f2261a4f6576587272eb03","studio_link":"https://studio.reducto.ai/job/3f6ef64d-c949-4b8d-9898-afb3b01669e6","usage":{"num_pages":1,"credits":1.0,"credit_breakdown":{"page":1.0},"page_billing_breakdown":{"1":["page"]},"non_empty_cell_count":null},"result":{"type":"full","chunks":[{"content":"#
|
||||
Test PDF File","embed":"# Test PDF File","enriched":null,"enrichment_success":false,"blocks":[{"type":"Title","bbox":{"left":0.16189574527182748,"top":0.09479295553814121,"width":0.11946290650820875,"height":0.02146414301710507,"page":1,"original_page":1},"content":"Test
|
||||
PDF File","image_url":null,"chart_data":null,"confidence":"high","granular_confidence":{"extract_confidence":null,"parse_confidence":0.7185355693101882},"extra":null}]}],"ocr":{"words":[{"text":"Test","bbox":{"left":0.16189475464665032,"top":0.09491921434498797,"width":0.03832089043910207,"height":0.021019531018806225,"page":1,"original_page":1},"confidence":1.0,"chunk_index":null,"rotation":359},{"text":"PDF","bbox":{"left":0.20548195932425706,"top":0.09514990719881924,"width":0.03939929039649714,"height":0.02102524343163076,"page":1,"original_page":1},"confidence":1.0,"chunk_index":null,"rotation":359},{"text":"File","bbox":{"left":0.25014757642558977,"top":0.09538630283240115,"width":0.03177201514150582,"height":0.020984871218902895,"page":1,"original_page":1},"confidence":1.0,"chunk_index":null,"rotation":359}],"lines":[{"text":"Test
|
||||
PDF File","bbox":{"left":0.16189475464665032,"top":0.09491921434498797,"width":0.12002483692044526,"height":0.021451959706316092,"page":1,"original_page":1},"confidence":1.0,"chunk_index":null,"rotation":359}]},"custom":null},"parse_mode":null,"document_properties":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:43 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:43.968997+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: reducto_v3
|
||||
document:
|
||||
document_url: data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==
|
||||
type: document_url
|
||||
model: reducto/parse-v3
|
||||
settings:
|
||||
return_ocr_data: true
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
{
|
||||
"case": {
|
||||
"litellm_input": {
|
||||
"document": {
|
||||
"document_url": "reducto://invalid-document-for-parity",
|
||||
"type": "document_url"
|
||||
},
|
||||
"model": "reducto/parse-v3"
|
||||
},
|
||||
"provider_responses": [
|
||||
{
|
||||
"body_b64": "eyJlcnJvciI6eyJjb2RlIjo0MDQsIm5hbWUiOiJOT1RfRk9VTkQiLCJtZXNzYWdlIjoiRG9jdW1lbnQgJ1RoZSBmaWxlIG1heSBoYXZlIGV4cGlyZWQgb3IgYmVlbiBkZWxldGVkLiBQbGVhc2UgcmUtdXBsb2FkIGFuZCB0cnkgYWdhaW4uJyBub3QgZm91bmQifSwiZGV0YWlsIjoiRG9jdW1lbnQgJ1RoZSBmaWxlIG1heSBoYXZlIGV4cGlyZWQgb3IgYmVlbiBkZWxldGVkLiBQbGVhc2UgcmUtdXBsb2FkIGFuZCB0cnkgYWdhaW4uJyBub3QgZm91bmQifQ==",
|
||||
"headers": [
|
||||
{
|
||||
"name": "Date",
|
||||
"value": "Wed, 02 Sep 2026 01:14:02 GMT"
|
||||
},
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"kind": "http",
|
||||
"status_code": 404
|
||||
}
|
||||
]
|
||||
},
|
||||
"recorded_at": "2026-09-02T01:14:02.538070Z",
|
||||
"schema_version": 1
|
||||
}
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: '{"input":"reducto://invalid-document-for-parity"}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/parse
|
||||
response:
|
||||
body:
|
||||
string: '{"error":{"code":404,"name":"NOT_FOUND","message":"Document ''The file
|
||||
may have expired or been deleted. Please re-upload and try again.'' not found"},"detail":"Document
|
||||
''The file may have expired or been deleted. Please re-upload and try again.''
|
||||
not found"}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Wed, 02 Sep 2026 01:14:02 GMT
|
||||
status:
|
||||
code: 404
|
||||
message: ''
|
||||
recorded_at: '2026-09-02T01:14:02.538070+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: reducto_v3
|
||||
document:
|
||||
document_url: reducto://invalid-document-for-parity
|
||||
type: document_url
|
||||
model: reducto/parse-v3
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: "--04abc28545d4b46a8ee703e56d88cc0c\r\nContent-Disposition: form-data; name=\"file\";
|
||||
filename=\"document\"\r\nContent-Type: application/pdf\r\n\r\n%PDF-1.4\n1 0
|
||||
obj\n<< /Type /Catalog /Pages 2 0 R >>\nendobj\n2 0 obj\n<< /Type /Pages /Kids
|
||||
[3 0 R] /Count 1 >>\nendobj\n3 0 obj\n<< /Type /Page /Parent 2 0 R /Resources
|
||||
4 0 R /MediaBox [0 0 612 792] /Contents 5 0 R >>\nendobj\n4 0 obj\n<< /Font
|
||||
<< /F1 << /Type /Font /Subtype /Type1 /BaseFont /Helvetica >> >> >>\nendobj\n5
|
||||
0 obj\n<< /Length 44 >>\nstream\nBT\n/F1 12 Tf\n100 700 Td\n(Test PDF File)
|
||||
Tj\nET\nendstream\nendobj\nxref\n0 6\n0000000000 65535 f \n0000000009 00000
|
||||
n \n0000000058 00000 n \n0000000115 00000 n \n0000000214 00000 n \n0000000293
|
||||
00000 n \ntrailer\n<< /Size 6 /Root 1 0 R >>\nstartxref\n385\n%%EOF\n\r\n--04abc28545d4b46a8ee703e56d88cc0c--\r\n"
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- multipart/form-data; boundary=04abc28545d4b46a8ee703e56d88cc0c
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/upload
|
||||
response:
|
||||
body:
|
||||
string: '{"file_id":"reducto://f3cc3c72-614a-4104-bb70-a516f37148e0.pdf","presigned_url":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:30 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
- request:
|
||||
body: '{"input":"reducto://f3cc3c72-614a-4104-bb70-a516f37148e0.pdf","formatting":{"table_output_format":"md"}}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/parse
|
||||
response:
|
||||
body:
|
||||
string: '{"response_type":"parse","job_id":"aba924dc-7773-4dff-a4a8-3549366ea9fa","duration":4.5764172077178955,"pdf_url":"https://prod-storage20241010144745140900000001.s3.amazonaws.com/org/8bd983d1-47dd-440b-93d8-431412d819bf/f3cc3c72-614a-4104-bb70-a516f37148e0.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA2UOK6OVBOUYL7WYA%2F20260901%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260901T195435Z&X-Amz-Expires=43200&X-Amz-SignedHeaders=host&X-Amz-Signature=7d4c9464bb3a1a9d5c7a5f957bc10813fb16fcc6de3fea2054a40b469ffa79b3","studio_link":"https://studio.reducto.ai/job/aba924dc-7773-4dff-a4a8-3549366ea9fa","usage":{"num_pages":1,"credits":1.0,"credit_breakdown":{"page":1.0},"page_billing_breakdown":{"1":["page"]},"non_empty_cell_count":null},"result":{"type":"full","chunks":[{"content":"#
|
||||
Test PDF File","embed":"# Test PDF File","enriched":null,"enrichment_success":false,"blocks":[{"type":"Title","bbox":{"left":0.16189574527182748,"top":0.09479295553814121,"width":0.11946290650820875,"height":0.02146414301710507,"page":1,"original_page":1},"content":"Test
|
||||
PDF File","image_url":null,"chart_data":null,"confidence":"high","granular_confidence":{"extract_confidence":null,"parse_confidence":0.7185355693101882},"extra":null}]}],"ocr":null,"custom":null},"parse_mode":null,"document_properties":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:35 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:35.993066+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: reducto_v3
|
||||
document:
|
||||
document_url: data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==
|
||||
type: document_url
|
||||
formatting:
|
||||
table_output_format: md
|
||||
model: reducto/parse-v3
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
interactions:
|
||||
- request:
|
||||
body: "--b7daa0c5be8f80d33a4eb7a54318d93a\r\nContent-Disposition: form-data; name=\"file\";
|
||||
filename=\"document\"\r\nContent-Type: application/pdf\r\n\r\n%PDF-1.4\n1 0
|
||||
obj\n<< /Type /Catalog /Pages 2 0 R >>\nendobj\n2 0 obj\n<< /Type /Pages /Kids
|
||||
[3 0 R] /Count 1 >>\nendobj\n3 0 obj\n<< /Type /Page /Parent 2 0 R /Resources
|
||||
4 0 R /MediaBox [0 0 612 792] /Contents 5 0 R >>\nendobj\n4 0 obj\n<< /Font
|
||||
<< /F1 << /Type /Font /Subtype /Type1 /BaseFont /Helvetica >> >> >>\nendobj\n5
|
||||
0 obj\n<< /Length 44 >>\nstream\nBT\n/F1 12 Tf\n100 700 Td\n(Test PDF File)
|
||||
Tj\nET\nendstream\nendobj\nxref\n0 6\n0000000000 65535 f \n0000000009 00000
|
||||
n \n0000000058 00000 n \n0000000115 00000 n \n0000000214 00000 n \n0000000293
|
||||
00000 n \ntrailer\n<< /Size 6 /Root 1 0 R >>\nstartxref\n385\n%%EOF\n\r\n--b7daa0c5be8f80d33a4eb7a54318d93a--\r\n"
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- multipart/form-data; boundary=b7daa0c5be8f80d33a4eb7a54318d93a
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/upload
|
||||
response:
|
||||
body:
|
||||
string: '{"file_id":"reducto://010b01b2-83bd-446d-af11-d120c5ac2c02.pdf","presigned_url":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:27 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
- request:
|
||||
body: '{"input":"reducto://010b01b2-83bd-446d-af11-d120c5ac2c02.pdf"}'
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Content-Type:
|
||||
- application/json
|
||||
User-Agent:
|
||||
- litellm/1.101.0
|
||||
method: POST
|
||||
uri: http://parity-provider.invalid/parse
|
||||
response:
|
||||
body:
|
||||
string: '{"response_type":"parse","job_id":"8138a6c6-b726-4300-90b4-e6d5d43f6f70","duration":1.2648272514343262,"pdf_url":"https://prod-storage20241010144745140900000001.s3.amazonaws.com/org/8bd983d1-47dd-440b-93d8-431412d819bf/010b01b2-83bd-446d-af11-d120c5ac2c02.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA2UOK6OVBOUYL7WYA%2F20260901%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260901T195428Z&X-Amz-Expires=43200&X-Amz-SignedHeaders=host&X-Amz-Signature=3cda9020fefff85d9dd13f124908d7b00e55b6e82a72039546d262099cfcf3b4","studio_link":"https://studio.reducto.ai/job/8138a6c6-b726-4300-90b4-e6d5d43f6f70","usage":{"num_pages":1,"credits":1.0,"credit_breakdown":{"page":1.0},"page_billing_breakdown":{"1":["page"]},"non_empty_cell_count":null},"result":{"type":"full","chunks":[{"content":"#
|
||||
Test PDF File","embed":"# Test PDF File","enriched":null,"enrichment_success":false,"blocks":[{"type":"Title","bbox":{"left":0.16189574527182748,"top":0.09479295553814121,"width":0.11946290650820875,"height":0.02146414301710507,"page":1,"original_page":1},"content":"Test
|
||||
PDF File","image_url":null,"chart_data":null,"confidence":"high","granular_confidence":{"extract_confidence":null,"parse_confidence":0.7185355693101882},"extra":null}]}],"ocr":null,"custom":null},"parse_mode":null,"document_properties":null}'
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Sep 2026 19:54:29 GMT
|
||||
status:
|
||||
code: 200
|
||||
message: ''
|
||||
recorded_at: '2026-09-01T19:54:30.255600+00:00'
|
||||
ttl_seconds: 0
|
||||
version: 1
|
||||
x-litellm:
|
||||
case:
|
||||
litellm_input:
|
||||
contract: reducto_v3
|
||||
document:
|
||||
document_url: data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvRm9udCA8PCAvRjEgPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggNDQgPj4Kc3RyZWFtCkJUCi9GMSAxMiBUZgoxMDAgNzAwIFRkCihUZXN0IFBERiBGaWxlKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDU4IDAwMDAwIG4gCjAwMDAwMDAxMTUgMDAwMDAgbiAKMDAwMDAwMDIxNCAwMDAwMCBuIAowMDAwMDAwMjkzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKMzg1CiUlRU9GCg==
|
||||
type: document_url
|
||||
model: reducto/parse-v3
|
||||
request_source: python_replay
|
||||
schema_version: 1
|
||||
63
tests/test_litellm/ocr/fixtures/migrate.py
Normal file
63
tests/test_litellm/ocr/fixtures/migrate.py
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
from typing import Final, cast
|
||||
|
||||
import litellm
|
||||
from litellm.rust_bridge.ocr import use_litellm_rust
|
||||
from tests.route_parity.fixtures.recording import (
|
||||
RecordedInteraction,
|
||||
UpstreamEndpoint,
|
||||
record_upstream_interactions,
|
||||
)
|
||||
from tests.route_parity.fixtures.store import FixtureEnvelope, read_fixture, save_fixture
|
||||
from tests.route_parity.replay import replay_server
|
||||
from tests.test_litellm.ocr.fixtures.common import OcrSdkCall
|
||||
from tests.test_litellm.ocr.fixtures.config import configured_fixture_directory
|
||||
from tests.test_litellm.ocr.fixtures.models import OcrParityCase, OcrSdkInput
|
||||
|
||||
|
||||
def _invoke(provider_url: str, case_input: OcrSdkInput) -> object:
|
||||
sdk_call: Final = cast(OcrSdkCall, litellm.ocr)
|
||||
return sdk_call(api_base=provider_url, api_key="test-key", **case_input.as_sdk_kwargs())
|
||||
|
||||
|
||||
def migrate_fixture(path: Path) -> Path:
|
||||
case: Final = read_fixture(path, OcrParityCase)
|
||||
envelope: Final = FixtureEnvelope.model_validate_json(path.read_text(encoding="utf-8"))
|
||||
with replay_server() as provider:
|
||||
for response in case.provider_responses:
|
||||
provider.enqueue_response(response)
|
||||
captured: Final = record_upstream_interactions(UpstreamEndpoint(provider.url), case.litellm_input, _invoke)
|
||||
provider.take_requests(len(case.provider_responses))
|
||||
interactions: Final = tuple(
|
||||
RecordedInteraction(item.request, response)
|
||||
for item, response in zip(captured, case.provider_responses, strict=True)
|
||||
)
|
||||
destination: Final = save_fixture(
|
||||
path.parent,
|
||||
case.litellm_input,
|
||||
case,
|
||||
interactions,
|
||||
recorded_at=envelope.recorded_at,
|
||||
request_source="python_replay",
|
||||
)
|
||||
read_fixture(destination, OcrParityCase)
|
||||
path.unlink()
|
||||
return destination
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser: Final = argparse.ArgumentParser()
|
||||
parser.add_argument("--fixture-dir", type=Path, default=configured_fixture_directory())
|
||||
args: Final = parser.parse_args()
|
||||
directory: Final = cast(Path, args.fixture_dir)
|
||||
use_litellm_rust(False, ocr=None, aocr=None)
|
||||
paths: Final = tuple(sorted(directory.rglob("*.json")))
|
||||
for path in paths:
|
||||
print(f"Migrated {path.name} to {migrate_fixture(path).name}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
@ -1,14 +1,18 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
from queue import Queue
|
||||
from typing import Final, Protocol, cast
|
||||
|
||||
import pytest
|
||||
|
||||
from tests.route_parity.fixtures.cassette import deserialize_cassette
|
||||
from tests.route_parity.fixtures.pytest_support import parametrize_recorded_fixtures
|
||||
from tests.route_parity.fixtures.store import FixtureEnvelope, read_fixture, recorded_fixtures
|
||||
from tests.test_litellm.ocr.conftest import ocr_fixture_id, ocr_fixture_marks
|
||||
from tests.test_litellm.ocr.fixtures.migrate import migrate_fixture
|
||||
from tests.test_litellm.ocr.fixtures.models import OcrParityCase
|
||||
|
||||
|
||||
|
|
@ -55,3 +59,27 @@ def test_recorded_fixture_parametrization_applies_case_specific_marks() -> None:
|
|||
assert all(parameter.marks[0].name == "xfail" for parameter in reducto_parameters)
|
||||
assert all(parameter.marks[0].kwargs["strict"] is False for parameter in reducto_parameters)
|
||||
assert all(parameter.marks == () for parameter in supported_parameters)
|
||||
|
||||
|
||||
def test_legacy_fixture_migration_preserves_responses_and_labels_reconstructed_requests(tmp_path: Path) -> None:
|
||||
case: Final = recorded_fixtures(Path(__file__).with_name("fixtures") / "data" / "mistral-ocr", OcrParityCase)[0]
|
||||
timestamp: Final = datetime(2020, 1, 1, tzinfo=timezone.utc)
|
||||
envelope: Final = FixtureEnvelope(
|
||||
schema_version=1,
|
||||
recorded_at=timestamp,
|
||||
case=case.model_dump(mode="json", exclude_unset=True),
|
||||
)
|
||||
legacy_path: Final = tmp_path / "legacy.json"
|
||||
legacy_path.write_text(envelope.model_dump_json())
|
||||
|
||||
destination: Final = migrate_fixture(legacy_path)
|
||||
|
||||
assert not legacy_path.exists()
|
||||
assert read_fixture(destination, OcrParityCase) == case
|
||||
cassette: Final = deserialize_cassette(destination.read_text())
|
||||
assert cassette.recorded_at == timestamp
|
||||
assert cassette.parity.request_source == "python_replay"
|
||||
assert len(cassette.interactions) == len(case.provider_responses)
|
||||
assert cassette.interactions[0].request.method == "POST"
|
||||
assert cassette.interactions[0].request.uri == "http://parity-provider.invalid/v1/ocr"
|
||||
assert "authorization" not in cassette.interactions[0].request.headers
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue