aboutsummaryrefslogtreecommitdiff
path: root/supergenerator.py
diff options
context:
space:
mode:
authorhuker667 <huker@tuta.io>2026-07-05 17:06:11 +0300
committerhuker667 <huker@tuta.io>2026-07-05 17:06:11 +0300
commit92a83cf8105daae12a8e5442d48003d40490e52e (patch)
tree3d58c887bed2705e57b7b83d2952175b10b077e8 /supergenerator.py
parent4c8e21fd4287c3e26ca470c520d9d234ef2da450 (diff)
downloaduzbekgpt-92a83cf8105daae12a8e5442d48003d40490e52e.tar.gz
uzbekgpt-92a83cf8105daae12a8e5442d48003d40490e52e.tar.bz2
uzbekgpt-92a83cf8105daae12a8e5442d48003d40490e52e.zip
big dik update: prompts and notify mode
Diffstat (limited to 'supergenerator.py')
-rw-r--r--supergenerator.py43
1 files changed, 33 insertions, 10 deletions
diff --git a/supergenerator.py b/supergenerator.py
index bb3efca..e21900b 100644
--- a/supergenerator.py
+++ b/supergenerator.py
@@ -113,15 +113,17 @@ def remove_think_tags(text):
return result
-def get_all_users():
+def get_all_users(only_notify=False):
with shelve.open("users") as db:
- return {k: db[k] for k in db.keys()}
+ return {k: db[k] for k in db.keys() if not only_notify or db[k].get("notify") == "da"}
-def get_all_user_ids():
+def get_all_user_ids(only_notify=False):
ids = []
with shelve.open("users") as db:
for user_id in db.keys():
+ if only_notify and db[user_id].get("notify") != "da":
+ continue
try:
ids.append(int(user_id))
except ValueError:
@@ -129,14 +131,22 @@ def get_all_user_ids():
return ids
+
def set_user_config(
- user_id, model_name, stream_mode=DEFAULT_STREAM, call_mode=DEFAULT_CALL
+ user_id,
+ model_name,
+ stream_mode=DEFAULT_STREAM,
+ call_mode=DEFAULT_CALL,
+ prompt_name=DEFAULT_PROMPT,
+ notify_mode=DEFAULT_NOTIFY,
):
with shelve.open("users") as db:
db[str(user_id)] = {
"model": model_name,
"stream": stream_mode,
"call": call_mode,
+ "prompt": prompt_name,
+ "notify": notify_mode,
}
@@ -144,7 +154,9 @@ def ensure_user(
user_id,
model_name=DEFAULT_MODEL,
stream_mode=DEFAULT_STREAM,
- call_mode=DEFAULT_CALL
+ call_mode=DEFAULT_CALL,
+ prompt_name=DEFAULT_PROMPT,
+ notify_mode=DEFAULT_NOTIFY
):
with shelve.open("users") as db:
key = str(user_id)
@@ -154,13 +166,15 @@ def ensure_user(
"model": model_name,
"stream": stream_mode,
"call": call_mode,
+ "prompt": prompt_name,
+ "notify": notify_mode,
}
def get_user_config(user_id):
with shelve.open("users") as db:
return db.get(
str(user_id),
- {"model": DEFAULT_MODEL, "stream": DEFAULT_STREAM, "call": DEFAULT_CALL},
+ {"model": DEFAULT_MODEL, "stream": DEFAULT_STREAM, "call": DEFAULT_CALL, "prompt": DEFAULT_PROMPT, "notify": DEFAULT_NOTIFY},
)
@@ -177,7 +191,16 @@ async def generate(
else:
print(f"{RED} -- err model - failed to get prov&model in \"{config.get('model','')}\"{RESET}")
return "произошла ошибка при парсинге вашей выбранной модели. либо хост бота гандон либо тебе надо сменить модель в настройках!!"
+
stream_cf = config["stream"]
+ system_prompt_name = config["prompt"]
+ if system_prompt_name in SYSTEM_PROMPTS:
+ system_prompt = SYSTEM_PROMPTS[system_prompt_name]
+ else:
+ text = "❌произошла ошибка, возможные проблемы:\n" \
+ f"1. у вас выбран удалённый сист промпт (`{system_prompt_name}`)\n" \
+ f"2. конфиг бота настроен неправильно и надо связаться с тем кто его хостит"
+ return text
if stream_cf == "native" and user_id == chat_id:
stream = True
@@ -189,14 +212,14 @@ async def generate(
user_contexts[user_id].append({"role": "user", "content": prompt})
user_contexts[user_id] = user_contexts[user_id][-MAX_CONTEXT:]
- messages = [{"role": "system", "content": SYSTEM_PROMPT}] + user_contexts[
+ messages = [{"role": "system", "content": system_prompt}] + user_contexts[
user_id
]
else:
model = DEFAULT_MODEL.split("*", 2)
stream = False
stream_cf = "none"
- messages = [{"role": "system", "content": SYSTEM_PROMPT}] + [
+ messages = [{"role": "system", "content": system_prompt}] + [
{"role": "user", "content": prompt}
]
@@ -207,9 +230,9 @@ async def generate(
try:
client = providers[model[0]]
except Exception:
- text = "произошла ошибка, возможные проблемы:\n" \
+ text = "❌произошла ошибка, возможные проблемы:\n" \
"1. у вас выбрана удалённая модель или провайдер\n" \
- "2. конфиг бота настроен неправильно и надо связаться с хостом бота"
+ "2. конфиг бота настроен неправильно и надо связаться с тем кто его хостит"
return text
text = await openai_generate_text(