51 lines
2.1 KiB
JavaScript
51 lines
2.1 KiB
JavaScript
export function registerSmallModelRoutes(app, { getSmallModelService }) {
|
|
app.get('/api/small-model', async (req, res) => {
|
|
try {
|
|
const { describeSmallModel, listAuthenticatedProviders } = await getSmallModelService();
|
|
const resolved = await describeSmallModel({
|
|
directory: typeof req.query.directory === 'string' ? req.query.directory : undefined,
|
|
preferredProviderID: typeof req.query.providerID === 'string' ? req.query.providerID : undefined,
|
|
preferredModelID: typeof req.query.modelID === 'string' ? req.query.modelID : undefined,
|
|
});
|
|
res.json({
|
|
available: Boolean(resolved),
|
|
model: resolved,
|
|
authenticatedProviders: await listAuthenticatedProviders(),
|
|
});
|
|
} catch (error) {
|
|
console.error('Failed to resolve small model:', error);
|
|
res.status(500).json({ error: error.message || 'Failed to resolve small model' });
|
|
}
|
|
});
|
|
|
|
app.post('/api/small-model/generate', async (req, res) => {
|
|
try {
|
|
const { generateSmallModelText } = await getSmallModelService();
|
|
const { prompt, system, maxOutputTokens, model, directory, sessionID, preferredProviderID, preferredModelID, restrictToPreferredProvider } = req.body || {};
|
|
const result = await generateSmallModelText({
|
|
prompt,
|
|
system,
|
|
maxOutputTokens,
|
|
model,
|
|
directory,
|
|
sessionID,
|
|
preferredProviderID,
|
|
preferredModelID,
|
|
restrictToPreferredProvider: restrictToPreferredProvider === true,
|
|
});
|
|
res.json(result);
|
|
} catch (error) {
|
|
const statusCode = Number(error?.statusCode) || 500;
|
|
if (statusCode >= 500) {
|
|
console.error('Small model generation failed:', error);
|
|
}
|
|
res.status(statusCode).json({
|
|
error: statusCode === 404
|
|
? (error.message || 'No small model is available')
|
|
: 'The selected Small Model could not complete this action. Choose another model in Settings → Sessions → Small Model and try again.',
|
|
...(error?.code ? { code: error.code } : {}),
|
|
});
|
|
}
|
|
});
|
|
}
|