Class: LlmLogs::Batch::Submitter
- Inherits:
-
Object
- Object
- LlmLogs::Batch::Submitter
- Defined in:
- app/models/llm_logs/batch/submitter.rb
Overview
Groups pending BatchRequests of one purpose+model into a single OpenAI batch via ruby_llm-responses_api. To prevent two concurrent FlushJobs from double-submitting the same requests, it first CLAIMS the pending rows in a ‘FOR UPDATE SKIP LOCKED` transaction (assigning them to a placeholder Batch with no openai_batch_id, which flips them out of the `pending` scope and which PollJob ignores). It then submits to OpenAI and records the batch id. If submission fails, the claim is released (requests return to `pending`) and the placeholder batch is dropped, so the work retries next flush.
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(purpose:, model:, metadata: {}) ⇒ Submitter
constructor
A new instance of Submitter.
Constructor Details
#initialize(purpose:, model:, metadata: {}) ⇒ Submitter
Returns a new instance of Submitter.
11 12 13 14 15 |
# File 'app/models/llm_logs/batch/submitter.rb', line 11 def initialize(purpose:, model:, metadata: {}) @purpose = purpose @model = model @metadata = end |
Instance Method Details
#call ⇒ Object
17 18 19 20 21 22 23 |
# File 'app/models/llm_logs/batch/submitter.rb', line 17 def call batch = claim_batch return nil if batch.nil? submit(batch) batch end |