completion-kit 0.28.38 → 0.28.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/completion_kit/application.css +0 -21
- data/app/helpers/completion_kit/application_helper.rb +8 -0
- data/app/models/completion_kit/response.rb +5 -1
- data/app/models/completion_kit/run.rb +34 -7
- data/app/views/completion_kit/runs/_response_row.html.erb +3 -1
- data/app/views/completion_kit/runs/_status_panel.html.erb +4 -3
- data/lib/completion_kit/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ecdbb9977e07a943af3309aa8e1353ebaa16e7556a7bd362c5d2b7a63812d15e
|
|
4
|
+
data.tar.gz: 9b3ff099f006237a04d26040c3cfeab2fe331ac7b07e4f5aa3fb016839182800
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 549b39f898a3951b4426bc71f8b2665fa88ccea18bd21e290fd91ee60ca80cec64deff6de6654d0037ccf20b4a3e929b44fde79a74965bf3e5bb859721307f9d
|
|
7
|
+
data.tar.gz: efa593027d5439bd970f6cbb74479bd2d59063ebff99a5cc0b767788661fdf9605e55f7fdc1a652eef101f845d3367031fc089a168c8583a4f4ca556de525366
|
|
@@ -1214,27 +1214,6 @@ tr:hover .ck-chip--publish {
|
|
|
1214
1214
|
border-top: 1px dashed var(--ck-line);
|
|
1215
1215
|
}
|
|
1216
1216
|
|
|
1217
|
-
.ck-run-status__retry {
|
|
1218
|
-
appearance: none;
|
|
1219
|
-
font-family: var(--ck-mono);
|
|
1220
|
-
font-size: 0.74rem;
|
|
1221
|
-
font-weight: 600;
|
|
1222
|
-
letter-spacing: 0.12em;
|
|
1223
|
-
text-transform: uppercase;
|
|
1224
|
-
padding: 0.7rem 1.1rem;
|
|
1225
|
-
border: 1px solid rgba(248, 113, 113, 0.5);
|
|
1226
|
-
background: rgba(248, 113, 113, 0.08);
|
|
1227
|
-
color: var(--ck-danger);
|
|
1228
|
-
border-radius: var(--ck-radius);
|
|
1229
|
-
cursor: pointer;
|
|
1230
|
-
transition: background 0.15s, border-color 0.15s;
|
|
1231
|
-
}
|
|
1232
|
-
|
|
1233
|
-
.ck-run-status__retry:hover {
|
|
1234
|
-
background: rgba(248, 113, 113, 0.16);
|
|
1235
|
-
border-color: var(--ck-danger);
|
|
1236
|
-
}
|
|
1237
|
-
|
|
1238
1217
|
.ck-run-status__cells {
|
|
1239
1218
|
display: flex;
|
|
1240
1219
|
align-items: stretch;
|
|
@@ -25,6 +25,14 @@ module CompletionKit
|
|
|
25
25
|
render partial, runs: runs
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
+
def ck_retry_failures_label(generated_failed, judged_failed)
|
|
29
|
+
if generated_failed.zero?
|
|
30
|
+
"Retry scoring on #{pluralize(judged_failed, "response")}"
|
|
31
|
+
else
|
|
32
|
+
"Retry #{pluralize(generated_failed + judged_failed, "failed response")}"
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
28
36
|
def ck_button_classes(tone = :dark, variant: :solid)
|
|
29
37
|
base = "ck-button"
|
|
30
38
|
|
|
@@ -57,10 +57,14 @@ module CompletionKit
|
|
|
57
57
|
def fully_reviewed?
|
|
58
58
|
metric_ids = run.metric_ids
|
|
59
59
|
return true if metric_ids.empty?
|
|
60
|
-
reviewed_metric_ids = reviews.select { |review|
|
|
60
|
+
reviewed_metric_ids = reviews.select { |review| review.status == "succeeded" }.map(&:metric_id).uniq
|
|
61
61
|
(metric_ids - reviewed_metric_ids).empty?
|
|
62
62
|
end
|
|
63
63
|
|
|
64
|
+
def scoring_failed?
|
|
65
|
+
reviews.any? { |review| review.status == "failed" }
|
|
66
|
+
end
|
|
67
|
+
|
|
64
68
|
private
|
|
65
69
|
|
|
66
70
|
def requires_response_text?
|
|
@@ -5,6 +5,12 @@ module CompletionKit
|
|
|
5
5
|
|
|
6
6
|
STATUSES = %w[pending running completed failed].freeze
|
|
7
7
|
INSERT_BATCH_SIZE = 1000
|
|
8
|
+
REVIEW_RETRY_RESET = {
|
|
9
|
+
status: "pending",
|
|
10
|
+
attempts: 0,
|
|
11
|
+
error_provider: nil, error_class: nil, error_status: nil, error_message: nil,
|
|
12
|
+
ai_score: nil, passed: nil, ai_feedback: nil
|
|
13
|
+
}.freeze
|
|
8
14
|
|
|
9
15
|
belongs_to :prompt, optional: true
|
|
10
16
|
belongs_to :dataset, optional: true
|
|
@@ -492,15 +498,21 @@ module CompletionKit
|
|
|
492
498
|
def retry_failures!(only: nil)
|
|
493
499
|
scope = responses.where(status: "failed")
|
|
494
500
|
scope = scope.where(id: only) if only.present?
|
|
501
|
+
failed_response_ids = scope.pluck(:id)
|
|
502
|
+
|
|
503
|
+
# A response can generate fine and still have a review blow up, so those
|
|
504
|
+
# reviews are retryable on their own without regenerating the response.
|
|
505
|
+
unscored = Review.where(status: "failed")
|
|
506
|
+
.where.not(metric_id: nil)
|
|
507
|
+
.where(response_id: responses.where(status: "succeeded").select(:id))
|
|
508
|
+
unscored = unscored.where(response_id: only) if only.present?
|
|
509
|
+
unscored_pairs = unscored.pluck(:response_id, :metric_id)
|
|
510
|
+
|
|
511
|
+
return self if failed_response_ids.empty? && unscored_pairs.empty?
|
|
495
512
|
|
|
496
513
|
transaction do
|
|
497
|
-
failed_response_ids
|
|
498
|
-
|
|
499
|
-
status: "pending",
|
|
500
|
-
attempts: 0,
|
|
501
|
-
error_provider: nil, error_class: nil, error_status: nil, error_message: nil,
|
|
502
|
-
ai_score: nil, passed: nil, ai_feedback: nil
|
|
503
|
-
)
|
|
514
|
+
Review.where(response_id: failed_response_ids, status: "failed").update_all(REVIEW_RETRY_RESET)
|
|
515
|
+
unscored.update_all(REVIEW_RETRY_RESET)
|
|
504
516
|
scope.update_all(
|
|
505
517
|
status: "pending",
|
|
506
518
|
attempts: 0,
|
|
@@ -509,10 +521,25 @@ module CompletionKit
|
|
|
509
521
|
)
|
|
510
522
|
update!(status: "running")
|
|
511
523
|
failed_response_ids.each { |rid| GenerateRowJob.perform_later(id, rid) }
|
|
524
|
+
enqueue_review_retries(unscored_pairs)
|
|
512
525
|
end
|
|
513
526
|
self
|
|
514
527
|
end
|
|
515
528
|
|
|
529
|
+
def enqueue_review_retries(pairs)
|
|
530
|
+
return if pairs.empty?
|
|
531
|
+
|
|
532
|
+
kinds = Metric.where(id: pairs.map(&:last).uniq).pluck(:id, :metric_type).to_h
|
|
533
|
+
pairs.each do |response_id, metric_id|
|
|
534
|
+
if kinds[metric_id] == "check"
|
|
535
|
+
CheckReviewJob.perform_later(response_id, metric_id, id)
|
|
536
|
+
else
|
|
537
|
+
JudgeReviewJob.perform_later(response_id, metric_id, id)
|
|
538
|
+
end
|
|
539
|
+
end
|
|
540
|
+
RunCompletionCheckJob.perform_later(id)
|
|
541
|
+
end
|
|
542
|
+
|
|
516
543
|
def progress_snapshot
|
|
517
544
|
generated_done = responses.where(status: "succeeded").count
|
|
518
545
|
generated_failed = responses.where(status: "failed").count
|
|
@@ -54,7 +54,9 @@
|
|
|
54
54
|
<span class="ck-chip ck-chip--warning">Retrying <%= response.attempts %>/5</span>
|
|
55
55
|
<% end %>
|
|
56
56
|
<% when "succeeded" %>
|
|
57
|
-
<% if response.
|
|
57
|
+
<% if response.scoring_failed? && run.status != "running" %>
|
|
58
|
+
<span class="ck-chip ck-chip--danger">Failed</span>
|
|
59
|
+
<% elsif response.fully_reviewed? %>
|
|
58
60
|
<span class="ck-chip ck-chip--done">Done</span>
|
|
59
61
|
<% elsif run.status == "running" %>
|
|
60
62
|
<span class="ck-chip">Judging</span>
|
|
@@ -111,9 +111,10 @@
|
|
|
111
111
|
</div>
|
|
112
112
|
|
|
113
113
|
<% if failed_count > 0 %>
|
|
114
|
-
<%= button_to
|
|
115
|
-
|
|
116
|
-
|
|
114
|
+
<%= button_to ck_retry_failures_label(snap[:generated_failed], snap[:judged_failed]),
|
|
115
|
+
retry_failures_run_path(run), method: :post,
|
|
116
|
+
class: ck_button_classes(:light, variant: :outline),
|
|
117
|
+
form_class: "ck-run-status__action" %>
|
|
117
118
|
<% end %>
|
|
118
119
|
</section>
|
|
119
120
|
<% end %>
|