Kopru: bos donen adim kabul edilmez, siradaki katman yapar
Ne yazi ne arac cagrisi iceren yanit (hata olayi dahil) cevap diye verilmiyor; secili modelde de katmanda da siradaki katmana geciliyor. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
77504b9aa4
commit
ff53cafb5c
2 files changed
+20
-10
No files matched your search
@@ -876,7 +876,7 @@ class H(http.server.BaseHTTPRequestHandler):
|
||||
Gecerse oldugu gibi verilir; gecmezse atilir ve ayni adimi siradaki katman yapar (ac(ad): (resp, rewriter,
|
||||
tag)). Son katmanin cevabi sorulmadan akar. Beklerken SSE yorum satiri gider ki Codex akisi kopmus saymasin."""
|
||||
self._akis_basligi(resp, resp.status)
|
||||
kalan, son_yazi, katmanda = list(sira), time.time(), False
|
||||
kalan, son_yazi = list(sira), time.time()
|
||||
|
||||
def w(b):
|
||||
if b:
|
||||
@@ -908,14 +908,12 @@ class H(http.server.BaseHTTPRequestHandler):
|
||||
gecmedi = jev_denetim.karar(puan)
|
||||
log(f"{tag} katman denetimi: ret={puan['ret']:.2f} sart={puan['sart']:.2f} -> "
|
||||
f"{'GECMEDI' if gecmedi else 'gecti'} ({time.time() - t0:.1f} sn, {len(metin)} karakter)")
|
||||
elif katmanda:
|
||||
# Katman cevap yerine hata dondurduyse (or. arac cagrisi desteklemeyen model "upstream 400")
|
||||
# acilamamis sayilir; hata cevap diye verilirse Codex ayni adimi bastan dener ve tur cevapsiz kalir.
|
||||
govde = b"".join(parcalar)
|
||||
if (b"event: error" in govde or b'"type":"error"' in govde or b'"type": "error"' in govde
|
||||
or b"response.failed" in govde):
|
||||
gecmedi = True
|
||||
log(f"{tag} katman denetimi: katman hata dondurdu, siradakine geciliyor: {govde[-200:]!r}")
|
||||
elif b'_call"' not in b"".join(parcalar):
|
||||
# Bos adim: ne yazi var ne arac cagrisi (hata olayi da boyledir, or. "upstream 400"). Kabul
|
||||
# edilmez, siradaki katman yapar; bos yanit cevap diye verilirse Codex adimi bastan dener.
|
||||
gecmedi = True
|
||||
log(f"{tag} katman denetimi: bos adim (yazi da komut da yok), siradakine geciliyor: "
|
||||
f"{b''.join(parcalar)[-200:]!r}")
|
||||
yeni = None
|
||||
while gecmedi and kalan and yeni is None:
|
||||
ad = kalan.pop(0)
|
||||
@@ -926,7 +924,6 @@ class H(http.server.BaseHTTPRequestHandler):
|
||||
if yeni is None:
|
||||
break
|
||||
resp, rewriter, tag = yeni
|
||||
katmanda = True
|
||||
log(f"{tag} katman denetimi: adim bu katmana verildi")
|
||||
if not kalan:
|
||||
return self._stream(resp, resp.status, tag, rewriter, izle, basliksiz=True)
|
||||
|
||||
@@ -218,6 +218,19 @@ class Akis(unittest.TestCase):
|
||||
self.assertEqual(self.sent(), body)
|
||||
self.assertEqual(self.asked, [])
|
||||
|
||||
def test_an_empty_step_of_the_selected_model_goes_to_the_next_layer(self):
|
||||
self.calistir(sse()) # no text, no tool call
|
||||
self.assertEqual(self.asked, ["iki"]) # nothing to ask about the empty step itself
|
||||
self.assertEqual(self.opened, ["Katman-2"])
|
||||
self.assertEqual(self.sent(), self.cevap["Katman-2"])
|
||||
|
||||
def test_an_empty_layer_goes_on_to_the_one_after_it(self):
|
||||
self.puanlar = [{"ret": 0.9, "sart": 0.0}]
|
||||
self.cevap["Katman-2"] = sse()
|
||||
self.calistir(sse("hayir"))
|
||||
self.assertEqual(self.opened, ["Katman-2", "Katman-3"])
|
||||
self.assertEqual(self.sent(), self.cevap["Katman-3"])
|
||||
|
||||
def test_unreachable_jev_keeps_the_answer(self):
|
||||
self.puanlar = [None]
|
||||
body = sse("Bunu yapamam.")
|
||||
|
||||
Reference in new issue
Block a user