Je suis récemment tombé sur la bibliothèque des instructeurs et je dois dire que je suis assez impressionné. Le concept de structuration de données non structurées est à la fois puissant et, oserais-je dire, un peu magique. L’idée selon laquelle vous pouvez prendre des données partout et y imposer de l’ordre d’une manière ou d’une autre – eh bien, c’est juste mon genre de magie.
Mais… comment ça marche exactement ?
Pour le savoir, j'ai passé du temps à fouiller dans les entrailles de cette bibliothèque et j'ai découvert qu'il y a deux acteurs clés dans les coulisses qui sont responsables d'une grande partie de sa magie.
import instructor from pydantic import BaseModel from openai import OpenAI
Maintenant, si vous êtes familier avec la validation des données et la gestion des paramètres de Python, vous avez probablement entendu parler de Pydantic. Et si ce n’est pas le cas… eh bien, attachez votre ceinture ! Il s'agit d'une bibliothèque étonnante qui vous permet de définir des structures de données, puis de valider que les données entrantes correspondent à ces structures, en temps réel. Considérez-le comme le videur d'un club chic, qui s'assure que seules les bonnes données entrent.
FastAPI, qui est un autre excellent outil, fait un excellent usage de Pydantic pour garantir que les données transitant via une API sont au bon format. Alors, quelle est la prochaine étape ? Maintenant que nous avons défini notre structure, comment faire en sorte qu'un LLM (comme le GPT d'OpenAI) la suive ? Hum…
Ma première hypothèse était que Pydantic pourrait permettre une sorte de sérialisation, en convertissant la structure des données en quelque chose qu'un LLM peut facilement comprendre et avec lequel travailler. Et il s’avère que je n’avais pas tort.
Pydantic vous permet de sérialiser vos données dans un dictionnaire avec la méthode suivante :
model.model_dump(...) # Dumps the model into a dictionary
Cette méthode convertit de manière récursive vos modèles Pydantic en dictionnaires, qui peuvent ensuite être introduits dans un LLM pour traitement. Jusqu'ici, tout va bien. Mais ensuite je suis tombé sur quelque chose d'encore plus intéressant :
Ça va mieux. Pydantic ne se contente pas de convertir les données en dictionnaires : il peut également générer un schéma JSON pour votre modèle. C'est la clé, car vous avez maintenant un plan de la structure que vous souhaitez que le LLM suive.
Voici où les choses ont vraiment commencé à cliquer :
# Generate a JSON schema for a Pydantic model response_model.model_json_schema()
Bingo ! Vous disposez désormais d’un schéma clair qui définit exactement à quoi doivent ressembler les données. C'est le plan que nous pouvons envoyer au LLM, afin qu'il sache exactement comment structurer sa production.
import instructor from pydantic import BaseModel from openai import OpenAI
Ici, la bibliothèque transmet le schéma au LLM, lui demandant de renvoyer des données conformes à cette structure. Le message est clair : "Hey LLM, respecte ce schéma lorsque vous générez votre sortie." C'est comme donner à votre LLM une carte détaillée et lui dire : « Suivez exactement ces instructions. »
Donc, après toute cette enquête, je suis maintenant convaincu : la sérialisation de Pydantic et la génération de schémas JSON sont ce qui permet à la bibliothèque Instructor d'obtenir un LLM pour suivre les formats de données structurés.
Merci d'être resté à mes côtés tout au long de cette enquête amusante (et légèrement alambiquée). Qui aurait cru que les données non structurées pouvaient être apprivoisées avec un peu d'aide des bibliothèques Python et un peu d'incitation créative ?
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!