aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gemini.py10
-rw-r--r--main.py10
2 files changed, 16 insertions, 4 deletions
diff --git a/gemini.py b/gemini.py
index cf1ee05..9f58e65 100644
--- a/gemini.py
+++ b/gemini.py
@@ -212,8 +212,14 @@ async def geminichat(websocket):
if current_user_lines:
messages.append({"role": "user", "content": "\n".join(current_user_lines)})
- # final isolated turn — the specific message she needs to reply to
- messages.append({"role": "user", "content": f"[responding to]: {nots(user_input)}"})
+ # final isolated turn — the specific message she needs to reply to, with the speaker named
+ # so she doesn't anchor on whoever talked last in the history above
+ speaker, text = parse_line(user_input)
+ if speaker and text:
+ final_turn = f"[responding to {speaker}]: {text}\n(reply only to {speaker}, the lines before this are other people's messages for context)"
+ else:
+ final_turn = f"[responding to]: {nots(user_input)}" # couldn't parse it, old format
+ messages.append({"role": "user", "content": final_turn})
# make sure we start with a user turn (gemini rejects empty parts so no empty string here)
if messages and messages[0]["role"] != "user":
diff --git a/main.py b/main.py
index 9e8d4e1..a8a144e 100644
--- a/main.py
+++ b/main.py
@@ -172,8 +172,14 @@ async def ollamachat(websocket):
if current_user_lines:
messages.append({"role": "user", "content": "\n".join(current_user_lines)})
- # final isolated turn — the specific message she needs to reply to
- messages.append({"role": "user", "content": f"[responding to]: {nots(user_input)}"})
+ # final isolated turn — the specific message she needs to reply to, with the speaker named
+ # so she doesn't anchor on whoever talked last in the history above
+ speaker, text = parse_line(user_input)
+ if speaker and text:
+ final_turn = f"[responding to {speaker}]: {text}\n(reply only to {speaker}, the lines before this are other people's messages for context)"
+ else:
+ final_turn = f"[responding to]: {nots(user_input)}" # couldn't parse it, old format
+ messages.append({"role": "user", "content": final_turn})
# ollama only takes images (no audio/video/pdf), and only on the final turn so history stays text
images = [base64.b64decode(m["data"]) for m in media if m["mime_type"].startswith("image/")]