aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhuker667 <huker@tuta.io>2026-08-13 18:26:46 +0300
committerhuker667 <huker@tuta.io>2026-08-13 18:26:46 +0300
commit5be8fcce19a8e9a742ae556f3730092825c4b1e4 (patch)
tree9529e9c3ef956dabe1014572f07ec5764c9303f3
parent53afac9852330e2b46a46010e269e99998b725e5 (diff)
downloaduzbekgpt-main.tar.gz
uzbekgpt-main.tar.bz2
uzbekgpt-main.zip
фикс имагеHEADmain
-rw-r--r--config_def.py3
-rw-r--r--supergenerator.py26
2 files changed, 14 insertions, 15 deletions
diff --git a/config_def.py b/config_def.py
index f64c6b5..60195be 100644
--- a/config_def.py
+++ b/config_def.py
@@ -43,7 +43,7 @@ DEFAULT_NOTIFY = "da"
DEFAULT_MARKDOWN = "old"
# модель которая умеет принимать картинки очень важно
-IMAGE_MODEL = "ollama*gemma3:27b-cloud"
+IMAGE_MODEL = "ollama*gemma4:31b-cloud"
# я забыл если честно
SHOW_ACC_MSG = True
@@ -98,7 +98,6 @@ PROVIDERS = {
# если да, то модель будет напрямую смотреть фото в messages
MODELS = {
"ollama": {
- "gemma3:27b-cloud": {"vision": False},
"gemma4:31b-cloud": {"vision": True},
},
"krutoiapi": {
diff --git a/supergenerator.py b/supergenerator.py
index fda127e..36d9929 100644
--- a/supergenerator.py
+++ b/supergenerator.py
@@ -3,8 +3,6 @@ import re
import shelve
import time
import ai
-import json
-import traceback
from configparser import DEFAULTSECT
@@ -71,7 +69,7 @@ async def generate(
if images:
if settings.get("vision"):
for image in images:
- content += [{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{image}"}}]
+ content += [{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{image['data']}"}}]
else:
for image in images:
try:
@@ -95,9 +93,13 @@ async def generate(
user_contexts[user_id].append({"role": "user", "content": content})
user_contexts[user_id] = user_contexts[user_id][-MAX_CONTEXT:]
- messages = [{"role": "system", "content": system_prompt}] + user_contexts[
- user_id
- ]
+ context = []
+ for i, m in enumerate(user_contexts[user_id]):
+ if m.get("role") == "user" and i < len(user_contexts[user_id]) - 1:
+ m = {**m, "content": [p for p in m["content"] if p.get("type") != "image_url"]}
+ context.append(m)
+
+ messages = [{"role": "system", "content": system_prompt}] + context
else:
model = DEFAULT_MODEL.split("*", 2)
settings = MODELS.get(model[0]).get(model[1])
@@ -166,22 +168,20 @@ async def image2text(image) -> str:
return ""
model = IMAGE_MODEL.split("*", 1)
api = PROVIDERS[model[0]]
- text = ""
messages = [
{
"role": "user",
"content": [
- {"type": "input_text", "text": IMAGE_PROMPT},
- {"type": "input_image", "image_url": f"data:image/jpeg;base64,{image}"},
+ {"type": "text", "text": IMAGE_PROMPT},
+ {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{image}"}},
],
}
]
- async for response in ai.responses(
- url=api["url"], api_key=api["key"], model=model[1], input=messages, stream=False
+ async for completion in ai.completions(
+ url=api["url"], api_key=api["key"], model=model[1], messages=messages, stream=False
):
pass
- text = response.output_text
- return text
+ return completion["choices"][0]["message"]["content"]
async def openai_generate_text(