Le conseiller Solidity Smart-Contract est un outil de pointe conçu pour étendre les capacités des modèles de langue traditionnels pour comprendre et conseiller sur les contrats intelligents de la solidité. À la base, le projet intègre les modèles linguistiques d'Openai avec un vaste référentiel de contrats intelligents vérifiés et de documentation de solidité complète, créant un système spécialisé et conscient du contexte capable de fournir des informations expertes dans le domaine du développement de contrats intelligents.
Ce projet représente une foulée significative dans le fait de combler l'écart entre les modèles de langage à usage général et les exigences nuancées et spécialisées du développement de la blockchain. En formant plus de 5 000 contrats intelligents vérifiés et une documentation de solidité étendue, le conseiller fournit non seulement des réponses théoriques, mais des conseils pratiques et réels fondés sur le code et la documentation vérifiés.
Le succès a été mesuré par la capacité du système à analyser avec précision, comprendre et fournir des conseils pertinents sur le contexte sur les requêtes de solidité complexes. Cela a été réalisé grâce à un mélange sophistiqué de technologies, chacun jouant un rôle crucial dans l'amélioration de l'efficacité du système.


En utilisant Etherscan.py, téléchargé 5 000 contrats intelligents connus et vérifiés à partir de l'API Etherscan. Cela forme l'épine dorsale de notre analyse, fournissant un code de contrat intelligent du monde réel pour l'intégration et l'analyse.
Parallèlement aux contrats intelligents, a extrait la documentation sous forme de fichiers HTML à partir du site Web de la documentation Solidity, garantissant une base complète pour le modèle linguistique.
Le modèle Langchain RetrievalQA sur mesure traite les données ci-dessus. J'ai créé des morceaux d'intégration de taille 1000 avec un chevauchement de 1000, ce qui a entraîné environ 200 000 morceaux pour une analyse détaillée.
Pour les contrats intelligents, un analyseur spécifique à la solidité décompose les contrats en morceaux gérables. Pour le contenu HTML (la documentation officielle de la solidité), j'utilise un séparateur de texte standard. Ces morceaux analysés sont ensuite intégrés pour un traitement ultérieur.
Dans ce projet, la base de données Vector Weavate, équipée du module Text2VEC-contextionnaire, joue un rôle pivot dans la gestion et l'interrogation des données vectorielles dérivées de Solidity Smart Contracts and Documentation. Les bases de données vectorielles comme Weavate sont conçues pour gérer les données vectorisées - essentiellement, les points de données représentés dans l'espace multidimensionnel. Ceci est particulièrement utile dans le domaine de l'apprentissage automatique et du traitement du langage naturel, où des données complexes peuvent être vectorisées pour une analyse efficace et significative.
Weavate utilise des modèles d'apprentissage automatique pour convertir les données de texte en ces vecteurs, permettant des recherches à grande vitesse et sémantiquement pertinentes. Dans le contexte du conseiller Solidity Smart-Contract, tirez les magasins et gère les intérêts (représentations vectorielles) des contrats de solidité et de la documentation. Ces intérêts capturent les significations et les contextes nuancés du texte, permettant au système de fournir des réponses précises et consacrées au contexte aux requêtes utilisateur.
Le module Text2Vec-Contextionnary spécifiquement est essentiel pour comprendre le contexte textuel. Il permet au système d'interpréter le sens derrière les mots et les phrases dans le contexte de la solidité, améliorant la pertinence et la précision des résultats et des réponses de recherche.
Le rôle de Weavate dans ce projet est multiforme:
Pour plus d'informations sur WeAviate et ses capacités, vous pouvez visiter leur site Web officiel et leur documentation:
L'utilisation de Weavate dans ce projet garantit que le conseiller de contrat de Solidity est non seulement puissant dans ses capacités analytiques mais également efficace et évolutive, ce qui en fait un outil de pointe pour l'analyse et les conseils de contrats intelligents.

J'ai adapté et modifié de manière significative l'interface utilisateur de WHUANG214 Cette interface ReactJS et basée sur TypeScript ressemble à un modèle d'interaction ChatGPT, adapté à notre cas d'utilisation spécifique.
Cette API FLASK à base de Python sert de pont crucial entre les requêtes utilisateur et le puissant backend. Il gère efficacement les interactions avec les vecteurs de Weavate et exploite le modèle GPT-4-0613 d'OpenAI pour générer des réponses. Le choix du GPT-4-0613 est stratégique, en raison de sa nature moins restrictive, ce qui est particulièrement bénéfique pour fournir des réponses plus directes et non filtrées sur des sujets sensibles, tels que la rentabilité dans les contrats intelligents.
Pour ceux qui souhaitent explorer d'autres modèles de langue OpenAI, une liste complète peut être trouvée lors de l'aperçu du modèle d'Openai.
De plus, l'API Flask intègre Langchain, un cadre conçu pour améliorer les capacités des modèles de langage par le biais d'agents et d'ingénierie rapide. L'architecture modulaire de Langchain permet une intégration facile de différents modèles de langue, ce qui rend le système très adaptable et extensible. Avec la même interface, divers autres modèles de langues pourraient être incorporés de manière transparente, offrant une flexibilité et une portée pour les améliorations futures des capacités de réponse.
La combinaison de Flask, Weavate et Langchain fournit une infrastructure backend robuste, évolutive et polyvalente, capable de gérer des requêtes complexes avec une précision et de fournir des réponses contextuellement pertinentes dans le domaine des contrats intelligents de solidité.

Langchain représente une approche révolutionnaire dans l'utilisation des modèles de langage, jouant un rôle vital dans notre projet de conseiller de contrat intelligent Solidity. Il s'agit d'un cadre spécialement conçu pour augmenter les capacités des modèles de langue, tels que ceux fournis par OpenAI, grâce à l'utilisation d'agents et de récupérations augmentées.
À Langchain, les agents sont des composants modulaires qui permettent une variété d'interactions avec les modèles de langage. Ils peuvent être programmés pour effectuer des tâches spécifiques, telles que l'analyse du texte, la génération de requêtes ou la gestion des réponses. Cette approche modulaire permet un degré élevé de personnalisation et de flexibilité, permettant la création de flux de travail complexes qui peuvent traiter, analyser et répondre aux requêtes utilisateur avec une précision inégalée.
L'une des principales caractéristiques de Langchain est sa capacité à effectuer des récupérations augmentées. Cela implique d'utiliser des modèles linguistiques pour améliorer la récupération des informations à partir de bases de données ou d'autres sources. Dans le contexte de ce projet, la capacité de récupération augmentée de Langchain permet des recherches plus sophistiquées et contextuellement pertinentes dans la base de données vectorielle Weavate. Il garantit que les informations récupérées sont non seulement pertinentes mais également adaptées aux nuances spécifiques des contrats intelligents de Solidity.
L'intégration de Langchain dans cette API Flask ajoute une couche d'intelligence et d'adaptabilité. Il permet au système de gérer des requêtes complexes et multiformes avec lesquelles un modèle de langue autonome pourrait lutter. En tirant parti de la puissance de calcul brute des modèles de langage et de la structuration stratégique offerte par Langchain, le système peut fournir des réponses approfondies, précises et très pertinentes à un large éventail de requêtes liées aux contrats intelligents de Solidity.
L'utilisation de Langchain transforme essentiellement le projet en un outil plus dynamique, intelligent et réactif, capable de répondre aux besoins complexes et en évolution des développeurs et des passionnés de solidité.
Pour plus d'informations et une plongée plus profonde dans Langchain et ses capacités, visitez le Langchain.
Pour interagir avec le conseiller de contrat intelligent, les utilisateurs peuvent saisir leurs requêtes via l'interface utilisateur. Le système est conçu pour gérer des questions spécifiques liées à la solidité, fournissant des réponses détaillées et précises. Par exemple, poser des questions sur la réentrance donnera des réponses directes et informatives. Ou même vous pouvez demander à votre audition de code. Il correspond parfaitement aux questions liées à la solide. L'interface utilisateur a presque les mêmes capacités de l'interface Chatgpt, y compris les histoires d'inscription aux histoires de chat. Mis à part cela, si vous vérifiez la console, vous découvrirez que la réafference du modèle LLM auxquelles les vecteurs de Weavated. Il pourrait s'agir de quelques contrats intelligents vérifiés ou même une documentation officielle de la solidité. Tous combinés, examinés et ont une conclusion.

La configuration du conseiller Solidity Smart-Contract implique plusieurs étapes, notamment la configuration des bases de données, des variables d'environnement et des serveurs en cours d'exécution pour le backend et le frontend. Voici les instructions détaillées:
Démarrage des services de mongodb et de tivelu :
docker-compose up -d
Définition des variables d'environnement :
.env dans le répertoire racine du projet Python et incluez les éléments suivants: OPENAI_KEY=your_openai_key
ETHERSCAN_KEY=your_etherscan_key
MONGODB_DSN=your_mongodb_dsn
Exécution du backend et du client :
backend et client . Chacun d'eux doit être démarré séparément.backend et exécutez: npm i
npm run dev
client et exécutez la même commande: npm i
npm run dev
Téléchargement des contrats intelligents :
contracts.csv , qui peut être téléchargé à partir de Etherscan.etherscan.py pour télécharger 5000 codes source de contrat intelligent vérifié dans le dossier downloaded_contracts : python etherscan.py

weaviate_ingest.py pour chasser les données et insérer dans la base de données Vector Weavate: python weaviate_ingest.py

Ingestion de fichiers HTML :
weaviate_ingest_htmls.py de la même manière: python weaviate_ingest_htmls.py
Alternative à WeAviate - Utilisation de Pinecone :
pinecone_ingest.py est fourni: python pinecone_ingest.py
Après avoir terminé ces étapes, votre conseiller de contrat intelligent Solidity devrait être opérationnel, prêt à fournir des informations et des conseils sur les contrats intelligents de Solidity.
Toutes les contributions sont les bienvenues :)
Le conseiller Solidity Smart-Contract, en l'état, est un outil robuste et innovant. Cependant, le domaine de la blockchain et de la technologie des contrats intelligents évolue constamment, présentant de nombreuses opportunités d'améliorations et d'expansions futures de ce projet.
Plongeon profonde dans Yul - Le langage intermédiaire : un domaine clé pour le développement futur est l'incorporation de Yul, le langage intermédiaire d'Ethereum. En comprenant et en analysant Yul, le conseiller de contrat intelligent peut offrir des informations non seulement au niveau de la solidité, mais aussi au niveau plus granulaire des contrats compilés. Cela ouvre de nouvelles voies pour comprendre comment le code de solidité se traduit par des opérations de niveau inférieur.
Analyse au niveau OPCode et optimisation du gaz : l'un des aspects les plus difficiles du développement de contrats intelligents est l'optimisation de la consommation de gaz. En élargissant les capacités du conseiller d'inclure une analyse au niveau opcode, les développeurs peuvent recevoir des suggestions pour des modèles de code plus efficaces et des optimisations potentielles de gaz. Cela impliquerait d'enseigner au système pour comprendre les subtilités des coûts d'exécution d'Opcode et comment ils s'accumulent dans différents scénarios de contrat intelligent.
Accès pratique à la prise en charge de LLM pour le codage de bas niveau : améliorer le conseiller pour fournir une prise en charge pratique et conviviale pour les pratiques de codage de bas niveau. Cela pourrait impliquer d'intégrer des invites ou des agents spécialisés au sein de Langchain qui sont capables de comprendre et de suggérer des optimisations dans Yul ou directement dans les opcodes. L'objectif est de rendre l'optimisation du gaz et le codage de bas niveau plus accessible aux développeurs qui travaillent principalement avec des langues de haut niveau comme la solidité.
Bridging de haut niveau et de bas niveau de niveau : en combler l'écart entre le code de solidité de haut niveau et le YUL de bas niveau ou les opcodes, le conseiller peut fournir une vision holistique du développement de contrats intelligents. Cela inclut non seulement la rédaction de code de haut niveau efficace, mais aussi la compréhension de ses implications au niveau de l'exécution de la blockchain.
Ces améliorations futures dans le domaine de l'optimisation de Yul et Opcode visent à fournir aux développeurs des informations plus approfondies sur le fonctionnement interne de leurs contrats intelligents. Cela aidera non seulement à écrire un code plus efficace et plus efficace, mais contribuera également à une meilleure compréhension de l'environnement d'exécution Ethereum, conduisant finalement à un développement de contrats intelligents plus robuste et optimisé.
Ces améliorations visent à solidifier le conseiller de contrat intelligent Solidity en tant qu'outil de pointe, indispensable aux développeurs dans l'espace blockchain. L'objectif ultime est de créer un système dynamique et intelligent qui non seulement répond aux besoins actuels, mais anticipe et s'adapte également aux tendances futures du développement de contrats intelligents.
Ce projet est publié sous la licence du MIT.
Deniz umut Dereli