Solidity Smart Contract Advisorは、Solidity Smart Contractsの理解とアドバイスにおいて、従来の言語モデルの機能を拡張するために設計された最先端のツールです。このプロジェクトは、OpenAIの言語モデルを、検証済みのスマートコントラクトと包括的な堅実性ドキュメントの膨大なリポジトリと統合し、スマートコントラクト開発の領域で専門家の洞察を提供できる専門的でコンテキスト認識したシステムを作成します。
このプロジェクトは、汎用言語モデルとブロックチェーン開発の微妙で専門的な要件との間のギャップを埋めることにおける大きな進歩を表しています。 5,000を超える検証済みのスマートコントラクトと広範な堅牢性のドキュメントをトレーニングすることにより、アドバイザーは理論的な回答だけでなく、検証済みのコードとドキュメントに基づいた実用的で実際のアドバイスを提供します。
成功は、複雑な堅実さのクエリに関するコンテキスト関連のアドバイスを正確に解析、理解し、提供するシステムの能力によって測定されました。これは、技術の洗練されたブレンドによって達成され、それぞれがシステムの有効性を高める上で重要な役割を果たしています。


Etherscan.pyを使用して、Etherscan APIから5,000の既知の検証済みスマートコントラクトをダウンロードしました。これにより、分析のバックボーンが形成され、埋め込みと分析のための実際のスマートコントラクトコードが提供されます。
スマートコントラクトに加えて、Solidity Documentation WebサイトからHTMLとしてドキュメントを抽出し、言語モデルの包括的なベースを確保しました。
カスタム構築されたLangchain RetrieValqaモデルは、上記のデータを処理します。 1000のオーバーラップでサイズ1000のチャンクを埋め込みました。その結果、詳細な分析のために約200,000のチャンクが生まれました。
スマートコントラクトの場合、堅実性固有のパーサーが契約を管理しやすいチャンクに分解します。 HTMLコンテンツ(Solidityの公式文書)には、標準のテキストスプリッターを使用します。これらの解析されたチャンクは、さらなる処理のために埋め込まれます。
このプロジェクトでは、Text2VECコンテキストモジュールを装備したWeaviate Vectorデータベースは、Solidity Smart ContractsとDocumentationから派生したベクトル化データの管理とクエリにおいて極めて重要な役割を果たします。 Weaviateのようなベクトルデータベースは、ベクトル化されたデータを処理するように設計されています。これは、基本的に、多次元空間で表されるデータポイントです。これは、効率的かつ意味のある分析のために複雑なデータをベクトル化できる機械学習と自然言語処理の領域で特に役立ちます。
Weaviateは機械学習モデルを利用してテキストデータをこれらのベクトルに変換し、高速で意味的に関連する検索を可能にします。 Solidity Smart Contract Advisorのコンテキストでは、ストアを織り、堅牢性契約と文書の埋め込み(ベクトル表現)を管理します。これらの埋め込みは、テキストの微妙な意味とコンテキストをキャプチャし、システムがユーザークエリに対して正確でコンテキスト認識の応答を提供できるようにします。
Text2VECコンテキストモジュールは、テキストコンテキストを理解するために特に重要です。これにより、システムは、堅実さのコンテキストで単語やフレーズの背後にある意味を解釈し、検索結果と応答の関連性と正確性を高めることができます。
このプロジェクトにおける織物の役割は多面的です。
Weaviateとその機能の詳細については、公式Webサイトとドキュメントをご覧ください。
このプロジェクトでの織りの使用により、Solidity Smart Contract Advisorは分析機能において強力であるだけでなく、効率的でスケーラブルであることが保証され、スマート契約分析とアドバイスのための最先端のツールになります。

whuang214からUIを適応させ、大幅に変更しました。
このPythonベースのFlask APIは、ユーザークエリと強力なバックエンドの間の重要なブリッジとして機能します。応答を生成するために、Weaviate Vectorsとの相互作用を効率的に処理し、OpenaiのGPT-4-0613モデルをレバレッジします。 GPT-4-0613の選択は、その制限性の低い性質のために戦略的です。これは、スマートコントラクトの再び危機など、機密性の高いトピックに関するより直接的でフィルタリングされていない回答を提供するのに特に有益です。
他のOpenai言語モデルの探索に興味がある人のために、Openaiのモデルの概要に包括的なリストがあります。
さらに、Flask APIは、エージェントと迅速なエンジニアリングを介して言語モデルの機能を強化するように設計されたフレームワークであるLangchainを統合します。 Langchainのモジュラーアーキテクチャにより、さまざまな言語モデルを簡単に統合できるようになり、システムが高度に適応性が高く拡張可能になります。同じインターフェイスでは、他のさまざまな言語モデルをシームレスに組み込むことができ、応答能力の将来の強化の柔軟性と範囲を提供します。
フラスコ、織り、およびラングチェーンの組み合わせは、堅牢で汎用性の高いバックエンドインフラストラクチャを提供し、正確さを備えた複雑なクエリを処理し、ソリッドスマートコントラクトのドメインでコンテキストに関連する応答を提供できます。

Langchainは、言語モデルの利用における革新的なアプローチを表しており、Solidity Smart Contract Advisorプロジェクトで重要な役割を果たしています。これは、エージェントの使用や拡張された検索を通じて、Openaiが提供するものなど、言語モデルの機能を拡張するために特別に設計されたフレームワークです。
Langchainでは、エージェントは言語モデルとのさまざまな相互作用を可能にするモジュラーコンポーネントです。これらは、テキストの解析、クエリの生成、返信の処理など、特定のタスクを実行するようにプログラムできます。このモジュール式アプローチにより、高度なカスタマイズと柔軟性が可能になり、比類のない精度でユーザークエリを処理、分析、および応答できる複雑なワークフローの作成が可能になります。
Langchainの重要な特徴の1つは、拡張された検索を実行できることです。これには、言語モデルを使用して、データベースまたは他のソースからの情報の検索を強化することが含まれます。このプロジェクトのコンテキストでは、Langchainの拡張検索機能により、Weaviate Vectorデータベース内でより洗練されたコンテキストに関連する検索が可能になります。検索された情報が関連するだけでなく、Solidity Smart Contractsの特定のニュアンスに合わせて調整されることを保証します。
このフラスコAPIにLangchainを統合すると、知性と適応性の層が追加されます。これにより、スタンドアロンの言語モデルが苦労する可能性のある複雑で多面的なクエリを処理することができます。言語モデルの生の計算能力とLangchainが提供する戦略的構造の両方を活用することにより、システムは、Solidity Smart Contractsに関連する幅広いクエリに対して、詳細で正確で非常に関連性の高い応答を提供できます。
Langchainを使用すると、プロジェクトは基本的に、よりダイナミックでインテリジェントで応答性の高いツールに変換され、堅実性開発者と愛好家の複雑で進化するニーズに対処できます。
詳細とラングチェーンとその機能へのより深い潜りのために、Langchainにアクセスしてください。
Smart Contract Advisorと対話するために、ユーザーはUIを介してクエリを入力できます。このシステムは、特定の堅牢性関連の質問を処理するように設計されており、詳細かつ正確な回答を提供します。たとえば、再所属について尋ねると、直接的な有益な回答が得られます。または、コードオーディションに尋ねることもできます。それは堅実な関連の質問に完全に適合します。 UIには、チャット履歴への登録を含むChatGPTインターフェイスのほぼ同じ機能があります。これはさておき、コンソールをチェックすると、LLMモデルが織られているベクトルがどのベクターに戻っているかがわかります。それはいくつかの検証済みのスマート契約、または堅実さの公式の文書でさえあるかもしれません。すべて結合され、調べられ、結論があります。

Solidity Smart Contract Advisorのセットアップには、データベース、環境変数の構成、バックエンドとフロントエンドの両方のサーバーの実行など、いくつかのステップが含まれます。以下は詳細な指示です。
Mongodbを開始し、サービスを織ります:
docker-compose up -d
環境変数の設定:
.envファイルを作成し、以下を含めます。 OPENAI_KEY=your_openai_key
ETHERSCAN_KEY=your_etherscan_key
MONGODB_DSN=your_mongodb_dsn
バックエンドとクライアントの実行:
backendとclient 2つのメインフォルダーがあります。これらのそれぞれは、個別に開始する必要があります。backendフォルダーに移動して実行します。 npm i
npm run dev
clientフォルダーに移動し、同じコマンドを実行します。 npm i
npm run dev
スマートコントラクトのダウンロード:
contracts.csvを確認してください。etherscan.pyスクリプトを実行して、5000検証済みのスマートコントラクトソースコードをダウンロードdownloaded_contractsフォルダーにダウンロードします。 python etherscan.py

weaviate_ingest.pyスクリプトを使用してデータをチャンクし、weaviate vectorデータベースに挿入します。 python weaviate_ingest.py

HTMLファイルの摂取:
weaviate_ingest_htmls.pyスクリプトを同様の方法で実行します。 python weaviate_ingest_htmls.py
Weaviateの代替 - Pineconeの使用:
pinecone_ingest.pyスクリプトが提供されます。 python pinecone_ingest.py
これらの手順を完了した後、Solidity Smart Contract Advisorは稼働し、Solidity Smart Contractsに関する洞察とアドバイスを提供する準備ができている必要があります。
すべての貢献は大歓迎です:)
Solidity Smart Contract Advisorは、現状では、堅牢で革新的なツールです。しかし、ブロックチェーンとスマートコントラクトテクノロジーの領域は絶えず進化しており、このプロジェクトの将来の強化と拡張のための多くの機会を提示しています。
Yulに深く飛び込みます - 中間言語:将来の開発の重要な領域は、イーサリアムの中間言語であるYulの組み込みです。 Yulを理解して分析することにより、Smart Contractアドバイザーは、堅実さだけでなく、より詳細なレベルのコンパイルされた契約でも洞察を提供できます。これにより、Solidity Codeが低レベルの操作にどのように変換されるかを理解するための新しい道が開かれます。
Opcode-Level AnalysisとGasの最適化:スマート契約開発の最も困難な側面の1つは、ガス消費に最適化することです。アドバイザーの機能を拡大してOpcodeレベルの分析を含めることにより、開発者はより効率的なコードパターンと潜在的なガスの最適化のための提案を受け取ることができます。これには、オペコードの実行コストの微妙さと、さまざまなスマートコントラクトシナリオでそれらがどのように蓄積するかを理解するためにシステムに教えることが含まれます。
低レベルのコーディングのためのLLMサポートへの便利なアクセス:アドバイザーを強化して、低レベルのコーディングプラクティスに便利でユーザーフレンドリーなサポートを提供します。これには、Langchain内の特殊なプロンプトまたはエージェントを統合することが含まれます。これには、YulまたはOpcodesの直接的な最適化を示唆しています。目標は、主に堅実さのような高レベルの言語で作業する開発者がガスの最適化と低レベルのコーディングをよりアクセスしやすくすることです。
高レベルと低レベルの開発を橋渡しする:高レベルの堅牢性コードと低レベルのユルまたはオペコードの間のギャップを埋めることにより、アドバイザーはスマートコントラクト開発の全体的な見方を提供できます。これには、効率的な高レベルのコードを書くだけでなく、ブロックチェーン実行レベルでのその意味を理解することも含まれます。
YulとOpcodeの最適化の領域におけるこれらの将来の強化は、開発者にスマートコントラクトの内部の仕組みに関するより深い洞察を提供することを目的としています。これは、より効率的で費用対効果の高いコードを書くのに役立つだけでなく、イーサリアム実行環境のより良い理解に貢献し、最終的にはより堅牢で最適化されたスマート契約開発につながります。
これらの機能強化は、ブロックチェーンスペースの開発者にとって不可欠な最先端のツールとしてSolidity Smart Contract Advisorを固めることを目的としています。究極の目標は、現在のニーズに対応するだけでなく、スマート契約開発の将来の傾向を予測し、適応する動的でインテリジェントなシステムを作成することです。
このプロジェクトは、MITライセンスの下でリリースされます。
デニズ・ウムート・デレリ