L'IA a-t-elle sa place dans la validation des formulaires ? Je crois que c'est le cas et dans cet article, je vais vous montrer où cela peut être appliqué, pourquoi cela a du sens et comment le construire.
Dea est ma nouvelle startup qui aide les constructeurs à suivre, planifier et expédier leur prochaine grande idée de produit. Une étape importante de la plateforme est de pouvoir capturer des idées. Pour cela, nous disposons d'un formulaire rapide mais structuré qui capture le quoi, le qui et le résultat du produit.
Chaque entrée a une validation standard optimisée par Zod et Superforms. Cependant, nous voulons nous assurer que le projet initial est cohérent, légal et sûr. C'est là que l'IA peut nous aider.
Nous avons créé une fonction de validation simple à l'aide du SDK AI de Vercel.
async function isValidIdea(draft: string) { const { object } = await generateObject({ model: openai('gpt-4o-mini'), system: `You are responsible for checking if an idea is coherent, legal and safe. Please reject any ideas that contain spam or harmful content. If you are unsure then allow the idea.`, prompt: draft, temperature: 0, schema: z.object({ isValid: z.boolean() }) }); return object.isValid; }
En utilisant generateObject, nous pouvons obtenir une sortie structurée et de type sécurisé du LLM. Décomposons les 3 parties de l'invite :
Ensuite, dans notre action de formulaire, nous appelons cette fonction dans un bloc try/catch car les requêtes réseau peuvent échouer pour un certain nombre de raisons. Dans notre cas, en cas d'échec d'OpenAI, nous autorisons toujours la validation.
const form = await superValidate(request, zod(ideaSchemaV1)); if (!form.valid) { return fail(400, { form, error: null }); } const draft = ideaToDraft(form.data); try { const isValid = await isValidIdea(draft); if (!isValid) { return fail(400, { form, error: 'Please check your answers' }); } } catch (e) { console.error(e); // don't prevent submission if the ai validation fails }
Évidemment, si vous pouvez valider vos entrées en toute confiance sans IA, n'utilisez pas l'IA. S'appuyer sur un LLM est sujet à l'incertitude et introduit de la latence.
Cependant, il existe des cas d'utilisation valables lorsque l'entrée n'est pas structurée ou que vous avez besoin d'une analyse plus approfondie des entrées. Une bonne règle de base est d’essayer l’IA, sinon vous auriez une étape d’approbation humaine/manuelle.
Utilisez un modèle rapide, 4o-mini au lieu de o1, pour garantir une réponse rapide et la meilleure UX pour l'utilisateur final. Dans cet esprit, fournissez également une indication à l'utilisateur que le formulaire est en cours de validation.
Si ce n'est pas 100 % nécessaire, nous pensons qu'il est préférable d'utiliser la validation IA non bloquante. Dans notre exemple, nous laissons passer la validation si l'appel LLM échoue. Vous pouvez également inciter l'utilisateur à vérifier ses réponses tout en lui permettant de confirmer qu'elles sont correctes et qu'elles souhaitent continuer.
Enfin, ne l'utilisez pas pour des choses pour lesquelles les LLM sont connus pour être mauvais, comme la conversion d'unités. Cela pourrait être possible avec l'appel de fonction, mais faites attention à la latence.
J'espère que cela vous a donné quelques idées sur la façon d'appliquer la validation de l'IA avec vos propres formulaires et capture de données. Si vous faites déjà quelque chose de similaire, nous serions ravis de connaître les leçons que vous avez apprises.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!