ChatGPT a ouvert le premier plug-in, apprenons le code source ~

 

Le 23 mars, OpenAI a sorti un autre blockbuster : le lancement d'un système de plug-in pour ChatGPT !

Cette décision signifie que ChatGPT inaugurera le moment "APP Store", c'est-à-dire qu'autour de ses capacités, un écosystème de développeurs sera formé pour créer un "système d'exploitation" basé sur l'IA !

Le système de plug-in apportera un saut qualitatif à ChatGPT, car avec l'aide de services de plug-in, il peut obtenir des informations Internet en temps réel et appeler des applications tierces (réservation de vols d'hôtel, commande de nourriture, shopping, interrogation des prix des actions , etc.).

ChatGPT est un cerveau extrêmement intelligent, et les plug-ins deviendront ses yeux, ses oreilles, ses mains, ses pieds et même ses ailes, avec des capacités incroyables, et l'avenir est inimaginable !

L'officiel fournit actuellement deux plugins :

  • Un navigateur Web. À l'aide de l'API du nouveau navigateur Bing, recherchez du contenu Internet en temps réel et donnez des réponses et des liens

  • Un interpréteur de code. À l'aide de l'interpréteur Python, vous pouvez résoudre des problèmes mathématiques, analyser et visualiser des données, éditer des images, éditer des vidéos, etc., et également prendre en charge le téléchargement de fichiers traités.

En outre, OpenAI a également ouvert un plug-in de récupération de base de connaissances chatgpt-retrieval-plugin, qui récupère des informations à partir de diverses sources de données (telles que des fichiers, des notes, des e-mails et des documents publics) via le langage naturel. Avec le code open source disponible, les développeurs peuvent déployer leurs propres versions du plugin.

Imaginez si je fournissais un "plugin de base de connaissances Python" avec tous les documents officiels comme source de données, puis toute question sur l'utilisation de Python à l'avenir, j'ai juste besoin de demander à ChatGPT, puis il appelle le plugin et analyse les données, et enfin les retours me donnent une réponse exacte. Cela vous fera gagner beaucoup de temps !

Non seulement cela, vous pouvez également utiliser des livres comme sources de données pour créer "Journey to the West Knowledge Base", "Dream of Red Mansions Knowledge Base", "Encyclopedia Knowledge Base", "Personal Library Knowledge Base", etc. assistant expert avec des revues académiques comme source de données, et il sera désormais très facile d'écrire des articles et de rechercher du matériel ; utilisez les sources de données de Socrates, Jobs, Musk et d'autres célébrités pour créer un consultant personnel personnalisé...

En tant que premier plug-in open source ChatGPT, le projet chatgpt-retrieval-plugin s'est classé premier sur la liste des tendances Github dès sa sortie et a obtenu 11 000 étoiles  en  seulement une semaine après sa sortie.

Ce projet est entièrement écrit en Python, que ce soit dans le but d'apprendre la programmation, ou pour référence dans le développement d'autres plug-ins à l'avenir, cela vaut la peine de l'étudier attentivement.

Ensuite, je partagerai quelques informations que j'ai acquises en lisant la documentation du projet et le code source.

Tout d'abord, le projet contient environ 3 Ko de code Python, ce qui n'est pas à grande échelle. La structure du projet est également très claire, le répertoire est le suivant :

Table des matières décrire
datastore Contient la logique de base pour stocker et interroger les incorporations de documents à l'aide de divers fournisseurs de bases de données vectorielles
examples Inclut des exemples de configuration, des méthodes d'authentification et des exemples orientés fournisseur de programmes
models Contient les modèles de données utilisés par les plug-ins, tels que les modèles de document et de métadonnées
scripts Contient des scripts utiles pour le traitement et le téléchargement de fichiers à partir de différentes sources de données
server Stocker l'implémentation principale du serveur FastAPI
services Contient des services utilitaires pour des tâches telles que la segmentation, l'extraction de métadonnées et la détection de PII
tests Comprend des tests d'intégration pour divers fournisseurs de bases de données vectorielles
.well-known Stockez les fichiers manifestes du plug-in et les formats OpenAPI, définissez la configuration du plug-in et les spécifications de l'API, etc.

Hormis les exemples, les tests, les fichiers de configuration, etc., les trois répertoires principaux sont les suivants :

stockage de données de banque de données

Les données textuelles de la source de données seront mappées sur un espace vectoriel de faible dimension, puis stockées dans la base de données vectorielles. Des exemples officiels de solutions de stockage de données telles que Pinecone, Weaviate, Zilliz, Milvus, Qdrant et Redis ont été fournis. De plus, plusieurs demandes d'extraction souhaitent ajouter la prise en charge de PostgreSQL, et il y a une forte probabilité qu'elle soit intégrée à l'avenir.

Utilisé ici 抽象工厂设计模式 , DataStore est une classe abstraite, et chaque bibliothèque de stockage de données est une classe d'implémentation concrète, qui doit implémenter trois méthodes abstraites :

(1) _upsert(chunks: Dict[str, List[DocumentChunk]]) -> List[str] La méthode reçoit un paramètre de dictionnaire, qui contient une liste d'objets DocumentChunk, et les insère dans la base de données. La valeur de retour est une liste d'ID de document.

(2) _query(queries: List[QueryWithEmbedding]) -> List[QueryResult] La méthode reçoit un paramètre de liste contenant le texte de la requête à intégrer. Renvoie une liste de résultats de requête contenant des fragments de document et des scores correspondants.

(3) delete(ids: Optional[List[str]] = None, filter: Optional[DocumentMetadataFilter] = None, delete_all: Optional[bool] = None, ) -> bool  méthode, supprimer en fonction de l'identifiant et d'autres conditions de filtre, ou supprimer tout. Indique si l'opération a réussi.

Il est à noter que les modules de ce répertoire factory.py utilisent la syntaxe match-case nouvellement introduite par Python 3.10, suivant la nouvelle tendance de la communauté Python~

interface serveur serveur

Ce répertoire n'a qu'un seul main.py fichier, qui est l'entrée de démarrage pour l'ensemble du projet. Il utilise le framework FastAPI actuel, fournit plusieurs API pour ajouter, supprimer, modifier et vérifier, et utilise le module uvicorn pour démarrer le service.

  • /upsert-file Interface, utilisée pour télécharger un seul fichier, le convertir en un objet Document, puis ajouter ou mettre à jour

  • /upsert Interface pour télécharger une série d'objets de document pour l'ajout ou la mise à jour

  • /query Interface, transmettez une série de conditions de texte, convertissez-les en objets QueryWithEmbedding, puis interrogez à partir de la base de données vectorielle

  • /delete Interfacer, supprimer ou supprimer toutes les données de la base de données selon les conditions

Parmi ces interfaces, les fonctions d'ajout, de modification et de suppression sont principalement destinées aux développeurs/mainteneurs, et ChatGPT n'a besoin que d'appeler l'interface de requête du plug-in. Par conséquent, une sous-application "/sub" est également créée dans le code, qui ne contient que /query l'interface et est fournie pour les appels ChatGPT.

De plus, il utilise la méthode de montage de FastAPI pour monter un répertoire de fichiers statiques "/.well-known", qui expose des informations de base sur le plugin, telles que le nom, la description, l'auteur, le logo, l'e-mail, les documents d'interface fournis à OpenAPI, etc attends.

procédé de traitement de tâche de services

Sous ce répertoire se trouvent certaines fonctions courantes, telles que les suivantes :

(1) Le fichier chunks.py contient des fonctions qui divisent les chaînes et les objets Document en petits morceaux et obtiennent des vecteurs d'incorporation pour chaque morceau.

(2) Le fichier file.py fournit des fonctions pour extraire le contenu textuel et les métadonnées des fichiers téléchargés. Les types de fichiers actuellement pris en charge pour l'analyse incluent PDF, texte brut, Markdown, Word, CSV et PPTX.

(3) Le fichier openai.py contient deux fonctions : La fonction get_embeddings utilise le  text-embedding-ada-002 modèle OpenAI pour intégrer le texte donné. La fonction get_chat_completion génère une conversation à l'aide de l'API ChatCompletion d'OpenAI.

Dans l'ensemble, plusieurs fonctions d'interface de ce plug-in sont très claires et la logique du code n'est pas compliquée. L'opération d'intégration de texte de base s'effectue à l'aide de l'interface d'intégration d'openai, et les opérations de stockage et d'interrogation des informations de bloc de texte dépendent des fonctions de diverses bases de données vectorielles.

Il y a un blogueur sur YouTube qui a dessiné un diagramme schématique à la main. Bien que la police soit griffonnée, vous pouvez le comprendre :

Sa vidéo vaut la peine d'être regardée, car l'up master présente non seulement brièvement le principe de fonctionnement du plug-in, mais montre également comment déployer sur Digital Ocean, comment modifier la configuration et comment déboguer, et il a le plug-in avec l'autorisation de ChatGPT, afin qu'il puisse déployer le sien Le plug-in est connecté à ChatGPT, et l'utilisation du plug-in de la base de connaissances est démontrée sur place !

Vidéo : https://www.youtube.com/watch?v=hpePPqKxNq8

À l'heure actuelle, il existe encore relativement peu d'informations sur l'introduction, le développement et la configuration du plug-in ChatGPT, après tout, il vient d'être lancé. Cependant, d'innombrables personnes et organisations postulent pour la liste d'attente.Une fois ouverts, divers plug-ins élargiront définitivement l'écologie ChatGPT, à l'instar des riches bibliothèques open source de la communauté Python.

Enfin, la documentation officielle du plug-in chatgpt-retrieval-plugin est l'information de première main la plus détaillée, et je recommande à tous de l'étudier. https://github.com/openai/chatgpt-retrieval-plugin

 

Je suppose que tu aimes

Origine blog.csdn.net/wshyb0314/article/details/129860292
conseillé
Classement