diff
This commit is contained in:
parent
c8b9352bc0
commit
f40b77e0e3
5 changed files with 92 additions and 228 deletions
10
.gitignore
vendored
10
.gitignore
vendored
|
|
@ -6,16 +6,16 @@
|
||||||
*.yml
|
*.yml
|
||||||
*.txt
|
*.txt
|
||||||
*.log
|
*.log
|
||||||
!prompt.txt
|
|
||||||
*.rpy
|
*.rpy
|
||||||
!vocab.txt
|
|
||||||
!requirements.txt
|
|
||||||
*.csv
|
*.csv
|
||||||
*.ks
|
*.ks
|
||||||
*.cid
|
*.cid
|
||||||
*.png
|
*.png
|
||||||
*.script
|
*.script
|
||||||
!screens/*.png
|
|
||||||
__pycache__
|
__pycache__
|
||||||
|
|
||||||
|
!screens/*.png
|
||||||
!.pre-commit-config.yaml
|
!.pre-commit-config.yaml
|
||||||
vocab.txt
|
!prompt.txt
|
||||||
|
!vocab_base.txt
|
||||||
|
!requirements.txt
|
||||||
|
|
|
||||||
|
|
@ -536,24 +536,6 @@ class ConfigTab(QWidget):
|
||||||
self.output_cost_spin.setFixedWidth(200) # Medium
|
self.output_cost_spin.setFixedWidth(200) # Medium
|
||||||
price_form.addRow(output_label, self.output_cost_spin)
|
price_form.addRow(output_label, self.output_cost_spin)
|
||||||
|
|
||||||
cache_rate_label = QLabel("Est. Cache Rate:")
|
|
||||||
cache_rate_label.setFixedWidth(150)
|
|
||||||
cache_rate_label.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
|
|
||||||
cache_rate_label.setToolTip(
|
|
||||||
"Assumed prompt-cache hit rate used when estimating costs for Claude models.\n"
|
|
||||||
"0.9 = 90 % of input tokens billed at 10 % (cache read rate).\n"
|
|
||||||
"Set to 0 to disable the discount and use the full input rate."
|
|
||||||
)
|
|
||||||
self.estimate_cache_rate_spin = QDoubleSpinBox()
|
|
||||||
self.estimate_cache_rate_spin.setButtonSymbols(QDoubleSpinBox.NoButtons)
|
|
||||||
self.estimate_cache_rate_spin.setRange(0.0, 1.0)
|
|
||||||
self.estimate_cache_rate_spin.setDecimals(2)
|
|
||||||
self.estimate_cache_rate_spin.setSingleStep(0.05)
|
|
||||||
self.estimate_cache_rate_spin.setValue(0.9)
|
|
||||||
self.estimate_cache_rate_spin.setSuffix(" (Claude estimate only)")
|
|
||||||
self.estimate_cache_rate_spin.setFixedWidth(200)
|
|
||||||
price_form.addRow(cache_rate_label, self.estimate_cache_rate_spin)
|
|
||||||
|
|
||||||
right_column.addLayout(price_form)
|
right_column.addLayout(price_form)
|
||||||
right_column.addStretch()
|
right_column.addStretch()
|
||||||
|
|
||||||
|
|
@ -687,7 +669,6 @@ class ConfigTab(QWidget):
|
||||||
# Custom API pricing
|
# Custom API pricing
|
||||||
self.input_cost_spin.setValue(float(_get("input_cost", "2.0")))
|
self.input_cost_spin.setValue(float(_get("input_cost", "2.0")))
|
||||||
self.output_cost_spin.setValue(float(_get("output_cost", "8.0")))
|
self.output_cost_spin.setValue(float(_get("output_cost", "8.0")))
|
||||||
self.estimate_cache_rate_spin.setValue(float(_get("ESTIMATE_CACHE_RATE", "0.9")))
|
|
||||||
|
|
||||||
def connect_auto_save(self):
|
def connect_auto_save(self):
|
||||||
"""Connect all widgets to auto-save on change."""
|
"""Connect all widgets to auto-save on change."""
|
||||||
|
|
@ -712,7 +693,6 @@ class ConfigTab(QWidget):
|
||||||
self.note_width_spin.editingFinished.connect(self.auto_save)
|
self.note_width_spin.editingFinished.connect(self.auto_save)
|
||||||
self.input_cost_spin.editingFinished.connect(self.auto_save)
|
self.input_cost_spin.editingFinished.connect(self.auto_save)
|
||||||
self.output_cost_spin.editingFinished.connect(self.auto_save)
|
self.output_cost_spin.editingFinished.connect(self.auto_save)
|
||||||
self.estimate_cache_rate_spin.editingFinished.connect(self.auto_save)
|
|
||||||
|
|
||||||
def disconnect_auto_save(self):
|
def disconnect_auto_save(self):
|
||||||
"""Disconnect all widgets from auto-save."""
|
"""Disconnect all widgets from auto-save."""
|
||||||
|
|
@ -732,7 +712,6 @@ class ConfigTab(QWidget):
|
||||||
self.note_width_spin.editingFinished.disconnect(self.auto_save)
|
self.note_width_spin.editingFinished.disconnect(self.auto_save)
|
||||||
self.input_cost_spin.editingFinished.disconnect(self.auto_save)
|
self.input_cost_spin.editingFinished.disconnect(self.auto_save)
|
||||||
self.output_cost_spin.editingFinished.disconnect(self.auto_save)
|
self.output_cost_spin.editingFinished.disconnect(self.auto_save)
|
||||||
self.estimate_cache_rate_spin.editingFinished.disconnect(self.auto_save)
|
|
||||||
except (TypeError, RuntimeError):
|
except (TypeError, RuntimeError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
@ -770,7 +749,6 @@ class ConfigTab(QWidget):
|
||||||
"noteWidth": str(self.note_width_spin.value()),
|
"noteWidth": str(self.note_width_spin.value()),
|
||||||
"input_cost": str(self.input_cost_spin.value()),
|
"input_cost": str(self.input_cost_spin.value()),
|
||||||
"output_cost": str(self.output_cost_spin.value()),
|
"output_cost": str(self.output_cost_spin.value()),
|
||||||
"ESTIMATE_CACHE_RATE": str(self.estimate_cache_rate_spin.value()),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Save to .env file and update os.environ so subprocesses inherit new values
|
# Save to .env file and update os.environ so subprocesses inherit new values
|
||||||
|
|
@ -838,7 +816,6 @@ class ConfigTab(QWidget):
|
||||||
# Custom API settings
|
# Custom API settings
|
||||||
self.input_cost_spin.setValue(2.0)
|
self.input_cost_spin.setValue(2.0)
|
||||||
self.output_cost_spin.setValue(8.0)
|
self.output_cost_spin.setValue(8.0)
|
||||||
self.estimate_cache_rate_spin.setValue(0.9)
|
|
||||||
|
|
||||||
# Reset engine tabs
|
# Reset engine tabs
|
||||||
self.mvmz_tab.reset_to_defaults()
|
self.mvmz_tab.reset_to_defaults()
|
||||||
|
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
import json
|
|
||||||
|
|
||||||
a = json.load(open('log/ant_request_1.json', 'r', encoding='utf-8'))
|
|
||||||
b = json.load(open('log/ant_request_2.json', 'r', encoding='utf-8'))
|
|
||||||
c = json.load(open('log/ant_request_3.json', 'r', encoding='utf-8'))
|
|
||||||
|
|
||||||
print("=== Request 1 vs 2 ===")
|
|
||||||
print(f"system identical: {a['system'] == b['system']}")
|
|
||||||
print(f"messages identical: {a['messages'] == b['messages']}")
|
|
||||||
print(f"output_config identical: {a.get('output_config') == b.get('output_config')}")
|
|
||||||
print(f"model identical: {a['model'] == b['model']}")
|
|
||||||
print(f"max_tokens identical: {a['max_tokens'] == b['max_tokens']}")
|
|
||||||
print(f"temperature identical: {a['temperature'] == b['temperature']}")
|
|
||||||
|
|
||||||
# Check all top-level keys
|
|
||||||
all_keys = set(a.keys()) | set(b.keys())
|
|
||||||
for k in sorted(all_keys):
|
|
||||||
if a.get(k) != b.get(k):
|
|
||||||
print(f" DIFFERS: {k}")
|
|
||||||
if k == 'messages':
|
|
||||||
print(f" req1: {json.dumps(a[k], ensure_ascii=False)[:200]}")
|
|
||||||
print(f" req2: {json.dumps(b[k], ensure_ascii=False)[:200]}")
|
|
||||||
|
|
||||||
print("\n=== Request 1 vs 3 ===")
|
|
||||||
print(f"system identical: {a['system'] == c['system']}")
|
|
||||||
print(f"messages identical: {a['messages'] == c['messages']}")
|
|
||||||
print(f"output_config identical: {a.get('output_config') == c.get('output_config')}")
|
|
||||||
|
|
||||||
all_keys = set(a.keys()) | set(c.keys())
|
|
||||||
for k in sorted(all_keys):
|
|
||||||
if a.get(k) != c.get(k):
|
|
||||||
print(f" DIFFERS: {k}")
|
|
||||||
if k == 'output_config':
|
|
||||||
print(f" req1: {json.dumps(a.get(k), ensure_ascii=False)[:300]}")
|
|
||||||
print(f" req3: {json.dumps(c.get(k), ensure_ascii=False)[:300]}")
|
|
||||||
|
|
@ -1,165 +0,0 @@
|
||||||
Here are some vocabulary and terms so that you know the proper spelling and translation.
|
|
||||||
|
|
||||||
# Game Characters
|
|
||||||
シルシェ (Silshe) - Female
|
|
||||||
リノ (Rino) - Female
|
|
||||||
ボロゲス (Boroges) - Male
|
|
||||||
|
|
||||||
# Lewd Terms
|
|
||||||
マンコ (pussy)
|
|
||||||
おまんこ (vagina)
|
|
||||||
尻 (ass)
|
|
||||||
お尻 (butt)
|
|
||||||
お股 (crotch)
|
|
||||||
秘部 (genitals)
|
|
||||||
チンポ (dick)
|
|
||||||
チンコ (cock)
|
|
||||||
ショーツ (panties)
|
|
||||||
イラマチオ (irrumatio)
|
|
||||||
理性 (Sanity)
|
|
||||||
性欲 (Libido)
|
|
||||||
子宮の状態 (Womb St.)
|
|
||||||
最後の相手 (Last Partner)
|
|
||||||
陰茎の長さ (Penis Length)
|
|
||||||
射精量 (Cum Amount)
|
|
||||||
絶頂回数 (Orgasms)
|
|
||||||
搾精回数 (Ejaculations)
|
|
||||||
経験人数 (Partners)
|
|
||||||
膣内射精 (Creampie)
|
|
||||||
膣外射精 (Non-Creampie)
|
|
||||||
アナル (Anal)
|
|
||||||
パイズリ (Titjob)
|
|
||||||
フェラ (Blowjob)
|
|
||||||
手コキ (Handjob)
|
|
||||||
太もも (Thighs)
|
|
||||||
素股 (Thighjob)
|
|
||||||
尻コキ (Assjob)
|
|
||||||
ぶっかけ (Cumshot)
|
|
||||||
受精 (Fertilized)
|
|
||||||
出産 (Childbirth)
|
|
||||||
子宮 (Womb)
|
|
||||||
乳揉まれ (Fondled)
|
|
||||||
尻揉まれ (Ass Groped)
|
|
||||||
乳首 (Nipples)
|
|
||||||
キス (Kiss)
|
|
||||||
衣装ごとの性行為回数 (Sex Acts per Outfit)
|
|
||||||
回 (x)
|
|
||||||
人 (x)
|
|
||||||
|
|
||||||
# Honorifics
|
|
||||||
さん (san)
|
|
||||||
様, さま (sama)
|
|
||||||
君, くん (kun)
|
|
||||||
ちゃん (chan)
|
|
||||||
たん (tan)
|
|
||||||
先輩 (senpai)
|
|
||||||
せんぱい (senpai)
|
|
||||||
先生 (sensei)
|
|
||||||
せんせい (sensei)
|
|
||||||
にいさん (nii-san)
|
|
||||||
兄さん (nii-san)
|
|
||||||
兄者 (elder brother)
|
|
||||||
お兄ちゃん (onii-san)
|
|
||||||
姉さん (nee-san)
|
|
||||||
お姉ちゃん (onee-chan)
|
|
||||||
お姉ちゃん (onee-chan)
|
|
||||||
ねえさん (nee-san)
|
|
||||||
おじさん (old man)
|
|
||||||
|
|
||||||
# Terms
|
|
||||||
初めから (Start)
|
|
||||||
逃げる (Escape)
|
|
||||||
大事なもの (Key Items)
|
|
||||||
最強装備 (Optimize)
|
|
||||||
攻撃力 (Attack)
|
|
||||||
回避率 (Evasion)
|
|
||||||
敏捷性 (Agility)
|
|
||||||
命中率 (Accuracy)
|
|
||||||
最大HP (Max HP)
|
|
||||||
経験値 (EXP)
|
|
||||||
購入する (Buy)
|
|
||||||
魔力攻撃 (M. Attack)
|
|
||||||
魔力防御 (M. Defense)
|
|
||||||
魔法力 (M. Power)
|
|
||||||
%1 の%2を獲得! (Gained %1 %2)
|
|
||||||
持っている数 (Owned)
|
|
||||||
ME 音量 (ME Volume)
|
|
||||||
回想する (Recollection)
|
|
||||||
信仰心 (Faith)
|
|
||||||
会話 (Conversation)
|
|
||||||
収集 (Collect)
|
|
||||||
討伐 (Extermination)
|
|
||||||
破滅 (Destruction)
|
|
||||||
魂 (Soul)
|
|
||||||
魄 (Spirit)
|
|
||||||
巫女 (Shrine Maiden)
|
|
||||||
刀 (Blade)
|
|
||||||
剣 (Sword)
|
|
||||||
龍神神社 (Dragon God Shrine)
|
|
||||||
忍び (Shinobi)
|
|
||||||
大魔導士 (Archmage)
|
|
||||||
始原竜 (Primordial Dragon)
|
|
||||||
猿王 (Monkey King)
|
|
||||||
天地開闢 (Genesis)
|
|
||||||
紅蓮 (Vermilion)
|
|
||||||
12月 (December)
|
|
||||||
12日 (12th)
|
|
||||||
邪気 (Miasma)
|
|
||||||
|
|
||||||
# Demons/Angels/Monsters
|
|
||||||
聖女 (Saintess)
|
|
||||||
悪魔 (Demon)
|
|
||||||
上級悪魔 (Arch Demon)
|
|
||||||
歪魔 (Distorted Demon)
|
|
||||||
魔神 (Devil)
|
|
||||||
魔人 (Demon)
|
|
||||||
睡魔 (Mare)
|
|
||||||
淫魔 (Succubus)
|
|
||||||
夢魔 (Succubus)
|
|
||||||
天使 (Angel)
|
|
||||||
大天使 (Archangel)
|
|
||||||
権天使 (Principality)
|
|
||||||
能天使 (Power)
|
|
||||||
力天使 (Virtue)
|
|
||||||
主天使 (Dominion)
|
|
||||||
智天使 (Cherub)
|
|
||||||
飛天魔 (Nephilim)
|
|
||||||
堕天使 (Fallen Angel)
|
|
||||||
鬼 (Oni)
|
|
||||||
魔 (Demon)
|
|
||||||
妖怪 (Yokai)
|
|
||||||
式神 (Shikigami)
|
|
||||||
幽霊 (Ghost)
|
|
||||||
幽鬼 (Revenant)
|
|
||||||
デーモン (Daemon)
|
|
||||||
ローパー (Roper)
|
|
||||||
人間 (Human)
|
|
||||||
人型 (Humanoid)
|
|
||||||
獣型 (Beast)
|
|
||||||
触手型 (Tentacle)
|
|
||||||
軟体型 (Slime)
|
|
||||||
虫型 (Insect)
|
|
||||||
エルフ (Elf)
|
|
||||||
竜 (Dragon)
|
|
||||||
吸血鬼 (Vampire)
|
|
||||||
ドワーフ (Dwarf)
|
|
||||||
|
|
||||||
# Elements
|
|
||||||
物理 (Physical)
|
|
||||||
吸収 (Absorption)
|
|
||||||
火 (Fire)
|
|
||||||
氷 (Ice)
|
|
||||||
雷 (Thunder)
|
|
||||||
水 (Water)
|
|
||||||
地 (Earth)
|
|
||||||
風 (Wind)
|
|
||||||
神聖 (Holy)
|
|
||||||
暗黒 (Dark)
|
|
||||||
木 (Wood)
|
|
||||||
人間 (Human)
|
|
||||||
|
|
||||||
# Other
|
|
||||||
w (lol)
|
|
||||||
2万 (20,000)
|
|
||||||
『 (『)
|
|
||||||
』 (』)
|
|
||||||
87
vocab_base.txt
Normal file
87
vocab_base.txt
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
# Honorifics
|
||||||
|
さん (san)
|
||||||
|
様, さま (sama)
|
||||||
|
君, くん (kun)
|
||||||
|
ちゃん (chan)
|
||||||
|
たん (tan)
|
||||||
|
先輩 (senpai)
|
||||||
|
せんぱい (senpai)
|
||||||
|
先生 (sensei)
|
||||||
|
せんせい (sensei)
|
||||||
|
にいさん (nii-san)
|
||||||
|
兄さん (nii-san)
|
||||||
|
兄者 (elder brother)
|
||||||
|
お兄ちゃん (onii-san)
|
||||||
|
姉さん (nee-san)
|
||||||
|
お姉ちゃん (onee-chan)
|
||||||
|
ねえさん (nee-san)
|
||||||
|
おじさん (old man)
|
||||||
|
|
||||||
|
# Terms
|
||||||
|
初めから (Start)
|
||||||
|
逃げる (Escape)
|
||||||
|
大事なもの (Key Items)
|
||||||
|
最強装備 (Optimize)
|
||||||
|
攻撃力 (Attack)
|
||||||
|
回避率 (Evasion)
|
||||||
|
敏捷性 (Agility)
|
||||||
|
命中率 (Accuracy)
|
||||||
|
最大HP (Max HP)
|
||||||
|
経験値 (EXP)
|
||||||
|
購入する (Buy)
|
||||||
|
魔力攻撃 (M. Attack)
|
||||||
|
魔力防御 (M. Defense)
|
||||||
|
魔法力 (M. Power)
|
||||||
|
%1 の%2を獲得! (Gained %1 %2)
|
||||||
|
持っている数 (Owned)
|
||||||
|
ME 音量 (ME Volume)
|
||||||
|
|
||||||
|
# Demons/Angels/Monsters
|
||||||
|
聖女 (Saintess)
|
||||||
|
悪魔 (Demon)
|
||||||
|
上級悪魔 (Arch Demon)
|
||||||
|
歪魔 (Distorted Demon)
|
||||||
|
魔神 (Devil)
|
||||||
|
魔人 (Demon)
|
||||||
|
睡魔 (Mare)
|
||||||
|
淫魔 (Succubus)
|
||||||
|
夢魔 (Succubus)
|
||||||
|
天使 (Angel)
|
||||||
|
大天使 (Archangel)
|
||||||
|
権天使 (Principality)
|
||||||
|
能天使 (Power)
|
||||||
|
力天使 (Virtue)
|
||||||
|
主天使 (Dominion)
|
||||||
|
智天使 (Cherub)
|
||||||
|
飛天魔 (Nephilim)
|
||||||
|
堕天使 (Fallen Angel)
|
||||||
|
鬼 (Oni)
|
||||||
|
妖怪 (Yokai)
|
||||||
|
式神 (Shikigami)
|
||||||
|
幽霊 (Ghost)
|
||||||
|
幽鬼 (Revenant)
|
||||||
|
デーモン (Daemon)
|
||||||
|
ローパー (Roper)
|
||||||
|
人間 (Human)
|
||||||
|
人型 (Humanoid)
|
||||||
|
獣型 (Beast)
|
||||||
|
触手型 (Tentacle)
|
||||||
|
軟体型 (Slime)
|
||||||
|
虫型 (Insect)
|
||||||
|
エルフ (Elf)
|
||||||
|
竜 (Dragon)
|
||||||
|
吸血鬼 (Vampire)
|
||||||
|
ドワーフ (Dwarf)
|
||||||
|
|
||||||
|
# Elements
|
||||||
|
物理 (Physical)
|
||||||
|
吸収 (Absorption)
|
||||||
|
火 (Fire)
|
||||||
|
氷 (Ice)
|
||||||
|
雷 (Thunder)
|
||||||
|
水 (Water)
|
||||||
|
地 (Earth)
|
||||||
|
風 (Wind)
|
||||||
|
神聖 (Holy)
|
||||||
|
暗黒 (Dark)
|
||||||
|
木 (Wood)
|
||||||
Loading…
Reference in a new issue