പത്ത് ചെറിയ Solidity കോൺട്രാക്റ്റുകളിൽ ഞാൻ ലോക്കൽ മോഡലുകൾ പരീക്ഷിച്ചു, അതിൽ താഴെ പറയുന്ന തരത്തിലുള്ള ബഗുകൾ (bugs) ഞാൻ ഉൾപ്പെടുത്തിയിരുന്നു:

  • വിത്ത്ഡ്രോ (withdraw) ഫംഗ്ഷനുകളിലെ Reentrancy
  • Access modifiers ഇല്ലാത്ത അവസ്ഥ
  • ERC4626 റൗണ്ടിംഗ് പിശകുകൾ (rounding errors)
  • തെറ്റായ സിഗ്നേച്ചർ പരിശോധനകൾ (signature checks)
  • സൂക്ഷ്മമായ ലോജിക് ബഗുകൾ (logic bugs)

WSL2-ൽ Ollama ഉപയോഗിച്ച് 7B (അല്ലെങ്കിൽ അതിൽ ചെറിയ) മോഡലുകളിൽ Qwen2.5-Coder-ഉം DeepSeek-Coder-ഉം ഞാൻ താരതമ്യം ചെയ്തു. നിങ്ങൾ 33B മോഡലുകളാണ് ഉപയോഗിക്കുന്നതെങ്കിൽ ഇത് അവഗണിക്കുക.

ഓരോ കോൺട്രാക്റ്റിനും ഞാൻ മൂന്ന് പ്രോംപ്റ്റുകൾ (prompts) നൽകി:

  • ഒരു പൊതുവായ സുരക്ഷാ അവലോകനം (general security review)
  • Reentrancy, access control എന്നിവയ്ക്കായുള്ള പ്രത്യേക പരിശോധന
  • സീവറിറ്റി ടാഗുകളോട് (severity tags) കൂടിയ ഒരു ഘടനാപരമായ റിപ്പോർട്ട്

Instruction Following

ഇവിടെ Qwen 7B ആണ് വിജയിക്കുന്നത്. ഇത് മിക്കവാറും എല്ലാ തവണയും കർശനമായ ഫോർമാറ്റിംഗ് നിയമങ്ങൾ പാലിക്കുന്നു. എന്നാൽ DeepSeek പലപ്പോഴും അധിക വിവരങ്ങൾ ചേർക്കുകയോ പരിധികൾ അവഗണിക്കുകയോ ചെയ്യുന്നു. മോഡലിന്റെ ഔട്ട്പുട്ട് ഒരു ഓട്ടോമേറ്റഡ് പൈപ്പ്‌ലൈനിലേക്ക് (automated pipeline) നൽകുന്ന സാഹചര്യത്തിൽ, Qwen-ന്റെ സ്ഥിരത (consistency) വളരെ പ്രധാനമാണ്—പാഴ്സിംഗ് പരാജയപ്പെട്ടാൽ (parsing-fail) അത് ഉപയോഗശൂന്യമാണ്.

Targeted Checks

Qwen വിഷയത്തിൽ തന്നെ നിൽക്കുന്നു. Reentrancy-യെ കുറിച്ച് ചോദിച്ചാൽ അത് Reentrancy-യെ കുറിച്ച് തന്നെ മറുപടി നൽകുന്നു. എന്നാൽ DeepSeek ഗ്യാസ് ഒപ്റ്റിമൈസേഷനിലേക്കോ (gas optimization) സ്റ്റൈൽ കുറിപ്പുകളിലേക്കോ മാറിപ്പോകുകയും അനാവശ്യ വിവരങ്ങൾ (noise) നൽകുകയും ചെയ്യുന്നു.

Explanation Quality

ഒരു എക്സ്പ്ലോയിറ്റ് (exploit) എങ്ങനെ സംഭവിക്കുന്നു എന്ന് വ്യക്തമാക്കിക്കൊണ്ട് Qwen അറ്റാക്ക് സീക്വൻസുകൾ (attack sequences) കൃത്യമായി വിവരിക്കുന്നു. DeepSeek പൊതുവായ പാഠപുസ്തക ഉത്തരങ്ങളാണ് നൽകുന്നത്. രണ്ടും ശരിയാണ്, എങ്കിലും റിപ്പോർട്ട് തയ്യാറാക്കാൻ Qwen-ന്റെ വിശദാംശങ്ങൾ സഹായിക്കുന്നു.

Skepticism and Hallucination

DeepSeek കൂടുതൽ പ്രശ്നങ്ങൾ ചൂണ്ടിക്കാണിക്കുന്നു, ഒരു “സംശയാസ്പദമായ ജനറേറ്റർ” (suspicion generator) പോലെ പ്രവർത്തിക്കുന്നു. വൃത്തിയുള്ള കോഡിലും (clean code) ഇത് പ്രശ്നങ്ങൾ കെട്ടിച്ചമയ്ക്കുന്നുണ്ട്.

നേരെമറിച്ച്, കോഡിൽ ബഗുകൾ ഉള്ളപ്പോൾ Qwen നിശബ്ദത പാലിക്കുന്നു. എന്നാൽ DeepSeek ഇല്ലാത്ത ബഗുകൾ ഉണ്ടെന്ന് അവകാശപ്പെടുന്നു.

ഒരു തെറ്റായ മുന്നറിയിപ്പ് (false alarm) മിനിറ്റുകൾ നഷ്ടപ്പെടുത്തുന്നു; എന്നാൽ ഒരു ബഗ് കണ്ടുപിടിക്കാൻ കഴിയാതെ പോകുന്നത് എല്ലാം നഷ്ടപ്പെടുത്താൻ കാരണമാകും. പരിശോധനയ്ക്കായി കാര്യങ്ങൾ കണ്ടെത്താൻ ഞാൻ DeepSeek-നെ ആശ്രയിക്കുന്നുണ്ടെങ്കിലും, ഓട്ടോമേഷനായി ഞാൻ Qwen-നെയാണ് വിശ്വസിക്കുന്നത്.

My Final Verdict

ബ്രാൻഡിനേക്കാൾ പ്രധാനം മോഡലിന്റെ വലിപ്പമാണ്. ഒരു 1.5B മോഡലിന് മൾട്ടി-സ്റ്റെപ്പ് ബഗുകളെ (multi-step bugs) വിശകലനം ചെയ്യാനോ ഫോർമാറ്റ് പാലിക്കാനോ കഴിയില്ല.

7B മോഡലുകളിൽ രണ്ടും അടിസ്ഥാനപരമായ പിശകുകൾ കണ്ടെത്തുന്നുണ്ടെങ്കിലും, സങ്കീർണ്ണമായ ബിസിനസ് ലോജിക്കിനായി (business logic) അവ ഒരു മനുഷ്യ ഓഡിറ്ററെയും (human auditor) പകരമാവില്ല. അവയെ ഓഡിറ്റർമാരായിട്ടല്ല, മറിച്ച് പ്രാഥമിക പരിശോധനയ്ക്കുള്ള സഹായികളായി (triage assistants) കാണുക.

എന്റെ സെറ്റപ്പ്:

  • Qwen 7B: ഘടനാപരമായ റിവ്യൂകൾക്കും പൈപ്പ്‌ലൈനുകൾക്കും ഡിഫോൾട്ട് ആയി ഉപയോഗിക്കുന്നു.
  • DeepSeek: Qwen കാണാതെ പോകുന്നവ കണ്ടെത്താനുള്ള രണ്ടാമതൊരു അഭിപ്രായം (second opinion).
  • Qwen 1.5B: വേഗതയേറിയതും കുറഞ്ഞ പ്രാധാന്യമുള്ളതുമായ ഫിൽട്ടറിംഗിന് മാത്രം.

നിങ്ങളുടെ ഹാർഡ്‌വെയറിന് പ്രവർത്തിപ്പിക്കാൻ കഴിയുന്ന ഏറ്റവും വലിയ മോഡൽ വാങ്ങുക. അതിനുശേഷം ബ്രാൻഡിനെക്കുറിച്ച് ചിന്തിക്കാം.

നിങ്ങൾ സംശയാസ്പദമായ ഒരു മോഡലിനെയാണോ അതോ കൃത്യതയുള്ള ഒരു മോഡലിനെയാണോ ഇഷ്ടപ്പെടുന്നത്?

സ്രോതസ്സ്: https://dev.to/pavelespitia/qwen25-coder-vs-deepseek-coder-for-solidity-review-what-i-actually-see-locally-4jh8

ഓപ്ഷണൽ ലേണിംഗ് കമ്മ്യൂണിറ്റി: https://t.me/GyaanSetuAi