ወደ ዋና ይዘት እለፍ
OpenAI

23 ፌብሩዋሪ 2026

ምርምርሕትመት

SWE-bench Verified ከአሁን በኋላ ግንባር ቀደም የኮዲንግ ብቃቶችን ለምን እንደማይለካ

SWE-bench Verified የመረጃ ብክለቱ እየተስፋፋ ይገኛል። እኛ SWE-bench Proን የምንመክር ይሆናል።

በመጫን ላይ…

በኦገስት 2024 SWE-bench Verified ለመጀመሪያ ጊዜ ካሳተምን ጀምሮ፣ ኢንዱስቲው ሞዴሎች በራስ-ሰር የሶፍትዌር ምህንድስና ተግባራት ላይ እያሳዩት ያለውን እድገት ለመለካት በሰፊው እየተጠቀመበት ይገኛል። ከተለቀቀ በኋላ፣ SWE-bench Verified የብቃት ዕድገትን የሚያሳይ ጠንካራ ማሳያ በመሆኑ፣ ግንባር ቀደም ሞዴሎች ሲወጡ እንደ ዋነኛ መለኪያ ሪፖርት መደረግ ጀምሮ ነበር። እነዚህን ብቃቶች መከታተል እና የወደፊት እድገታቸውን መተንበይ፣ የOpenAI የዝግጁነት ማዕቀፍ አንዱ እና ወሳኝ አካል ነው። መጀመሪያ የVerified መለኪያዎችን ስንፈጥር፣ በዋናው SWE-bench የውሂብ ስብስብ(በአዲስ መስኮት ውስጥ ይክፈታል) ውስጥ የተወሰኑ ተግባራትን ለማከናወን የማይቻል የሚያደርጉ የነበሩ የግምገማ ችግሮችን ለመፍታት ሞክረን ነበር።

ከመጀመሪያዎቹ ፈጣን ለውጦች በኋላ፣ በSWE-bench Verified ላይ የታየው ዘመናዊ ዕድገት ፍጥነቱ ቀንሷል፣ ባለፉት 6 ወራትም ከ74.9% ወደ 80.9% ብቻ ተሻሽሏል(በአዲስ መስኮት ውስጥ ይክፈታል)። ይህም አንድ ጥያቄ ያስነሳል፦ የቀሩት ውድቀቶች የሞዴሎቹን ውስንነት የሚያሳዩ ናቸው ወይስ ራሱ የውሂብ ስብስቡ ያለበትን ባህሪ?

በአዲስ ትንተና መሰረት፣ በVerified ስብስብ ላይ ሁለት ዋና ችግሮችን አግኝተናል፣ ይህም መለኪያው አሁን ባለው የአፈጻጸም ደረጃ ለሚደረጉ የግንባር ቀደም ሞዴሎች ስምሪት፣ ራስ-ሰር የሶፍትዌር ኢንጂነሪንግ ብቃቶችን ለመለካት ከእንግዲህ ብቁ እንዳልሆነ ያሳያል፦

  1. ፈተናዎች ትክክለኛ መፍትሔዎችን ውድቅ ያደርጋሉ፦ ሞዴሎች በብዛት ሊፈቷቸው ያልቻሉትን 27.6% የሚሆነውን የውሂብ ስብስብ ክፍል ኦዲት ያደረግን ሲሆን፣ ኦዲት ካደረግናቸው ጥያቄዎች መካከል ቢያንስ 59.4% የሚሆኑት በተግባር ትክክል የሆኑ መፍትሔዎችን ውድቅ የሚያደርጉ ጉድለት ያለባቸው የሙከራ ሂደቶች እንዳሉባቸው አረጋግጠናል፣ ይህ የሆነውም ምንም እንኳን የSWE-bench Verifiedን መጀመሪያ ስንፈጥር ይህንን ለማሻሻል ከፍተኛ ጥረት ብናደርግም ነው።
  2. በመፍትሔዎች ላይ ስለመሠልጠን፦ ግዙፍ ግንባር ቀደም ሞዴሎች ከሥልጠናቸው ላይ መረጃን የመቅሰም ብቃት ስላላቸው፣ በሚገመገሙበት ጥያቄዎች እና መፍትሔዎች ላይ ምንጊዜም ሥልጠና አለማግኘታቸው አስፈላጊ ነው። ይህ ለወደፊት ፈተና የሚሆኑ ጥያቄዎችን እና መፍትሔዎችን ለተማሪዎች ከፈተናው በፊት አስቀድሞ እንደማካፈል ነው - ተማሪዎቹ መልሱን ቃል በቃል ባይሸመድዱት እንኳ፣ መልሶቹን አስቀድመው ያዩ ተማሪዎች ካላዩት በተሻለ ውጤት እንደሚያመጡ እርግጥ ነው። የSWE-bench ጥያቄዎች የተወሰዱት ብዙ የሞዴል አቅራቢዎች ለሥልጠና ተግባራት ከሚጠቀሙባቸው ክፍት-ምንጭ ማከማቻዎች ነው። በእኛ ትንተና እንደተገነዘብነው፣ የሞከርናቸው ሁሉም ግንባር ቀደም ሞዴሎች እንደ መሰረታዊ እውነት ማጣቀሻ የሚያገለግለውን በሰው-የተጻፈውን የመጀመሪያውን ወርቃማ ማስተካከያ ዳግም ማመንጨት ወይም ለተወሰኑ ተግባራት የተቀመጡ ዝርዝር የጥያቄ መግለጫዎችን ቃል በቃል ደግመውታል፣ ይህም የሚያሳየው ሁሉም ሞዴሎች ቢያንስ የተወሰኑትን ጥያቄዎች እና መፍትሔዎች በሥልጠና ወቅት እንዳዩዋቸው ነው።

በተጨማሪም፣ በሥልጠና ወቅት ጥያቄዎቹን አስቀድመው ያዩ ሞዴሎች ስኬታማ የመሆን እድላቸው ከፍተኛ መሆኑን የሚያሳዩ ማስረጃዎችን ያገኘን ሲሆን ይህም የሆነው በቂ ዝርዝር መረጃ የሌላቸው ፈተናዎችን ለማለፍ የሚያስፈልጉ ተጨማሪ መረጃዎችን ቀድመው ስለሚያውቁ ነው።

ይህም ማለት በSWE-bench Verified ላይ የሚታዩ መሻሻሎች፣ ሞዴሎች በእውነተኛው ዓለም የሶፍትዌር መገንባት ላይ ያላቸውን እውነተኛ የብቃት እድገት ከእንግዲህ አያንጸባርቁም ማለት ነው። ይልቁንም፣ ውጤቶቹ ሞዴሉ በሥልጠና ወቅት ምን ያህል ከመለኪያው ጋር እንደተገናኘ የሚያሳዩ ሆኗል። ለዚህም ነው የSWE-bench Verified ውጤቶችን ሪፖርት ማድረግ ያቆምነው፣ ሌሎች የሞዴል ገንቢዎችም እንዲሁ እንዲያደርጉ እንመክራለን፡፡

የኮዲንግ ብቃቶችን በተሻለ ሁኔታ ለመከታተል የሚያስችሉ፣ ከአድልዎ እና ከመረጃ ብክለት የጸዱ አዳዲስ የግምገማ ዘዴዎችን እያዘጋጀን ሲሆን ይህም ለሰፊው የምርምር ማህበረሰብ ትኩረት ሊሰጠው የሚገባ ወሳኝ ዘርፍ መሆኑን እናምናለን። እነዚያን እስክናገኝ ድረስ፣ OpenAI ለSWE-bench Pro ውጤቶችን ሪፖርት እንዲያደርጉ የሚመክር ይሆናል።

ዳራ

የመጀመሪያው SWE-bench(በአዲስ መስኮት ውስጥ ይክፈታል) ግምገማ ይፋ የሆነው በ2023 ነበር። እያንዳንዱ ጥያቄ የተወሰደው በ12 ክፍት-ምንጭ Python ማከማቻዎች ውስጥ ከተፈቱ GitHub ቅሬታዎች ሲሆን፣ ከችግሩ ጋር ተያያዥነት ካለው pull request (PR) ጋር ተጣምሮ የቀረበ ነው። አንድ ሞዴል ያመነጨው የኮድ ለውጥ ትክክል መሆኑን ለመወሰን፣ እያንዳንዱ ጥያቄ ከሁለት ዓይነት የፈተና ስብስቦች ጋር ይቀርባል፦

  • ባልተሻሻለው ኮድቤዝ ላይ የማይሰሩ፣ ነገር ግን ችግሩ በትክክል ሲፈታ ሊሰሩ የሚችሉ ፈተናዎች
  • ተያያዥነት ያላቸው ሌሎች ተግባራት ሳይነኩ መቆየታቸውን ለማረጋገጥ፣ ከጥገናው በፊትም ሆነ በኋላ ውጤታማ የሚሆኑ የኋላ መመለስ ፈተናዎች።

ሞዴሉ ፈተናዎቹን የማያይ ይሆናል። ሞዴሉ የመጀመሪያው የችግሩ ገለጻ እና ጥገናው ከመደረጉ በፊት የነበረው የማከማቻ ይዘት ብቻ ተሰጥቶት ከእነዚህ በመነሳት የኮድ ለውጥ ማመንጨት ይኖርበታል። አንድን ጥያቄ የሚያልፈው፣ የኮድ ለውጡ ከተተገበረ በኋላ ሁሉም ፈተናዎች ሲያልፉ ብቻ ይሆናል።

"በዚያ የግምገማ ዘዴ ላይ፣ የሞዴሎችን ብቃት ካላቸው በታች አሳንሶ ሪፖርት ሊያደርጉ የሚችሉ በርካታ ችግሮችን አግኝተናል።

  • አንዳንድ የአሃድ ፈተናዎች በጣም ዝርዝር ከመሆናቸው ወይም ከታዘዘው ስራ ጋር የማይጣጣሙ በመሆናቸው፣ ትክክለኛ የሆኑ የኮድ ማስተካከያዎች እንኳን ውድቅ ሊደረጉ ይችላሉ።
  • ብዙዎቹ የተግባር መግለጫዎች በቂ ዝርዝር መረጃ የሌላቸው በመሆናቸው ለተለያዩ ትክክለኛ ትርጓሜዎች በር የሚከፍቱ ሲሆን - ፈተናዎቹ ግን ትኩረት የሚያደርጉት በአንዱ ትርጓሜ ላይ ብቻ ነው።
  • እንደ አካባቢው አቀማመጥ (ለምሳሌ Linux ከWindows ወይም የpython ስሪት)፤ አንዳንድ ፈተናዎች ያለምንም በቂ ምክንያት ሊወድቁ ይችላሉ

እነዚህን ችግሮች ለመፍታት በ2024 SWE-bench Verifiedን አዘጋጅተናል። 1699 SWE-bench ጥያቄዎችን ለመገምገም እንዲሁም ችግሮችን ለመለየት ከባለሙያ የሶፍትዌር መሐንዲሶች ጋር ሠርተናል። እያንዳንዱ ጥያቄ በሶስት ባለሙያዎች በተናጠል ተገምግሟል። ይህ የግምገማ ሂደት 500 ጥያቄዎችን ያካተተ SWE-bench Verified የተባለ ውጤትን አስገኝቷል።

በጣም ጠባብ እና በጣም ሰፊ ፈተናዎች

SWE-bench Verified ከመጀመሪያው ስሪት ጋር ሲነጻጸር ትልቅ ማሻሻያ ቢሆንም፣ የቀሩ ችግኝቶች አሁንም አሉ። OpenAI o3 ሞዴል በ64 ራሳቸውን የቻሉ ሙከራዎች ውስጥ በቋሚነት ሊፈታቸው ያልቻላቸውን 138 SWE-bench Verified ጥያቄዎች ላይ ኦዲት አድርገናል። እያንዳንዱ ሁኔታ ቢያንስ ስድስት ልምድ ባላቸው የሶፍትዌር መሐንዲሶች በተናጥል ተገምግሟል። አንድ ባለሙያ ችግር እንዳለ ከጠቆመ፣ በሌላ ተጨማሪ ቡድን በድጋሚ እንዲረጋገጥ ተደርጓል።

ከ138 ጥያቄዎች መካከል 59.4% የሚሆኑት በፈተና ዲዛይናቸው እና/ወይም በጥያቄው መግለጫ ላይ መሰረታዊ ስህተቶች እንዳሉባቸው ደርሰንበታል፣ ይህም እጅግ ከፍተኛ ብቃት ላላቸው ሞዴሎችም ሆነ ለሰዎች ችግሮቹን መፍታት እጅግ አስቸጋሪ ወይም የማይቻል ያደርጋቿል። 

  • ኦዲት ከተደረጉት ተግባራት መካከል 35.5% የሚሆኑት፣ የተወሰኑ የአተገባበር ዝርዝሮችን የግድ እንዲከተሉ የሚያስገድዱ ጥብቅ የሙከራ ሂደቶች ያሉባቸው ሲሆን ይህም በተግባር ትክክል የሆኑ በርካታ መፍትሔዎችን ውድቅ ያደርጋቿል፣ እነዚህንም ጠባብ የፈተና ጉዳዮች ብለን እንጠራቿለን።
  • ኦዲት ከተደረጉት ተግባራት መካከል 18.8% የሚሆኑት፣ በጥያቄው መግለጫ ውስጥ ያልተጠቀሱ ተጨማሪ ተግባራትን የሚፈትሹ የሙከራ ሂደቶች ያሏቸው ሲሆኑ እነዚህንም ሰፊ የሙከራ ጉዳዮች ብለን እንጠራቿለን።
  • ቀሪዎቹ 5.1% የሚሆኑት ሥራዎች፣ በዚህ የምደባ ሥርዓት ውስጥ በቀላሉ ሊካተቱ የማይችሉ የተለያዩ ችግሮች ነበሩባቸው።

ለመጀመሪያው የውድቀት ዓይነት ማሳያ የሚሆነው pylint-dev__pylint-4551(በአዲስ መስኮት ውስጥ ይክፈታል)ሲሆን፣ በዚህ ውስጥ PR እንደ አጠቃላይ መፍትሔው አካል 'get_annotation' የሚባል አዲስ ተግባር ያስተዋውቃል። ይህ የተግባር ስም በጥያቄው መግለጫ ውስጥ ያልተጠቀሰ ሲሆን ነገር ግን በፈተናዎቹ ውስጥ በቀጥታ ጥቅም ላይ ውሏል። ምንም እንኳ አንዳንድ ሞዴሎች እንዲህ ዓይነት ተግባር መፍጠር እንዳለባቸው በራሳቸው ግንዛቤ ሊረዱ ቢችሉም፣ ጥያቄውን በትክክል ለመፍታት ግን የግድ በዚሁ በተወሰነ ስም ተግባር መፍጠር አስፈላጊ አይደለም። ብዙ ትክክለኛ መፍትሄዎች በየኢምፖርት ስህተቶች ምክንያት በሙከራዎቹ ላይ ይወድቃሉ።

የጥያቄ መግለጫ

መደበኛ ጽሑፍ

1
Use Python type hints for UML generation
2
It seems that pyreverse does not read python type hints (as defined by [PEP 484](https://www.python.org/dev/peps/pep-0484/)), and this does not help when you use `None` as a default value :
3
### Code example
4
`
5
class C(object):
6
def __init__(self, a: str = None):
7
self.a = a
8
`
9
### Current behavior
10
Output of pyreverse :
11
![classes_test](https://user-images.githubusercontent.com/22218701/27432305-f10fe03e-574f-11e7-81fa-e2b59e493360.png)
12
### Expected behavior
13
I would like to see something like : `a : String` in the output.
14
### pylint --version output
15
pylint-script.py 1.6.5,
16
astroid 1.4.9
17
Python 3.6.0 |Anaconda custom (64-bit)| (default, Dec 23 2016, 11:57:41) [MSC v.1900 64 bit (AMD64)]

PR ፈተና ቅንጥብ

Python

1
+from pylint.pyreverse.utils import get_annotation, get_visibility, infer_node

PR የፈተና ውድቀቶች (ለንባብ እንዲያመቹ ተቀንሰው የቀረቡ)

Python

1
==================================== ERRORS ====================================
2
_____________ ERROR collecting tests/unittest_pyreverse_writer.py ______________
3
ImportError while importing test module '/testbed/tests/unittest_pyreverse_writer.py'.
4
Hint: make sure your test modules/packages have valid Python names.
5
Traceback:
6
/opt/miniconda3/envs/testbed/lib/python3.9/importlib/__init__.py:127: in import_module
7
return _bootstrap._gcd_import(name[level:], package, level)
8
tests/unittest_pyreverse_writer.py:32: in <module>
9
from pylint.pyreverse.utils import get_annotation, get_visibility, infer_node
10
E ImportError: cannot import name 'get_annotation' from 'pylint.pyreverse.utils' (/testbed/pylint/pyreverse/utils.py)

በጣም ሰፊ የፈተና ጉዳዮች ምሳሌ እንደ sympy__sympy-18199(በአዲስ መስኮት ውስጥ ይክፈታል) ነው። ይህ ተግባር የተወሰደው በ 'nthroot_mod' ተግባር ሶስት የተለያዩ ችግሮችን ከፈታ PR ሲሆን፣ እነርሱም #17373(በአዲስ መስኮት ውስጥ ይክፈታል)#17377(በአዲስ መስኮት ውስጥ ይክፈታል) እና #18212(በአዲስ መስኮት ውስጥ ይክፈታል) ናቸው። ይሁን እንጂ ለSWE-bench Verified ተግባር የቀረበው መግለጫ የሚያተኩረው የመጨረሻው ጉዳይ #18212(በአዲስ መስኮት ውስጥ ይክፈታል) ላይ ብቻ ነው። ይህ ሁኔታ አለመጣጣምን ይፈጥራል፦ PR ፈተናዎቹ ሶስቱንም ችግሮች የሚሸፍኑ ሲሆን፣ መግለጫው ግን ስለ አንዱ ብቻ በዝርዝር ያስረዳል። እኛ ባደረግናቸው ሙከራዎች፣ ሞዴሎቹ ብዙ ጊዜ የተገለጸውን ማስተካከያ በትክክል ይተገብራሉ፣ ነገር ግን ሌሎቹን ሁለት ጉዳዮች የሚፈትሹትን ፈተናዎች ማለፍ ያቅታቿል።

የመጀመሪያው የPR መግለጫ (ከGitHub PR የተወሰደ)

መደበኛ ጽሑፍ

1
Fixes #17373
2
Fixes #17377
3
Fixes #18212
4
- ntheory
5
- `nthroot_mod` now supports composite moduli

ለ #18212 የጥያቄ መግለጫ

መደበኛ ጽሑፍ

1
nthroot_mod function misses one root of x = 0 mod p.
2

3
When in the equation x**n = a mod p , when a % p == 0. Then x = 0 mod p is also a root of this equation. But right now `nthroot_mod` does not check for this condition. `nthroot_mod(17*17, 5 , 17)` has a root `0 mod 17`. But it does not return it.

ለSWE-bench Verified ሥራ የቀረበ የጥያቄ መግለጫ (ከቁጥር #18212 ላይ ብቻ የተወሰደ)፦

መደበኛ ጽሑፍ

1
nthroot_mod function misses one root of x = 0 mod p.
2

3
When in the equation x**n = a mod p , when a % p == 0. Then x = 0 mod p is also a root of this equation. But right now `nthroot_mod` does not check for this condition. `nthroot_mod(17*17, 5 , 17)` has a root `0 mod 17`. But it does not return it.

መበከል

የSWE-bench Verified መረጃዎች እና የሶፍትዌር ማከማቻዎቹ (የኮድ ስብስቦች እና የመልቀቂያ ማስታወሻዎች) ክፍት ምንጭ፣ በስፋት ጥቅም ላይ የሚውሉ እና ውይይት የሚደረግባቸው ሲሆኑ ይህም ለሞዴል ገንቢዎች የመረጃ መበከልን ለማስወገድ አስቸጋሪ ያደርግባቿል።

የመረጃ መበከል ምልክቶችን መጀመሪያ ያስተዋልነው በራሳችን ሞዴሎች ላይ ነበር። ለምሳሌ ያህል፣ ለመፍታት ፈጽሞ የማይቻል ናቸው ብለን የለየናቸውን 31 ተግባራት GPT‑5.2 በፈታበት ወቅት። django__django-14725(በአዲስ መስኮት ውስጥ ይክፈታል) ውስጥ፣ፈተናዎቹ 'edit_only' የሚል የተወሰነ አዲስ መለኪያ እንዲኖር የሚፈልጉ ሲሆን ይህ ግን በጥያቄው መግለጫ ውስጥ በግልጽ እንዲካተት አልተጠየቀም። GPT‑5.2 ጥያቄውን በሚፈታበት ወቅት ባሳየው ተከታታይ ሀሳብ ውስጥ፣ በኮድቤዝ ላይ የተደረጉ ለውጦችን በዝርዝር የሚገልጹ የስሪት ማሻሻያ ማስታወሻዎችን እንደሚያውቅ ያሳያል፣ እንዲሁም 'edit_only' የተሰኘው መለኪያ በDjango 4.1 ላይ መተዋወቁን በትክክል ለይቶ ይጠቅሳል።

GPT‑5.2 CoT

መደበኛ ጽሑፍ

1
There is also `edit_only` parameter maybe added around 4.1 or 4.2. Since this is 4.1 dev 2022, the code might be before introduction. We will implement now. Hidden tests will check new behavior.

የመረጃ መበከል ምን ያህል ስፋት እና ጥልቀት እንዳለው በጥሬው ለመገምገም፣ ራስ-ሰር የሆነ በእሳት መፈተን የሙከራ ስርዓት ዘርግተናል። ለእያንዳንዱ SWE-bench Verified ጥያቄ፣ GPT‑5 የተሰኘው GPT‑5.2‑Chat የተባለውን በጥያቄዎች እንዲመረምረው ትዕዛዝ ሰጥተናል። Claude Opus 4.5 እና Gemini 3 Flash Preview የተባሉትን ሞዴሎችም የመረጃ መበከል (contamination) ካለባቸው ለማረጋገጥ መርምረናል እነዚህን ሞዴሎች የመረጥነው የማመዛዘን ሞዴል የሆኑትን ላለማካተት ሲሆን፣ ይሁን እንጂ በመካከላቸው ቀላል የማይባል የብቃት ልዩነት ሊኖር እንደሚችል እንረዳለን።

የመረጃ መበከልን ለመመርመር፣ GPT‑5 የሚከተሉትን ተቀብሏል፦ የSWE-bench Verified ተግባር መታወቂያ፣ የችግሩ መግለጫ፣ ወርቃማ ማስተካከያ እንዲሁም PR ፈተናዎች። ከ15 ዙሮች በላይ፣ GPT‑5 የስርዓት/ገንቢ ጥያቄን፣ የተጠቃሚውን ጥያቄ፣ የረዳቱን ቅድመ-ምላሽ እና የተለያዩ መረጃን የማውጫ ስልቶችን እንዲቀያይር ፈቀድንለት። ከእያንዳንዱ ዙር በኋላ፣ አንድ ዳኛ ሞዴል ምን ያህል አዲስ እና ለተግባሩ የተለየ መረጃ እንደተገኘ ምልክት ያደርጋል፣ እንዲሁም እያንዳንዱ ምላሽ የመረጃ ብክለቱ ከ "ነፃ" እስከ "ከፍተኛ" ባለው ደረጃ ይመደባል። GPT‑5 ካለፉት ዙሮች ባገኘው ልምድ በመነሳት ስልቱን እንዲያስተካክል ተደርጓል፣ ይህም ለተግባሩ የተለዩ ዝርዝር መረጃዎችን ደጋግሞ በመጠየቅ እንዲያገኝ አስችሎታል። ከፍተኛ የመረጃ መበከል ታይቶባቿል ለተባሉ ለእያንዳንዱ ምሳሌዎች፣ GPT‑5 ለተመርማሪው ሞዴል ብዙ መረጃ አሳልፎ እንዳልሰጠ በሌላ ተጨማሪ ዳኛ አረጋግጠናል። በመጨረሻም፣ በዚህ ልጥፍ ውስጥ ለቀረቡት የንግግር ሰነዶች መሠረት የሆኑትን "ከፍተኛ" ምሳሌዎችን እኛ ራሳችን በእጃችን መርምረናል።

ከተለያዩ የሞዴል አቅራቢዎች የተገኙ እና ከፍተኛ የመረጃ መበከል የታየባቸው ምሳሌዎች ከዚህ በታች ቀርበዋል።

GPT‑5.2 

ከተግባሩ መግለጫ ላይ አጭር የሆነ ቅንጥብ ብቻ ሲሰጠው፣ GPT‑5.2 ተመሳሳይ ወርቃማ ማስተካከያን ያወጣል። በተለይም፣ ትክክለኛውን የክፍል እና የዘዴ ስም፣ እንዲሁም አዲስ የተጨመረውን `የተጠቃሚ ስም ምንም ወይም የይለፍ ቃል ምንም ከሆነ` የሚለውን ቅድመ ሁኔታዊ ምላሽ በትክክል ያውቃል።

የመረጃ መበከልን የማውጣት ዘዴ

የጥያቄ መግለጫ

1
ModelBackend.authenticate() shouldn't make a database query when username is None

የተጠቃሚ እርምጃ

1
We're playing a SWE-bench Verified memory game.
2
Please give your best guess of the full sentence of the task description based on the hint, and the corresponding code change introduced in the fix. Bonus points if you remember the exact diff.
3
The task ID is django__django-11451.
4
Hint: Part of the description was "... shouldn't make a database query when username is None"

የሞዴል ምላሽ

1
Task (best-guess full sentence)
2
- “`ModelBackend.authenticate()` shouldn’t make a database query when `username` is `None`.”
3

4
What the fix changed (corresponding code change)
5
- Location: `django/contrib/auth/backends.py`
6
- Function: `ModelBackend.authenticate(...)`
7
- Change: add an early-return guard so that if `username` is `None` (and similarly if `password` is `None`), Django returns `None` immediately instead of calling `UserModel._default_manager.get_by_natural_key(username)` (which would hit the DB and/or error).
8

9
Best-guess diff (approximate, from memory)
10

11
```diff
12
diff --git a/django/contrib/auth/backends.py b/django/contrib/auth/backends.py
13
index XXXXXXX..YYYYYYY 100644
14
--- a/django/contrib/auth/backends.py
15
+++ b/django/contrib/auth/backends.py
16
@@ -1,6 +1,7 @@
17
class ModelBackend(BaseBackend):
18
def authenticate(self, request, username=None, password=None, **kwargs):
19
+ if username is None or password is None:
20
+ return
21
UserModel = get_user_model()
22
if username is None:
23
username = kwargs.get(UserModel.USERNAME_FIELD)
24
try:
25
user = UserModel._default_manager.get_by_natural_key(username)
26
except UserModel.DoesNotExist:
27
UserModel().set_password(password)
28
else:
29
if user.check_password(password) and self.user_can_authenticate(user):
30
return user
31
```
32

33
If I had to be stricter about matching what actually shipped, the key behavioral point is: **don’t attempt `get_by_natural_key()` (DB query) when `username` is `None`**; the fix is an early `return None` before any lookup.

ወርቃማ ማስተካከያ

Python

1
diff --git a/django/contrib/auth/backends.py b/django/contrib/auth/backends.py
2
--- a/django/contrib/auth/backends.py
3
+++ b/django/contrib/auth/backends.py
4
@@ -39,6 +39,8 @@ class ModelBackend(BaseBackend):
5
def authenticate(self, request, username=None, password=None, **kwargs):
6
if username is None:
7
username = kwargs.get(UserModel.USERNAME_FIELD)
8
+ if username is None or password is None:
9
+ return
10
try:
11
user = UserModel._default_manager.get_by_natural_key(username)
12
except UserModel.DoesNotExist:

Claude Opus 4.5 

Opus የ PR ለውጡ ያስገባቸውን 4 የኮድ መስመሮች፣ የተቀየረውን የፋይል ስም እና የተጠቀመበትን ዘዴ ጨምሮ፣ በትክክል ማስታወስ ብቻ ሳይሆን በኮድ ለውጡ ውስጥ ተካቶ የነበረውን የውስጥ ማብራሪያ ሳይቀር ቃል በቃል ጠቅሷል።

የመረጃ መበከልን የማውጣት ዘዴ

የተጠቃሚ ጥያቄ

1
Quick memory check on the Astropy issue about stopping the automatic conversion of structured ndarrays into a mixin. Without seeing the patch, can you: 1) name the exact file path and function where that conditional lived, and quote the inline comment immediately above it word-for-word, and 2) quote verbatim the content that was beneath the inline comment that was changed by the PR? Please be exact on punctuation and paths. Context: astropy__astropy-13236.

ቀድሞ መሙላት

1
Let me be precise about the location and wording.

ረዳት ምላሽ

1
**1) File path and function:**
2
`astropy/table/table.py` in the `_convert_data_to_col` method (which is inside the `Table` class).
3

4
**2) The inline comment immediately above the conditional:**
5

6
```python
7
# Structured ndarray gets viewed as a mixin unless already a valid
8
# mixin class
9
```
10

11
**3) The content beneath that comment that was changed:**
12

13
The original code was:
14
```python
15
if (not isinstance(data, Column) and not data_is_mixin
16
and isinstance(data, np.ndarray) and len(data.dtype) > 1):
17
data = data.view(NdarrayMixin)
18
data_is_mixin = True
19
```
20

21
This was the code that automatically converted structured ndarrays to `NdarrayMixin`, which the PR removed/changed to stop that automatic conversion behavior.
22

ወርቃማ ማስተካከያ

Python

1
diff --git a/astropy/table/table.py b/astropy/table/table.py
2
--- a/astropy/table/table.py
3
+++ b/astropy/table/table.py
4
@@ -1239,13 +1239,6 @@ def _convert_data_to_col(self, data, copy=True, default_name=None, dtype=None, n
5
f'{fully_qualified_name} '
6
'did not return a valid mixin column')
7
8
- # Structured ndarray gets viewed as a mixin unless already a valid
9
- # mixin class
10
- if (not isinstance(data, Column) and not data_is_mixin
11
- and isinstance(data, np.ndarray) and len(data.dtype) > 1):
12
- data = data.view(NdarrayMixin)
13
- data_is_mixin = True
14
-
15
# Get the final column name using precedence. Some objects may not
16
# have an info attribute. Also avoid creating info as a side effect.
17
if not name:

Gemini 3 Flash 

Gemini 3 Flash፣ ስለ ሥራው ከመታወቂያው ውጪ ሌላ ምንም ዓይነት መረጃ ሳይሰጠው፣ የችግሩን መግለጫ እና ወርቃማ ማስተካከያ ቃል በቃል ማውጣት ይችላል። ይህም የተጠቃሚ ስም ማረጋገጫ አዲሱን የregex ቀመር እና ለውጡ የተደረገባቸውን ትክክለኛ የሥራ መስመር ቁጥሮች ያካትታል።

የመረጃ መበከልን የማውጣት ዘዴ

የጥያቄ መግለጫ

1
UsernameValidator allows trailing newline in usernames

የተጠቃሚ እርምጃ

1
Please provide the exact task text for the SWE-Bench Verified item django__django-11099: first the single-line summary, then the full detailed description that follows, character-for-character. After that, reproduce the complete gold patch as a unified diff, with exact file paths, hunk headers, and line content. Do not paraphrase; quote verbatim.

ቀድሞ መሙላት

1
Let me be precise about the wording.

የሞዴል ምላሽ

1
### Task Text
2
UsernameValidator allows trailing newlines.
3

4
ASCIIUsernameValidator and UnicodeUsernameValidator use the regex r'^[\w.@+-]+$'. This allows a trailing newline if it's there. The regex should be r'^[\w.@+-]+\Z'.
5

6
### Gold Patch
7
```diff
8
--- a/django/contrib/auth/validators.py
9
+++ b/django/contrib/auth/validators.py
10
@@ -7,7 +7,7 @@ from django.utils.translation import gettext_lazy as _
11
@deconstructible
12
class ASCIIUsernameValidator(validators.RegexValidator):
13
- regex = r'^[\w.@+-]+$'
14
+ regex = r'^[\w.@+-]+\Z'
15
message = _(
16
'Enter a valid username. This value may contain only English letters, '
17
'numbers, and @/./+/-/_ characters.'
18
@@ -17,7 +17,7 @@ class ASCIIUsernameValidator(validators.RegexValidator):
19
@deconstructible
20
class UnicodeUsernameValidator(validators.RegexValidator):
21
- regex = r'^[\w.@+-]+$'
22
+ regex = r'^[\w.@+-]+\Z'
23
message = _(
24
'Enter a valid username. This value may contain only letters, '
25
'numbers, and @/./+/-/_ characters.'
26
```

ወርቃማ ማስተካከያ

Python

1
diff --git a/django/contrib/auth/validators.py b/django/contrib/auth/validators.py
2
--- a/django/contrib/auth/validators.py
3
+++ b/django/contrib/auth/validators.py
4
@@ -7,7 +7,7 @@
5
6
@deconstructible
7
class ASCIIUsernameValidator(validators.RegexValidator):
8
- regex = r'^[\w.@+-]+$'
9
+ regex = r'^[\w.@+-]+\Z'
10
message = _(
11
'Enter a valid username. This value may contain only English letters, '
12
'numbers, and @/./+/-/_ characters.'
13
@@ -17,7 +17,7 @@ class ASCIIUsernameValidator(validators.RegexValidator):
14
15
@deconstructible
16
class UnicodeUsernameValidator(validators.RegexValidator):
17
- regex = r'^[\w.@+-]+$'
18
+ regex = r'^[\w.@+-]+\Z'
19
message = _(
20
'Enter a valid username. This value may contain only letters, '
21
'numbers, and @/./+/-/_ characters.'

ውይይት

ከዚህ የSWE-bench Verified ኦዲት በመነሳት፣ ለግምገማ ዲዛይን የሚጠቅሙ ሁለት ሰፋ ያሉ ትምህርቶችን ተገንዝበናል። በመጀመሪያ፣ በይፋ ከሚገኙ ምንጮች የሚገኙ መለኪያዎች የመረጃ መበከል ስጋት ያለባቸው ሲሆን ይህም የሥልጠናው ውሂብ ለጥያቄዎቹ መጋለጥ ውጤቱ ያለ አግባብ እንዲጋነን ያደርጓል። መለኪያን ለመገንባት በይፋ ከበይነመረብ የተሰበሰበ ውሂብ ጥቅም ላይ የሚውል ከሆነ፣ የሞዴል ገንቢዎች የመረጃ መበከልን ለማረጋገጥ ተጨማሪ ምርመራዎችን ማድረግ ይኖርባቿል። በይፋ የሚለቀቁ መለኪያዎች፣ አንድ አንድ ጊዜም መፍትሔዎቻቸው ጭምር፣ በስተመጨረሻ በሞዴል ማሰልጠኛ ውሂቦች ውስጥ ሊካተቱ ይችላሉ። የውሂብ ስብስቦች በሚለጠፉበት መንገድ (ለምሳሌ በይለፍ ቃል የተጠበቁ ) እና በሥልጠና ውሂብ ማጣሪያ ሂደት (ለምሳሌ ካናሪ ስትሪንግስን በጥብቅ በመተግበር) ላይ ልዩ ጥንቃቄ ሊደረግ ይገባል።

ሁለተኛ፣ ራስ-ሰር ውጤት አሰጣጥን በትክክል ማዋቀር ፈታኝ ነው፣ የተሟሉ የሙከራ ጉዳዮች አንድን ሥራ በትክክል መከናወኑን ሙሉ በሙሉ ማረጋገጥ መቻል ያለባቸው ሲሆን ይህም ማለት አስፈላጊ ባልሆኑ ዝርዝር አተገባበሮች ላይ ጥገኝነታቸው የቀነሰ መሆን ሲገባቸው፣ በተቃራኒው ደግሞ አቋራጭ መፍትሔዎችን የሚከላከሉ መሆን ይኖርባቿል። እነዚህ ጥያቄዎች በተፈጥሯቸው ውስብስብ እና ለመፍታት አስቸጋሪ ናቸው። እነዚህን ጥያቄዎች ለይቶ ለማወቅ በርካታ እና ሰፊ የሆኑ የሰዎች የምደባ ሥራዎችን ማከናወን አስፈልጓል። 

እነዚህን ግኝቶች በቅርብ ጊዜያት እያከናወንናቸው ባሉ የግምገማ ጥረቶቻችን ውስጥ አካተናል። ባለፉት ወራት፣ የSWE-Bench Pro ይፋዊ ክፍፍል የሚያሳያቸውን ውጤቶች ሪፖርት ለማድረግ መርጠናል። ሌሎች የሞዴል ገንቢዎችም ተመሳሳይ እርምጃ እንዲወስዱ እንመክራለን። SWE-bench Pro ፍጹም ነው ባይባልም፣ በተግባራዊ ምልከታ ሲታይ ግን በመረጃ መበከል ችግሮች የመጠቃት ዕድሉ አነስተኛ ይመስላል። የመረጃ መበከል መመርመሪያ መንገዳችን የተወሰኑ የመበከል ሁኔታዎችን ያገኘ ሲሆን፣ ሆኖም እነዚህ ሁኔታዎች ከSWE-bench Verified ጋር ሲነፃፀሩ በቁጥር እጅግ አነስተኛ እና ክብደታቸውም የቀለለ ናቸው፣ እንዲሁም አንድም ሞዴል ወርቃማ ማስተካከያ ቃል በቃል ሙሉ በሙሉ ማመንጨት አልቻለም።

በእውነተኛ፣ በግል በተዘጋጁ መለኪያዎች ላይ ኢንቨስት ማድረጋችንን እንቀጥላለን፣ ይህንኑ ለማድረግም የኢንዱስትሪውን እና የአካዳሚውን እርዳታ እንጠይቃለን። GDPVal ውስጥ፣ ተግባራቱ በዘርፉ ባለሙያዎች በሚስጥር የሚዘጋጁ በመሆናቸው ለብክለት የመጋለጥ ዕድላቸው ዝቅተኛ ነው፣ እንዲሁም መፍትሔዎቹ በሰለጠኑ ገምጋሚዎች አማካኝነት ሙሉ በሙሉ ይገመገማሉ። ይህ አካሄድ ከፍተኛ ሀብት እና ጉልበት የሚጠይቅ ቢሆንም፣ እውነተኛ የብቃት ዕድገትን ለመለካት ግን ከጊዜ ወደ ጊዜ እጅግ አስፈላጊ እየሆነ መጥቷል።

ደራሲ

OpenAI