API Reference¶
- class openai_batch_helper.core.BatchHelper[source]¶
Bases:
objectHelper to manage the OpenAI Batch API.
Example
>>> from openai_batch_helper import BatchHelper >>> helper = BatchHelper(endpoint="/v1/chat/completions", completion_window="24h") >>> job = helper.init_job() >>> _ = job.add_line({ ... "custom_id": "t1", ... "method": "POST", ... "url": "/v1/chat/completions", ... "body": {"model":"gpt-4o-mini","messages":[{"role":"user","content":"hi"}]}, ... }) >>> # Submit only when ready: >>> # job.submit_file().submit_batch_job().wait_for_completion()
- class openai_batch_helper.core.BatchJob[source]¶
Bases:
objectRepresents a single batch job lifecycle and artifacts.
Methods are chainable to allow a fluent style.
- __init__(*, client, endpoint, completion_window, workdir, filename, existing_batch_id=None)[source]¶
- add_task(custom_id, url=None, *, body, method='POST')[source]¶
Append a single request line using convenience parameters.
The
urldefaults to the job’sendpoint.bodyis keyword-only to keep argument order unambiguous.Example
>>> job.add_task("t1", body={ ... "model": "gpt-4o-mini", ... "messages": [{"role": "user", "content": "hi"}], ... }) >>> job.add_task("emb-1", "/v1/embeddings", body={ ... "model": "text-embedding-3-small", ... "input": "hello", ... })
- classmethod from_existing(*, client, endpoint, completion_window, workdir, filename, batch_obj)[source]¶
- map_by_custom_id(extractor=None, results_path=None)[source]¶
Return a map of custom_id -> extracted_value.
- Default extractor:
If chat: return response.choices[0].message.content when present.
If embeddings: return response.data[0].embedding when present.
Otherwise: return response or { “error”: … }.
- openai_batch_helper.core.status_progress_logger(logger=None, *, level=20, heartbeat_seconds=30.0)[source]¶
Return an
on_updatecallback that logs progress vialogging.Logs immediately on first update (“job submitted”).
Logs on each status transition.
Emits heartbeat every
heartbeat_secondseven if unchanged (Noneto disable).
Example
>>> import logging >>> logging.basicConfig(level=logging.INFO) >>> job.wait_for_completion(on_update=status_progress_logger())
- openai_batch_helper.core.status_progress_printer(stream=None, *, heartbeat_seconds=30.0)[source]¶
Return an
on_updatecallback that prints progress.Behavior: - Prints on status transitions immediately. - Additionally, prints a heartbeat line every
heartbeat_secondseven ifthe status hasn’t changed (set to
Noneto disable heartbeat).Example
>>> job.wait_for_completion(on_update=status_progress_printer()) >>> # or, more frequent updates >>> job.wait_for_completion(on_update=status_progress_printer(heartbeat_seconds=10))