Maison >développement back-end >Tutoriel Python >Explorer la bibliothèque de l'instructeur : structurer des données non structurées (et s'amuser en cours de route)

Explorer la bibliothèque de l'instructeur : structurer des données non structurées (et s'amuser en cours de route)

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-24 15:36:44233parcourir

Exploring the Instructor Library: Structuring Unstructured Data (and Some Fun along the Way)

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.

Rencontrez les joueurs : Pydantic et une invite intéressante

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…

Hypothèse 1 : la sérialisation de Pydantic

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 :

Hypothèse 2 : Générer un schéma JSON

Ç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.

Rassembler tout cela

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. »

Merci de m'avoir supporté

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn