eq-layer 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- eq_layer/__init__.py +68 -0
- eq_layer/ab_eval.py +302 -0
- eq_layer/actions.py +242 -0
- eq_layer/affect.py +227 -0
- eq_layer/auditor.py +321 -0
- eq_layer/cli.py +174 -0
- eq_layer/coarse_discourse.py +107 -0
- eq_layer/data/intent_train.jsonl +299 -0
- eq_layer/dbdc3.py +197 -0
- eq_layer/dialogbank_iso.py +272 -0
- eq_layer/dialogue_reference.py +393 -0
- eq_layer/intent.py +199 -0
- eq_layer/intent_belief.py +276 -0
- eq_layer/interaction.py +314 -0
- eq_layer/policies.py +295 -0
- eq_layer/preferences.py +125 -0
- eq_layer/response_experiment.py +606 -0
- eq_layer/steer.py +281 -0
- eq_layer/tracker.py +111 -0
- eq_layer/trained_affect.py +246 -0
- eq_layer/trained_breakdown.py +143 -0
- eq_layer/trained_disagreement.py +148 -0
- eq_layer/trained_intent.py +291 -0
- eq_layer/trained_subtext.py +436 -0
- eq_layer-0.1.0.dist-info/METADATA +527 -0
- eq_layer-0.1.0.dist-info/RECORD +29 -0
- eq_layer-0.1.0.dist-info/WHEEL +4 -0
- eq_layer-0.1.0.dist-info/entry_points.txt +2 -0
- eq_layer-0.1.0.dist-info/licenses/LICENSE +21 -0
eq_layer/cli.py
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"""Command-line interface for the EQ-Layer control pass."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import argparse
|
|
6
|
+
import json
|
|
7
|
+
import sys
|
|
8
|
+
from dataclasses import asdict
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def _load_messages(raw: str) -> list[dict]:
|
|
12
|
+
payload = json.loads(raw)
|
|
13
|
+
if isinstance(payload, dict):
|
|
14
|
+
payload = payload.get("messages")
|
|
15
|
+
if not isinstance(payload, list) or not payload:
|
|
16
|
+
raise ValueError("Input must be a non-empty JSON list or {messages:[...]}.")
|
|
17
|
+
messages: list[dict] = []
|
|
18
|
+
for index, item in enumerate(payload):
|
|
19
|
+
if not isinstance(item, dict):
|
|
20
|
+
raise ValueError(f"message {index} must be an object")
|
|
21
|
+
role = str(item.get("role") or "")
|
|
22
|
+
content = str(item.get("content") or "")
|
|
23
|
+
if role not in {"user", "assistant", "system"}:
|
|
24
|
+
raise ValueError(f"message {index} has unsupported role {role!r}")
|
|
25
|
+
if not content.strip():
|
|
26
|
+
raise ValueError(f"message {index} has empty content")
|
|
27
|
+
messages.append({"role": role, "content": content})
|
|
28
|
+
if not any(message["role"] == "user" for message in messages):
|
|
29
|
+
raise ValueError("Transcript must contain at least one user turn.")
|
|
30
|
+
return messages
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _intent_adapter(mode: str):
|
|
34
|
+
from .intent import HeuristicIntent
|
|
35
|
+
from .trained_intent import TrainedIntent
|
|
36
|
+
|
|
37
|
+
if mode == "heuristic":
|
|
38
|
+
return HeuristicIntent(), "heuristic"
|
|
39
|
+
try:
|
|
40
|
+
return TrainedIntent.from_bundled(), "trained-tfidf-logreg"
|
|
41
|
+
except ImportError:
|
|
42
|
+
if mode == "learned":
|
|
43
|
+
raise
|
|
44
|
+
return HeuristicIntent(), "heuristic-fallback-no-ml-extra"
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _lightweight_route(messages: list[dict], intent_mode: str) -> dict:
|
|
48
|
+
from .affect import HeuristicAffect
|
|
49
|
+
from .dialogue_reference import infer_dialogue_reference
|
|
50
|
+
from .interaction import infer_interaction_quality, infer_repair_state
|
|
51
|
+
from .policies import Selector
|
|
52
|
+
from .steer import Steer
|
|
53
|
+
|
|
54
|
+
state = HeuristicAffect().infer(messages, turn_index=len(messages))
|
|
55
|
+
intent_adapter, intent_backend = _intent_adapter(intent_mode)
|
|
56
|
+
intent = intent_adapter.infer(messages)
|
|
57
|
+
repair = infer_repair_state(messages)
|
|
58
|
+
interaction_quality = infer_interaction_quality(messages)
|
|
59
|
+
reference = infer_dialogue_reference(messages)
|
|
60
|
+
selection = Selector().select(state, intent)
|
|
61
|
+
steer = Steer.build(
|
|
62
|
+
selection.policy,
|
|
63
|
+
intent,
|
|
64
|
+
repair=repair,
|
|
65
|
+
interaction_quality=interaction_quality,
|
|
66
|
+
reference=reference,
|
|
67
|
+
)
|
|
68
|
+
return {
|
|
69
|
+
"runtime_mode": "lightweight-local",
|
|
70
|
+
"intent_backend": intent_backend,
|
|
71
|
+
"policy": {
|
|
72
|
+
"name": selection.policy.name,
|
|
73
|
+
"register": selection.policy.register.value,
|
|
74
|
+
},
|
|
75
|
+
"affect": asdict(state),
|
|
76
|
+
"intent": asdict(intent),
|
|
77
|
+
"repair": asdict(repair),
|
|
78
|
+
"interaction_quality": asdict(interaction_quality),
|
|
79
|
+
"reference": asdict(reference),
|
|
80
|
+
"factored_action": steer.action.to_dict() if steer.action else None,
|
|
81
|
+
"system_instruction": steer.system_instruction(),
|
|
82
|
+
"claim_boundary": (
|
|
83
|
+
"Lightweight routing is a portable control pass, not the full learned "
|
|
84
|
+
"research pipeline and not proof of emotional intelligence."
|
|
85
|
+
),
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def _full_route(messages: list[dict], affect_model: str, subtext_model: str) -> dict:
|
|
90
|
+
from .response_experiment import FullEQPipeline
|
|
91
|
+
|
|
92
|
+
pipeline = FullEQPipeline.load(affect_model, subtext_model)
|
|
93
|
+
steered, metadata = pipeline.steer_messages(messages)
|
|
94
|
+
instruction = (
|
|
95
|
+
steered[0]["content"]
|
|
96
|
+
if steered and steered[0].get("role") == "system"
|
|
97
|
+
else ""
|
|
98
|
+
)
|
|
99
|
+
return {
|
|
100
|
+
"runtime_mode": "full-learned",
|
|
101
|
+
"intent_backend": "trained-tfidf-logreg",
|
|
102
|
+
"metadata": metadata,
|
|
103
|
+
"factored_action": metadata.get("factored_action"),
|
|
104
|
+
"system_instruction": instruction,
|
|
105
|
+
"claim_boundary": (
|
|
106
|
+
"Full learned routing uses trained EQ-Layer components; response-quality "
|
|
107
|
+
"improvement still requires empirical evaluation."
|
|
108
|
+
),
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def _route(args: argparse.Namespace) -> int:
|
|
113
|
+
raw = args.messages_json if args.messages_json is not None else sys.stdin.read()
|
|
114
|
+
if not raw.strip():
|
|
115
|
+
raise ValueError("Provide transcript JSON with --messages-json or stdin")
|
|
116
|
+
messages = _load_messages(raw)
|
|
117
|
+
if bool(args.affect_model) != bool(args.subtext_model):
|
|
118
|
+
raise ValueError("--affect-model and --subtext-model must be supplied together")
|
|
119
|
+
if args.affect_model:
|
|
120
|
+
result = _full_route(messages, args.affect_model, args.subtext_model)
|
|
121
|
+
else:
|
|
122
|
+
result = _lightweight_route(messages, args.intent_mode)
|
|
123
|
+
print(json.dumps(result, ensure_ascii=False, indent=2 if args.pretty else None))
|
|
124
|
+
return 0
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def _doctor() -> int:
|
|
128
|
+
payload = {
|
|
129
|
+
"package": "eq-layer",
|
|
130
|
+
"version": "0.1.0",
|
|
131
|
+
"python": sys.version.split()[0],
|
|
132
|
+
"ml_extra_available": True,
|
|
133
|
+
}
|
|
134
|
+
try:
|
|
135
|
+
import sklearn # noqa: F401
|
|
136
|
+
except ImportError:
|
|
137
|
+
payload["ml_extra_available"] = False
|
|
138
|
+
print(json.dumps(payload, indent=2))
|
|
139
|
+
return 0
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
def build_parser() -> argparse.ArgumentParser:
|
|
143
|
+
parser = argparse.ArgumentParser(prog="eq-layer")
|
|
144
|
+
sub = parser.add_subparsers(dest="command", required=True)
|
|
145
|
+
|
|
146
|
+
route = sub.add_parser("route", help="Emit an inspectable EQ-Layer control decision.")
|
|
147
|
+
route.add_argument("--messages-json")
|
|
148
|
+
route.add_argument(
|
|
149
|
+
"--intent-mode",
|
|
150
|
+
choices=("auto", "learned", "heuristic"),
|
|
151
|
+
default="auto",
|
|
152
|
+
)
|
|
153
|
+
route.add_argument("--affect-model")
|
|
154
|
+
route.add_argument("--subtext-model")
|
|
155
|
+
route.add_argument("--pretty", action="store_true")
|
|
156
|
+
route.set_defaults(handler=_route)
|
|
157
|
+
|
|
158
|
+
doctor = sub.add_parser("doctor", help="Report local EQ-Layer runtime availability.")
|
|
159
|
+
doctor.set_defaults(handler=lambda _args: _doctor())
|
|
160
|
+
return parser
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
def main(argv: list[str] | None = None) -> int:
|
|
164
|
+
parser = build_parser()
|
|
165
|
+
args = parser.parse_args(argv)
|
|
166
|
+
try:
|
|
167
|
+
return int(args.handler(args))
|
|
168
|
+
except (ValueError, json.JSONDecodeError, ImportError) as exc:
|
|
169
|
+
parser.error(str(exc))
|
|
170
|
+
return 2
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
if __name__ == "__main__":
|
|
174
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import hashlib
|
|
4
|
+
import io
|
|
5
|
+
import json
|
|
6
|
+
import urllib.request
|
|
7
|
+
import zipfile
|
|
8
|
+
from collections import Counter
|
|
9
|
+
from dataclasses import dataclass
|
|
10
|
+
|
|
11
|
+
COARSE_DISCOURSE_URL = (
|
|
12
|
+
"https://zissou.infosci.cornell.edu/convokit/datasets/"
|
|
13
|
+
"reddit-coarse-discourse-corpus/reddit-coarse-discourse-corpus.zip"
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@dataclass(frozen=True)
|
|
18
|
+
class CoarseDiscourseExample:
|
|
19
|
+
utterance_id: str
|
|
20
|
+
text: str
|
|
21
|
+
label: str
|
|
22
|
+
conversation_id: str
|
|
23
|
+
reply_to: str | None
|
|
24
|
+
context_text: str = ""
|
|
25
|
+
|
|
26
|
+
@property
|
|
27
|
+
def model_text(self) -> str:
|
|
28
|
+
if self.context_text:
|
|
29
|
+
return f"{self.context_text}\n[REPLY]\n{self.text}"
|
|
30
|
+
return self.text
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def download_archive() -> bytes:
|
|
34
|
+
request = urllib.request.Request(
|
|
35
|
+
COARSE_DISCOURSE_URL,
|
|
36
|
+
headers={"User-Agent": "eq-layer-coarse-discourse/0.1"},
|
|
37
|
+
)
|
|
38
|
+
with urllib.request.urlopen(request, timeout=120) as response:
|
|
39
|
+
return response.read()
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def sha256_bytes(data: bytes) -> str:
|
|
43
|
+
return hashlib.sha256(data).hexdigest()
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def _find_member(names: list[str], suffix: str) -> str:
|
|
47
|
+
matches = [name for name in names if name.endswith(suffix)]
|
|
48
|
+
if len(matches) != 1:
|
|
49
|
+
raise ValueError(f"Expected one {suffix} member, found {matches}")
|
|
50
|
+
return matches[0]
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def load_examples(data: bytes) -> tuple[list[CoarseDiscourseExample], list[str]]:
|
|
54
|
+
with zipfile.ZipFile(io.BytesIO(data)) as archive:
|
|
55
|
+
names = archive.namelist()
|
|
56
|
+
utterances_member = _find_member(names, "utterances.jsonl")
|
|
57
|
+
examples: list[CoarseDiscourseExample] = []
|
|
58
|
+
|
|
59
|
+
rows = []
|
|
60
|
+
with archive.open(utterances_member) as fh:
|
|
61
|
+
for raw in fh:
|
|
62
|
+
rows.append(json.loads(raw.decode("utf-8")))
|
|
63
|
+
|
|
64
|
+
text_by_id = {
|
|
65
|
+
str(row.get("id") or ""): str(row.get("text") or "").strip()
|
|
66
|
+
for row in rows
|
|
67
|
+
if row.get("id") is not None
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
for row in rows:
|
|
71
|
+
text = str(row.get("text") or "").strip()
|
|
72
|
+
meta = row.get("meta") or {}
|
|
73
|
+
label = str(meta.get("majority_type") or "").strip().lower()
|
|
74
|
+
if not text or not label:
|
|
75
|
+
continue
|
|
76
|
+
|
|
77
|
+
utterance_id = str(row.get("id") or "")
|
|
78
|
+
conversation_id = str(
|
|
79
|
+
row.get("conversation_id")
|
|
80
|
+
or row.get("root")
|
|
81
|
+
or utterance_id
|
|
82
|
+
)
|
|
83
|
+
reply_raw = row.get("reply_to")
|
|
84
|
+
if reply_raw is None:
|
|
85
|
+
reply_raw = row.get("reply-to")
|
|
86
|
+
reply_to = str(reply_raw) if reply_raw is not None else None
|
|
87
|
+
|
|
88
|
+
examples.append(
|
|
89
|
+
CoarseDiscourseExample(
|
|
90
|
+
utterance_id=utterance_id,
|
|
91
|
+
text=text,
|
|
92
|
+
label=label,
|
|
93
|
+
conversation_id=conversation_id,
|
|
94
|
+
reply_to=reply_to,
|
|
95
|
+
context_text=text_by_id.get(reply_to or "", ""),
|
|
96
|
+
)
|
|
97
|
+
)
|
|
98
|
+
return examples, names
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def inventory(examples: list[CoarseDiscourseExample]) -> dict:
|
|
102
|
+
counts = Counter(example.label for example in examples)
|
|
103
|
+
return {
|
|
104
|
+
"examples": len(examples),
|
|
105
|
+
"conversations": len({x.conversation_id for x in examples if x.conversation_id}),
|
|
106
|
+
"labels": dict(sorted(counts.items())),
|
|
107
|
+
}
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
{"text":"Bunu depoya ekle","label":"action_request"}
|
|
2
|
+
{"text":"Dosyayı güncelle","label":"action_request"}
|
|
3
|
+
{"text":"Şu hatayı düzelt","label":"action_request"}
|
|
4
|
+
{"text":"Kodun testlerini çalıştır","label":"action_request"}
|
|
5
|
+
{"text":"Bu metni kısalt","label":"action_request"}
|
|
6
|
+
{"text":"GitHub'a gönder","label":"action_request"}
|
|
7
|
+
{"text":"Devam et ve sonucu yaz","label":"action_request"}
|
|
8
|
+
{"text":"Bu bölümü sil","label":"action_request"}
|
|
9
|
+
{"text":"Raporu oluştur","label":"action_request"}
|
|
10
|
+
{"text":"Kaynakları araştır","label":"action_request"}
|
|
11
|
+
{"text":"Belgeyi incele","label":"action_request"}
|
|
12
|
+
{"text":"Şunu kontrol et","label":"action_request"}
|
|
13
|
+
{"text":"Make this change","label":"action_request"}
|
|
14
|
+
{"text":"Update the file","label":"action_request"}
|
|
15
|
+
{"text":"Run the tests","label":"action_request"}
|
|
16
|
+
{"text":"Add this to the repository","label":"action_request"}
|
|
17
|
+
{"text":"Fix the bug","label":"action_request"}
|
|
18
|
+
{"text":"Create the report","label":"action_request"}
|
|
19
|
+
{"text":"Delete this section","label":"action_request"}
|
|
20
|
+
{"text":"Check the document","label":"action_request"}
|
|
21
|
+
{"text":"Benchmarkı koştur","label":"action_request"}
|
|
22
|
+
{"text":"Testleri koştur","label":"action_request"}
|
|
23
|
+
{"text":"Fonksiyonu yeniden yaz","label":"action_request"}
|
|
24
|
+
{"text":"README'yi değiştir","label":"action_request"}
|
|
25
|
+
{"text":"Bu kısmı yeniden düzenle","label":"action_request"}
|
|
26
|
+
{"text":"Run the benchmark","label":"action_request"}
|
|
27
|
+
{"text":"Rewrite this function","label":"action_request"}
|
|
28
|
+
{"text":"Please run the checks","label":"action_request"}
|
|
29
|
+
{"text":"Edit the README","label":"action_request"}
|
|
30
|
+
{"text":"Depodaki lisans dosyasını yenile","label":"action_request"}
|
|
31
|
+
{"text":"Lisans dosyasını güncelle","label":"action_request"}
|
|
32
|
+
{"text":"Son çıktıyı tabloya ekle","label":"action_request"}
|
|
33
|
+
{"text":"Tabloya yeni satırı ekle","label":"action_request"}
|
|
34
|
+
{"text":"Benchmark koşusunu başlat","label":"action_request"}
|
|
35
|
+
{"text":"Koşuyu başlat","label":"action_request"}
|
|
36
|
+
{"text":"Bu değişiklikleri commit et","label":"action_request"}
|
|
37
|
+
{"text":"Değişiklikleri kaydet","label":"action_request"}
|
|
38
|
+
{"text":"Tekrarlanan bölümü kaldır","label":"action_request"}
|
|
39
|
+
{"text":"Dosyayı yeniden adlandır","label":"action_request"}
|
|
40
|
+
{"text":"Bu paragrafı İngilizceye çevir","label":"action_request"}
|
|
41
|
+
{"text":"Grafiği üret","label":"action_request"}
|
|
42
|
+
{"text":"Sonucu karşılaştır","label":"action_request"}
|
|
43
|
+
{"text":"Bana kısa bir özet hazırla","label":"action_request"}
|
|
44
|
+
{"text":"Bunu şimdi yapabilir misin","label":"action_request"}
|
|
45
|
+
{"text":"Şunu düzeltir misin","label":"action_request"}
|
|
46
|
+
{"text":"Bunu kontrol eder misin","label":"action_request"}
|
|
47
|
+
{"text":"Dosyayı açıp bak","label":"action_request"}
|
|
48
|
+
{"text":"Ana dala gönder","label":"action_request"}
|
|
49
|
+
{"text":"Please remove the duplicate section","label":"action_request"}
|
|
50
|
+
{"text":"Commit these changes","label":"action_request"}
|
|
51
|
+
{"text":"Start the benchmark run","label":"action_request"}
|
|
52
|
+
{"text":"Add the latest output to the table","label":"action_request"}
|
|
53
|
+
{"text":"Rename the file","label":"action_request"}
|
|
54
|
+
{"text":"Translate this paragraph to English","label":"action_request"}
|
|
55
|
+
{"text":"Generate the chart","label":"action_request"}
|
|
56
|
+
{"text":"Compare the results","label":"action_request"}
|
|
57
|
+
{"text":"Prepare a short summary","label":"action_request"}
|
|
58
|
+
{"text":"Could you fix this","label":"action_request"}
|
|
59
|
+
{"text":"Please check this","label":"action_request"}
|
|
60
|
+
{"text":"Open the file and inspect it","label":"action_request"}
|
|
61
|
+
{"text":"Push this to main","label":"action_request"}
|
|
62
|
+
{"text":"Başarısız testi yeniden çalıştır","label":"action_request"}
|
|
63
|
+
{"text":"Başarısız job'u tekrar çalıştır","label":"action_request"}
|
|
64
|
+
{"text":"Please rerun the failed test","label":"action_request"}
|
|
65
|
+
{"text":"Rerun the job","label":"action_request"}
|
|
66
|
+
{"text":"Durum ne","label":"status_check"}
|
|
67
|
+
{"text":"Son durum nedir","label":"status_check"}
|
|
68
|
+
{"text":"Ne kadar kaldı","label":"status_check"}
|
|
69
|
+
{"text":"Bitti mi","label":"status_check"}
|
|
70
|
+
{"text":"Şu an çalışıyor mu","label":"status_check"}
|
|
71
|
+
{"text":"İşlem ilerliyor mu","label":"status_check"}
|
|
72
|
+
{"text":"Koşu tamamlandı mı","label":"status_check"}
|
|
73
|
+
{"text":"Workflow ne durumda","label":"status_check"}
|
|
74
|
+
{"text":"İndirme bitti mi","label":"status_check"}
|
|
75
|
+
{"text":"Şimdi ne oldu","label":"status_check"}
|
|
76
|
+
{"text":"Hesaplama devam ediyor mu","label":"status_check"}
|
|
77
|
+
{"text":"Kaç dosya kaldı","label":"status_check"}
|
|
78
|
+
{"text":"What's the status","label":"status_check"}
|
|
79
|
+
{"text":"Is it finished","label":"status_check"}
|
|
80
|
+
{"text":"How much is left","label":"status_check"}
|
|
81
|
+
{"text":"Is the workflow still running","label":"status_check"}
|
|
82
|
+
{"text":"Did the download finish","label":"status_check"}
|
|
83
|
+
{"text":"Where are we now","label":"status_check"}
|
|
84
|
+
{"text":"CI bitti mi","label":"status_check"}
|
|
85
|
+
{"text":"Kaç görev kaldı","label":"status_check"}
|
|
86
|
+
{"text":"Kaç iş kaldı","label":"status_check"}
|
|
87
|
+
{"text":"Ne aşamada","label":"status_check"}
|
|
88
|
+
{"text":"Workflow tamamlandı mı","label":"status_check"}
|
|
89
|
+
{"text":"Koşu bitti mi","label":"status_check"}
|
|
90
|
+
{"text":"Is the CI finished","label":"status_check"}
|
|
91
|
+
{"text":"How many tasks are left","label":"status_check"}
|
|
92
|
+
{"text":"How many jobs remain","label":"status_check"}
|
|
93
|
+
{"text":"What stage are we at","label":"status_check"}
|
|
94
|
+
{"text":"Is the run done","label":"status_check"}
|
|
95
|
+
{"text":"Runner hâlâ aktif mi","label":"status_check"}
|
|
96
|
+
{"text":"Şimdi kaç tane kaldı","label":"status_check"}
|
|
97
|
+
{"text":"İşlem tamamlandı mı yoksa sürüyor mu","label":"status_check"}
|
|
98
|
+
{"text":"Koşu hâlâ devam ediyor mu","label":"status_check"}
|
|
99
|
+
{"text":"Runner kapandı mı","label":"status_check"}
|
|
100
|
+
{"text":"Şu an hangi aşamada","label":"status_check"}
|
|
101
|
+
{"text":"Geriye ne kaldı","label":"status_check"}
|
|
102
|
+
{"text":"İş bitti mi yoksa devam mı ediyor","label":"status_check"}
|
|
103
|
+
{"text":"Ne kadarı tamamlandı","label":"status_check"}
|
|
104
|
+
{"text":"Yüzde kaç bitti","label":"status_check"}
|
|
105
|
+
{"text":"Workflow sonuçlandı mı","label":"status_check"}
|
|
106
|
+
{"text":"Son job tamamlandı mı","label":"status_check"}
|
|
107
|
+
{"text":"Has the job completed","label":"status_check"}
|
|
108
|
+
{"text":"Is the runner still active","label":"status_check"}
|
|
109
|
+
{"text":"What remains to be done","label":"status_check"}
|
|
110
|
+
{"text":"Is the process still running","label":"status_check"}
|
|
111
|
+
{"text":"How far along is it","label":"status_check"}
|
|
112
|
+
{"text":"What percentage is complete","label":"status_check"}
|
|
113
|
+
{"text":"Has the workflow completed","label":"status_check"}
|
|
114
|
+
{"text":"Is the last job done","label":"status_check"}
|
|
115
|
+
{"text":"Are we finished yet","label":"status_check"}
|
|
116
|
+
{"text":"How many are still pending","label":"status_check"}
|
|
117
|
+
{"text":"Bu neden oluyor","label":"explanation"}
|
|
118
|
+
{"text":"Nasıl çalışıyor","label":"explanation"}
|
|
119
|
+
{"text":"Bunu açıkla","label":"explanation"}
|
|
120
|
+
{"text":"Bunun sebebi ne","label":"explanation"}
|
|
121
|
+
{"text":"Aradaki farkı anlat","label":"explanation"}
|
|
122
|
+
{"text":"Neden bu sonucu verdi","label":"explanation"}
|
|
123
|
+
{"text":"Bu kavram ne demek","label":"explanation"}
|
|
124
|
+
{"text":"Nasıl hesaplanıyor","label":"explanation"}
|
|
125
|
+
{"text":"Bana mantığını anlat","label":"explanation"}
|
|
126
|
+
{"text":"Niçin böyle seçtin","label":"explanation"}
|
|
127
|
+
{"text":"Bu yöntemi açıklar mısın","label":"explanation"}
|
|
128
|
+
{"text":"Neden başarısız oldu","label":"explanation"}
|
|
129
|
+
{"text":"Why does this happen","label":"explanation"}
|
|
130
|
+
{"text":"Explain how this works","label":"explanation"}
|
|
131
|
+
{"text":"What does this mean","label":"explanation"}
|
|
132
|
+
{"text":"Why did it fail","label":"explanation"}
|
|
133
|
+
{"text":"Explain the difference","label":"explanation"}
|
|
134
|
+
{"text":"How is this calculated","label":"explanation"}
|
|
135
|
+
{"text":"Niye böyle davranıyor","label":"explanation"}
|
|
136
|
+
{"text":"Bu neden böyle davranıyor","label":"explanation"}
|
|
137
|
+
{"text":"Bunun mantığı nedir","label":"explanation"}
|
|
138
|
+
{"text":"Bu denklemi anlat","label":"explanation"}
|
|
139
|
+
{"text":"Why is it behaving this way","label":"explanation"}
|
|
140
|
+
{"text":"Why is the model doing this","label":"explanation"}
|
|
141
|
+
{"text":"Explain this equation","label":"explanation"}
|
|
142
|
+
{"text":"Bu seçimin gerekçesi ne","label":"explanation"}
|
|
143
|
+
{"text":"Neye göre bunu seçtin","label":"explanation"}
|
|
144
|
+
{"text":"Bu mekanizmayı bana açıklar mısın","label":"explanation"}
|
|
145
|
+
{"text":"Bu neden gerekli","label":"explanation"}
|
|
146
|
+
{"text":"Bu karar nasıl veriliyor","label":"explanation"}
|
|
147
|
+
{"text":"Bunun arkasındaki mantık ne","label":"explanation"}
|
|
148
|
+
{"text":"Bu hata neden çıkıyor","label":"explanation"}
|
|
149
|
+
{"text":"Bu formül nasıl türetiliyor","label":"explanation"}
|
|
150
|
+
{"text":"Bu sonuç nereden geliyor","label":"explanation"}
|
|
151
|
+
{"text":"Neden bu policy seçildi","label":"explanation"}
|
|
152
|
+
{"text":"Bu iki sonuç neden farklı","label":"explanation"}
|
|
153
|
+
{"text":"Why was this policy selected","label":"explanation"}
|
|
154
|
+
{"text":"Walk me through how this mechanism works","label":"explanation"}
|
|
155
|
+
{"text":"Why is this necessary","label":"explanation"}
|
|
156
|
+
{"text":"How is this decision made","label":"explanation"}
|
|
157
|
+
{"text":"What is the reasoning behind this","label":"explanation"}
|
|
158
|
+
{"text":"Why does this error occur","label":"explanation"}
|
|
159
|
+
{"text":"How is this formula derived","label":"explanation"}
|
|
160
|
+
{"text":"Where does this result come from","label":"explanation"}
|
|
161
|
+
{"text":"Why are these results different","label":"explanation"}
|
|
162
|
+
{"text":"Python 3.12 destekliyor mu","label":"question"}
|
|
163
|
+
{"text":"Bu dosyanın boyutu kaç","label":"question"}
|
|
164
|
+
{"text":"Hangi sürüm daha yeni","label":"question"}
|
|
165
|
+
{"text":"Kaç tane test var","label":"question"}
|
|
166
|
+
{"text":"Modelin bağlam sınırı nedir","label":"question"}
|
|
167
|
+
{"text":"Bu paket ücretsiz mi","label":"question"}
|
|
168
|
+
{"text":"Lisansı MIT mi","label":"question"}
|
|
169
|
+
{"text":"Hangi dosya ana dosya","label":"question"}
|
|
170
|
+
{"text":"Son commit hangi tarihte","label":"question"}
|
|
171
|
+
{"text":"Bu özellik var mı","label":"question"}
|
|
172
|
+
{"text":"İki yöntemden hangisi daha hızlı","label":"question"}
|
|
173
|
+
{"text":"Repo public mi","label":"question"}
|
|
174
|
+
{"text":"Does it support Python 3.12","label":"question"}
|
|
175
|
+
{"text":"How many tests are there","label":"question"}
|
|
176
|
+
{"text":"Which version is newer","label":"question"}
|
|
177
|
+
{"text":"Is this package free","label":"question"}
|
|
178
|
+
{"text":"What is the context limit","label":"question"}
|
|
179
|
+
{"text":"Is the repository public","label":"question"}
|
|
180
|
+
{"text":"Paketin minimum Python sürümü kaç","label":"question"}
|
|
181
|
+
{"text":"Bu dosyada kaç satır var","label":"question"}
|
|
182
|
+
{"text":"Model açık kaynak mı","label":"question"}
|
|
183
|
+
{"text":"Hangi dosya giriş noktası","label":"question"}
|
|
184
|
+
{"text":"GPU gerekiyor mu","label":"question"}
|
|
185
|
+
{"text":"Bu API ücretli mi","label":"question"}
|
|
186
|
+
{"text":"Bu seçenek varsayılan mı","label":"question"}
|
|
187
|
+
{"text":"Hangi lisans kullanılıyor","label":"question"}
|
|
188
|
+
{"text":"Bu dosya JSON mı","label":"question"}
|
|
189
|
+
{"text":"Repo kaç commit içeriyor","label":"question"}
|
|
190
|
+
{"text":"Bu özellik Windows'ta çalışıyor mu","label":"question"}
|
|
191
|
+
{"text":"Sürüm numarası ne","label":"question"}
|
|
192
|
+
{"text":"Which file is the entry point","label":"question"}
|
|
193
|
+
{"text":"Does this require a GPU","label":"question"}
|
|
194
|
+
{"text":"Is the model open source","label":"question"}
|
|
195
|
+
{"text":"What is the minimum Python version","label":"question"}
|
|
196
|
+
{"text":"How many lines are in this file","label":"question"}
|
|
197
|
+
{"text":"Is this API paid","label":"question"}
|
|
198
|
+
{"text":"Is this the default option","label":"question"}
|
|
199
|
+
{"text":"Which license is used","label":"question"}
|
|
200
|
+
{"text":"Is this file JSON","label":"question"}
|
|
201
|
+
{"text":"How many commits are in the repo","label":"question"}
|
|
202
|
+
{"text":"Does this work on Windows","label":"question"}
|
|
203
|
+
{"text":"What is the version number","label":"question"}
|
|
204
|
+
{"text":"Randevumu üç kez değiştirdiler","label":"statement"}
|
|
205
|
+
{"text":"Bugün biraz yorgunum","label":"statement"}
|
|
206
|
+
{"text":"Bu sonuç beklediğimden farklı","label":"statement"}
|
|
207
|
+
{"text":"Dosya artık burada","label":"statement"}
|
|
208
|
+
{"text":"Yeni sürüm daha temiz görünüyor","label":"statement"}
|
|
209
|
+
{"text":"Bu yaklaşım bana mantıklı geliyor","label":"statement"}
|
|
210
|
+
{"text":"Sunumu yarına erteledim","label":"statement"}
|
|
211
|
+
{"text":"Model bu örnekte iyi cevap verdi","label":"statement"}
|
|
212
|
+
{"text":"Kod şu anda main dalında","label":"statement"}
|
|
213
|
+
{"text":"Veri seti küçük","label":"statement"}
|
|
214
|
+
{"text":"Bu fikir ilginç","label":"statement"}
|
|
215
|
+
{"text":"Testlerin çoğu geçti","label":"statement"}
|
|
216
|
+
{"text":"The result is different from what I expected","label":"statement"}
|
|
217
|
+
{"text":"The file is here now","label":"statement"}
|
|
218
|
+
{"text":"The dataset is small","label":"statement"}
|
|
219
|
+
{"text":"This approach looks reasonable","label":"statement"}
|
|
220
|
+
{"text":"The model handled this example well","label":"statement"}
|
|
221
|
+
{"text":"Most tests passed","label":"statement"}
|
|
222
|
+
{"text":"Yeni yapı daha sade","label":"statement"}
|
|
223
|
+
{"text":"Yeni sürüm daha basit","label":"statement"}
|
|
224
|
+
{"text":"Workflow bugün hata verdi","label":"statement"}
|
|
225
|
+
{"text":"CI bugün hata verdi","label":"statement"}
|
|
226
|
+
{"text":"The new structure is simpler","label":"statement"}
|
|
227
|
+
{"text":"The workflow failed yesterday","label":"statement"}
|
|
228
|
+
{"text":"CI failed today","label":"statement"}
|
|
229
|
+
{"text":"The build failed today","label":"statement"}
|
|
230
|
+
{"text":"Bu sonuç önceki koşudan daha iyi","label":"statement"}
|
|
231
|
+
{"text":"Bugün veri indirme yavaşladı","label":"statement"}
|
|
232
|
+
{"text":"Yeni mimari daha okunabilir görünüyor","label":"statement"}
|
|
233
|
+
{"text":"Son test beklediğimden kötü çıktı","label":"statement"}
|
|
234
|
+
{"text":"Repo artık public","label":"statement"}
|
|
235
|
+
{"text":"Bu dosya dün değişti","label":"statement"}
|
|
236
|
+
{"text":"Model Türkçede daha iyi görünüyor","label":"statement"}
|
|
237
|
+
{"text":"Çalışma bugün hata verdi","label":"statement"}
|
|
238
|
+
{"text":"İndirme biraz yavaş","label":"statement"}
|
|
239
|
+
{"text":"Yeni çıktı daha kısa","label":"statement"}
|
|
240
|
+
{"text":"Bu yaklaşım riskli olabilir","label":"statement"}
|
|
241
|
+
{"text":"The latest result looks better","label":"statement"}
|
|
242
|
+
{"text":"The dataset was updated yesterday","label":"statement"}
|
|
243
|
+
{"text":"The new architecture is more readable","label":"statement"}
|
|
244
|
+
{"text":"The last test performed worse than expected","label":"statement"}
|
|
245
|
+
{"text":"The repository is public now","label":"statement"}
|
|
246
|
+
{"text":"The file changed yesterday","label":"statement"}
|
|
247
|
+
{"text":"The model looks better in Turkish","label":"statement"}
|
|
248
|
+
{"text":"The run failed today","label":"statement"}
|
|
249
|
+
{"text":"The download is slow","label":"statement"}
|
|
250
|
+
{"text":"The new output is shorter","label":"statement"}
|
|
251
|
+
{"text":"This approach may be risky","label":"statement"}
|
|
252
|
+
{"text":"Son commit sadece dokümantasyonu değiştirdi","label":"statement"}
|
|
253
|
+
{"text":"Commit sadece belgeleri değiştirdi","label":"statement"}
|
|
254
|
+
{"text":"The latest commit only changes documentation","label":"statement"}
|
|
255
|
+
{"text":"The commit only updates docs","label":"statement"}
|
|
256
|
+
{"text":"Bunu","label":"unknown"}
|
|
257
|
+
{"text":"Şunu","label":"unknown"}
|
|
258
|
+
{"text":"Onu","label":"unknown"}
|
|
259
|
+
{"text":"Bu şey","label":"unknown"}
|
|
260
|
+
{"text":"Şey","label":"unknown"}
|
|
261
|
+
{"text":"Buna mı","label":"unknown"}
|
|
262
|
+
{"text":"Şu mu","label":"unknown"}
|
|
263
|
+
{"text":"Onu da","label":"unknown"}
|
|
264
|
+
{"text":"Bununla","label":"unknown"}
|
|
265
|
+
{"text":"Şundan","label":"unknown"}
|
|
266
|
+
{"text":"Oradaki şey","label":"unknown"}
|
|
267
|
+
{"text":"Hani o","label":"unknown"}
|
|
268
|
+
{"text":"That one","label":"unknown"}
|
|
269
|
+
{"text":"This","label":"unknown"}
|
|
270
|
+
{"text":"It","label":"unknown"}
|
|
271
|
+
{"text":"That thing","label":"unknown"}
|
|
272
|
+
{"text":"The other one","label":"unknown"}
|
|
273
|
+
{"text":"This one","label":"unknown"}
|
|
274
|
+
{"text":"Diğeri","label":"unknown"}
|
|
275
|
+
{"text":"Öteki","label":"unknown"}
|
|
276
|
+
{"text":"O şey","label":"unknown"}
|
|
277
|
+
{"text":"Buna","label":"unknown"}
|
|
278
|
+
{"text":"The other","label":"unknown"}
|
|
279
|
+
{"text":"That other one","label":"unknown"}
|
|
280
|
+
{"text":"Şu","label":"unknown"}
|
|
281
|
+
{"text":"Ondan","label":"unknown"}
|
|
282
|
+
{"text":"Şuradaki","label":"unknown"}
|
|
283
|
+
{"text":"Bununki","label":"unknown"}
|
|
284
|
+
{"text":"Öbürü","label":"unknown"}
|
|
285
|
+
{"text":"Oradaki","label":"unknown"}
|
|
286
|
+
{"text":"O taraftaki","label":"unknown"}
|
|
287
|
+
{"text":"Şu olan","label":"unknown"}
|
|
288
|
+
{"text":"Bununla ilgili olan","label":"unknown"}
|
|
289
|
+
{"text":"Önceki şey","label":"unknown"}
|
|
290
|
+
{"text":"Hani şu","label":"unknown"}
|
|
291
|
+
{"text":"Diğer olan","label":"unknown"}
|
|
292
|
+
{"text":"That one there","label":"unknown"}
|
|
293
|
+
{"text":"The thing over there","label":"unknown"}
|
|
294
|
+
{"text":"The previous one","label":"unknown"}
|
|
295
|
+
{"text":"The other thing","label":"unknown"}
|
|
296
|
+
{"text":"The one over there","label":"unknown"}
|
|
297
|
+
{"text":"This thing","label":"unknown"}
|
|
298
|
+
{"text":"That thing there","label":"unknown"}
|
|
299
|
+
{"text":"The other one there","label":"unknown"}
|