Un guide en anglais simple pour rétroconcevoir le code source de Reddit avec LangChain, Activeloop et GPT-4

Un guide en anglais pour rétroconcevoir le code source de Reddit avec LangChain, Activeloop et GPT-4

Imaginez écrire un logiciel qui pourrait comprendre, aider, voire générer du code, de la même manière qu’un développeur expérimenté le ferait.

Eh bien, c’est possible avec LangChain. En exploitant des modèles avancés tels que VectorStores, Conversational RetrieverChain et LLMs, LangChain nous emmène à un nouveau niveau de compréhension et de génération de code.

Dans ce guide, nous allons rétroconcevoir le référentiel de code source public de Reddit pour la version 1 du site afin de mieux comprendre la base de code et fournir des informations sur son fonctionnement interne. J’ai été inspiré de créer ce guide après avoir lu le tweet de Paul Graham sur le sujet (et parce que je ne connais rien au Lisp, mais je voulais quand même comprendre de quoi il parlait).

Nous utiliserons la technologie d’intégration d’OpenAI et un outil appelé Activeloop pour rendre le code compréhensible et un LLM (GPT-4 dans ce cas) pour converser avec le code. Si vous êtes intéressé par l’utilisation d’un autre LLM ou d’une plateforme différente, consultez mon guide précédent sur la rétro-ingénierie de l’algorithme de Twitter en utilisant DeepInfra et Dolly.

Une fois terminé, nous serons en mesure de contourner le travail difficile nécessaire pour comprendre l’algorithme en demandant à une IA de nous fournir des réponses à nos questions les plus pressantes plutôt que de passer des semaines à les chercher nous-mêmes. Commençons.

Un aperçu conceptuel de la compréhension du code avec LangChain

LangChain est un outil puissant qui peut analyser les référentiels de code sur GitHub. Il regroupe trois parties importantes : VectorStores, Conversational RetrieverChain et un LLM (modèle de langue) pour vous aider à comprendre le code, répondre aux questions à son sujet dans le contexte et même générer du nouveau code dans les référentiels GitHub.

Le Conversational RetrieverChain est un système qui aide à trouver et à récupérer des informations utiles à partir d’un VectorStore. Il utilise des techniques intelligentes telles que le filtrage et le classement contextuels pour déterminer quels extraits de code et informations sont les plus pertinents pour la question ou la requête spécifique que vous avez. Ce qui le distingue, c’est qu’il tient compte de l’historique de la conversation et du contexte dans lequel la question est posée. Cela signifie qu’il peut vous fournir des résultats de haute qualité et pertinents qui répondent spécifiquement à vos besoins. En termes plus simples, c’est comme avoir un assistant intelligent qui comprend le contexte de vos questions et vous donne les meilleures réponses possibles en fonction de ce contexte.

Maintenant, examinons le flux de travail de LangChain et voyons comment il fonctionne à un niveau élevé :

  • Indexer la base de code : La première étape consiste à cloner le référentiel cible que vous souhaitez analyser. Chargez tous les fichiers du référentiel, divisez-les en morceaux plus petits et lancez le processus d’indexation. Si vous disposez déjà d’un ensemble de données indexé, vous pouvez même sauter cette étape.
  • Intégration et stockage du code : Pour rendre les extraits de code plus facilement compréhensibles, LangChain utilise un modèle d’intégration conscient du code. Ce modèle aide à capturer l’essence du code et stocke les extraits intégrés dans un VectorStore, les rendant facilement accessibles pour les futures requêtes.
  • Compréhension de la requête : C’est là que votre LLM entre en jeu. Vous pouvez utiliser un modèle comme GPT-4 pour traiter vos requêtes. Le modèle est utilisé pour analyser vos requêtes et comprendre la signification qui s’y cache en tenant compte du contexte et en extrayant les informations importantes. En faisant cela, le modèle aide LangChain à interpréter avec précision vos requêtes et à vous fournir des résultats précis et pertinents.
  • Construire le récupérateur : Une fois que votre question ou requête est claire, le Conversational RetrieverChain entre en jeu. Il parcourt le VectorStore, où les extraits de code sont stockés, et trouve les extraits de code les plus pertinents pour votre requête. Ce processus de recherche est très flexible et peut être personnalisé pour répondre à vos besoins. Vous avez la possibilité d’ajuster les paramètres et d’appliquer des filtres spécifiques à vos besoins, afin d’obtenir les résultats les plus précis et les plus utiles pour votre requête.
  • Construire la chaîne conversationnelle : Une fois que vous avez configuré le récupérateur, il est temps de construire la chaîne conversationnelle. Cette étape consiste à ajuster les paramètres du récupérateur pour mieux répondre à vos besoins et à appliquer d’autres filtres éventuellement nécessaires. En faisant cela, vous pouvez réduire la recherche et vous assurer de recevoir les résultats les plus précis, précis et pertinents pour vos requêtes. Essentiellement, cela vous permet d’affiner le processus de récupération pour obtenir les informations les plus utiles.
  • Poser des questions : Maintenant vient la partie excitante ! Vous pouvez poser des questions sur la base de code en utilisant le Conversational Retrieval Chain. Il générera des réponses complètes et contextuellement adaptées pour vous. Votre LLM, faisant partie de la chaîne conversationnelle, tient compte des extraits de code récupérés et de l’historique de la conversation pour vous fournir des réponses détaillées et précises.

En suivant ce flux de travail, vous pourrez utiliser efficacement LangChain pour acquérir une compréhension plus approfondie du code, obtenir des réponses contextuelles à vos questions et même générer des extraits de code dans des dépôts GitHub. Maintenant, voyons cela en action, étape par étape.

Guide étape par étape

Plongeons dans la mise en œuvre réelle.

1. Acquisition des clés

Pour commencer, vous devrez vous inscrire sur les sites respectifs et obtenir les clés API pour Activeloop et OpenAI.

2. Configuration du fichier indexer.py

Créez un fichier Python, par exemple indexer.py, où vous indexerez les données. Importez les modules nécessaires et définissez les clés API en tant que variables d’environnement.

3. Clonage et indexation du dépôt cible

Ensuite, nous allons cloner le dépôt de l’algorithme Reddit, charger, diviser et indexer les documents. Vous pouvez cloner l’algorithme à partir de ce lien.

4. Intégration des extraits de code

Ensuite, nous utilisons les embeddings OpenAI pour intégrer les extraits de code. Ces embeddings sont ensuite stockés dans un VectorStore, ce qui nous permet d’effectuer une recherche de similarité efficace.

5. Utilisation de GPT-4 pour traiter et comprendre les requêtes des utilisateurs

Maintenant, nous configurons un autre fichier Python, question.py, pour utiliser GPT-4, un modèle de langage disponible avec OpenAI, afin de traiter et comprendre les requêtes des utilisateurs.

6. Construction du récupérateur

Nous construisons un récupérateur en utilisant le VectorStore que nous avons créé précédemment.

7. Construction de la chaîne conversationnelle

La chaîne de récupération conversationnelle relie le récupérateur et le modèle de langage. Cela permet à notre système de traiter les requêtes des utilisateurs et de générer des réponses contextuelles.

8. Poser des questions

Nous pouvons maintenant poser des questions sur le code source Reddit. Les réponses fournies par la chaîne de récupération conversationnelle sont contextuelles et basées directement sur la base de code.

Voici quelques-unes des réponses que j’ai obtenues :

Que demanderez-vous ? Que voulez-vous apprendre ? Faites-le moi savoir !

Limitations

Après avoir discuté avec Shriram Krishnamurthi sur Twitter, j’ai réalisé que je devais souligner que cette approche présente certaines limitations pour la compréhension du code.

  • L’analyse de ce code peut souvent être incomplète et parfois, vous manquerez des détails clés en raison d’erreurs dans cette analyse qui pourraient vous faire prendre le mauvais chemin.
  • Il peut y avoir une certaine “pollution” des résultats, qui peut survenir lorsque votre LLM possède des connaissances sur ses données d’entraînement avec des termes qui se chevauchent. Par exemple, le concept de “Reddit Karma” est probablement déjà stocké dans la base de connaissances de GPT-4, donc lui demander comment fonctionne Karma pourrait le pousser à extraire du contexte de ses données d’entraînement par rapport au code fourni.

Vous devrez faire preuve de bon jugement et adopter une approche de confiance mais de vérification pour cette approche initiale approximative. Ou peut-être pouvez-vous pousser les choses plus loin et construire un meilleur système !

Conclusion

Tout au long de ce guide, nous avons exploré l’ingénierie inverse du dépôt de code source public de Reddit pour la version 1 du site en utilisant LangChain. En exploitant les capacités de l’IA, nous gagnons un temps précieux et remplaçons l’examen manuel du code par des réponses automatisées aux requêtes.

LangChain est un outil puissant qui révolutionne la compréhension et la génération de code. En utilisant des modèles avancés tels que VectorStores, Conversational RetrieverChain et un LLM, LangChain permet aux développeurs d’analyser efficacement les dépôts de code, de fournir des réponses contextuelles et de générer du nouveau code.

Le flux de travail de LangChain implique l’indexation de la base de code, l’intégration des extraits de code, le traitement des requêtes des utilisateurs avec des modèles de langage et l’utilisation de la chaîne de récupération conversationnelle pour récupérer des extraits de code pertinents. En personnalisant le récupérateur et en construisant la chaîne conversationnelle, les développeurs peuvent affiner le processus de récupération pour obtenir des résultats précis.

En suivant le guide étape par étape, vous pouvez exploiter LangChain pour améliorer votre compréhension du code, obtenir des réponses contextuelles et même générer des extraits de code dans des dépôts GitHub. LangChain ouvre de nouvelles possibilités en termes de productivité et de compréhension. Qu’allez-vous construire avec ? Merci de votre lecture !

We will continue to update IPGirl; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AI

Un nouvel ensemble de données d'images de l'Arctique stimulera la recherche en intelligence artificielle

Le jeu de données, collecté dans le cadre d'une mission scientifique de la Garde côtière américaine, sera publié en o...

AI

Découvrez InstaFlow Un nouveau modèle d'IA génératif en une seule étape dérivé de StableDiffusion (SD), un logiciel open-source.

Les modèles de diffusion ont provoqué une révolution dans la génération de texte vers image, offrant une qualité et u...

AI

Dévoilement de GPTBot la décision audacieuse d'OpenAI de parcourir le Web

Dans un tourbillon d’innovation numérique, OpenAI a fait une percée en lançant GPTBot, un robot d’explora...

AI

Ensemble AI dévoile Llama-2-7B-32K-Instruct Une percée dans le traitement du langage à contexte étendu

Un défi multifacette a émergé dans le vaste domaine du traitement automatique du langage naturel : la capacité à comp...

AI

Construction de structures optiques robustes faites de ténèbres

Une équipe de chercheurs de l'Université de Harvard a utilisé des métasurfaces pour générer et manipuler des régions ...

AI

Découvrez FraudGPT Le Jumeau Obscur de ChatGPT

ChatGPT est devenu populaire, influençant la façon dont les gens travaillent et ce qu’ils peuvent trouver en li...