Files
timmy-home/scripts/hermes_gemma4_ollama_repl.py

85 lines
2.2 KiB
Python
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
import os
import sys
from io import StringIO
from contextlib import redirect_stdout, redirect_stderr
HERMES_ROOT = os.path.expanduser('/Users/apayne/.hermes/hermes-agent')
sys.path.insert(0, HERMES_ROOT)
os.chdir(HERMES_ROOT)
from cli import main as hermes_main
session_id = None
print('Hermes -> Gemma4 via local Ollama')
print('Model: gemma4:latest')
print('Base URL: http://localhost:11434/v1')
print('Commands: /exit to quit, /session to print current session id')
print()
while True:
try:
user = input('gemma4-hermes ').strip()
except (EOFError, KeyboardInterrupt):
print('\nExiting.')
break
if not user:
continue
if user in {'/exit', '/quit'}:
print('Goodbye.')
break
if user == '/session':
print(session_id or '(no session yet)')
continue
out = StringIO()
err = StringIO()
exit_code = 0
with redirect_stdout(out), redirect_stderr(err):
try:
hermes_main(
query=user,
model='gemma4:latest',
provider='ollama',
base_url='http://localhost:11434/v1',
api_key='ollama',
quiet=True,
toolsets='none',
max_turns=8,
pass_session_id=True,
resume=session_id,
)
except SystemExit as e:
exit_code = 0 if e.code is None else int(e.code)
except Exception as e:
print(f'ERROR: {type(e).__name__}: {e}')
exit_code = 1
raw = out.getvalue().splitlines()
new_session = None
cleaned = []
for line in raw:
if line.startswith('session_id:'):
new_session = line.split(':', 1)[1].strip()
continue
if line.startswith('Warning: Unknown toolsets:'):
continue
if line.startswith('__EXIT__='):
continue
cleaned.append(line)
if new_session:
session_id = new_session
text = '\n'.join(cleaned).strip()
if text:
print(text)
else:
print(f'(no response text captured; exit={exit_code})')
if exit_code != 0:
print(f'[nonzero exit: {exit_code}]')
print()