@lewist9x/distil
Version:
An opinionated library for managing LLM pipelines. Define, track, rate, and curate prompt–completion pairs for fine-tuning.
103 lines (96 loc) • 3.29 kB
HTML
<div class="uk-card uk-card-body">
<div class="flex justify-between items-start mb-6">
<div>
<h2 class="uk-h3">Generation Details</h2>
<p class="text-sm text-muted-foreground">ID: {{truncate id 8}}</p>
<p class="text-sm text-muted-foreground">Created: {{formatDate timestamp}}</p>
</div>
<div class="flex items-center space-x-2">
<div class="uk-rating">
{{#times 5}}
<button class="uk-rating-item {{#if (lte this ../rating)}}uk-rating-item-active{{/if}}"
onclick="rateGeneration('{{../id}}', {{this}})">★</button>
{{/times}}
</div>
<button class="uk-btn {{#if isFinetuned}}uk-btn-primary{{else}}uk-btn-ghost{{/if}}"
onclick="markForFinetuning('{{id}}')">
{{#if isFinetuned}}
<uk-icon icon="check" cls-custom="mr-2"></uk-icon>Finetuned
{{else}}
<uk-icon icon="plus" cls-custom="mr-2"></uk-icon>Mark for FT
{{/if}}
</button>
</div>
</div>
<div class="space-y-6">
<div class="uk-card uk-card-body uk-card-border">
<h3 class="uk-h4 mb-2">System Prompt</h3>
<pre class="uk-pre">{{systemPrompt}}</pre>
</div>
<div class="uk-card uk-card-body uk-card-border">
<h3 class="uk-h4 mb-2">User Prompt</h3>
<pre class="uk-pre">{{userPrompt}}</pre>
</div>
<div class="uk-card uk-card-body uk-card-border">
<h3 class="uk-h4 mb-2">Output</h3>
<pre class="uk-pre">{{output}}</pre>
</div>
{{#if metadata}}
<div class="uk-card uk-card-body uk-card-border">
<h3 class="uk-h4 mb-2">Metadata</h3>
<pre class="uk-pre">{{json metadata}}</pre>
</div>
{{/if}}
</div>
<div class="mt-6 flex justify-end">
<button class="uk-btn uk-btn-ghost" onclick="showGenerationList()">
<uk-icon icon="arrow-left" cls-custom="mr-2"></uk-icon>Back to List
</button>
</div>
</div>
<style>
.uk-rating {
display: flex;
gap: 0.25rem;
}
.uk-rating-item {
color: var(--muted);
font-size: 1.25rem;
padding: 0 2px;
background: none;
border: none;
cursor: pointer;
}
.uk-rating-item-active {
color: var(--warning);
}
.uk-pre {
background: var(--muted-background);
border-radius: var(--radius);
padding: 1rem;
margin: 0;
font-size: 0.875rem;
color: var(--muted-foreground);
white-space: pre-wrap;
}
</style>
<script>
function rateGeneration(id, rating) {
htmx.ajax('POST', `/dashboard/pipelines/${pipelineName}/versions/${versionId}/generations/${id}/rate`, {
values: { rating },
swap: 'innerHTML'
});
}
function markForFinetuning(id) {
htmx.ajax('POST', `/dashboard/pipelines/${pipelineName}/versions/${versionId}/generations/finetune`, {
values: { generationIds: [id] },
swap: 'innerHTML'
});
}
function showGenerationList() {
htmx.ajax('GET', `/dashboard/pipelines/${pipelineName}/versions/${versionId}/generations`, {
target: '#content-area',
swap: 'innerHTML'
});
}
</script>