Quando o modelo falha
Tradução automática
Esta página foi traduzida automaticamente do inglês e ainda não foi revisada por um falante nativo; correções são bem-vindas no GitHub. Se algo não bater, vale o original em inglês. O código e os resultados são os mesmos do original, importados dos arquivos testados.
Tarefa: uma página que usa um modelo deve continuar funcionando — e dizer o que aconteceu — quando o servidor de modelos está fora do ar, lento, ou sem o modelo.
# Recipe: the page goes on, and says so, when the model cannot answer.
paths:
components: ./components
llm:
model: phi3Sem onerror, uma falha de IA para a página com um erro que nomeia o servidor e a causa. Com onerror="continue", a página segue: summary_result.success é falso, summary_result.error.message diz o motivo, e summary fica vazio. O exemplo aponta endpoint= para um servidor que não está rodando, então falha do mesmo jeito em qualquer lugar.
<q:component name="Summary">
<q:set name="text" value="Returns are accepted within 30 days of delivery, with the receipt." />
<!-- endpoint= sends this one call to another server — here one that is not
running, to show the failure. onerror="continue": instead of stopping
the page, the failure is in summary_result and the value is empty. -->
<q:llm name="summary" endpoint="http://127.0.0.1:9" timeout="5" onerror="continue">
<q:prompt>Summarize in five words: {text}</q:prompt>
</q:llm>
<ui:window title="Policy">
<ui:text>{text}</ui:text>
<q:if condition="summary_result.success">
<ui:text>In short: {summary}</ui:text>
<q:else>
<ui:alert variant="info">No summary right now — the assistant is unavailable.</ui:alert>
<ui:text>Why: {summary_result.error.message}</ui:text>
</q:else>
</q:if>
</ui:window>
</q:component><q:test name="the page still renders, and says why" page="/">
<test:visit />
<test:expect status="200" />
<test:expect text="Returns are accepted within 30 days" />
<test:expect text="No summary right now" />
<test:expect text="127.0.0.1:9" />
<test:expect no-text="In short:" />
</q:test>tests/failure.test.q
PASS the page still renders, and says why
1 passed, 0 failedonerror funciona igual em q:llm, q:knowledge, q:agent e q:query. Veja IA-5.