55 lines
1.4 KiB
Python
55 lines
1.4 KiB
Python
from pydantic_ai import BinaryImage
|
|
from quickmachotkey import mask, quickHotKey
|
|
from quickmachotkey.constants import (
|
|
cmdKey,
|
|
controlKey,
|
|
kVK_ANSI_A,
|
|
kVK_ANSI_H,
|
|
optionKey,
|
|
shiftKey,
|
|
)
|
|
from rumps import Timer
|
|
|
|
from app.modules.ai import AgentAnswer, agent, model_high, model_low
|
|
from app.modules.screenshot import take_screenshot
|
|
from app.ui.items import display_text
|
|
from app.ui.status import update_statusbar
|
|
|
|
timer = Timer(None, 0)
|
|
|
|
|
|
def process_task(model):
|
|
timer.stop()
|
|
import app.ui.handlers as handlers
|
|
|
|
response = agent.run_sync(
|
|
[BinaryImage(take_screenshot(), media_type="image/png")], model=model
|
|
)
|
|
output: AgentAnswer = response.output
|
|
|
|
handlers.long_answer = "\n".join(output.long_answer or [])
|
|
handlers.solution_thinking = output.solution_thinking
|
|
|
|
display_text(output.long_answer)
|
|
update_statusbar(output.answer_variant or "?")
|
|
|
|
|
|
@quickHotKey(
|
|
virtualKey=kVK_ANSI_A,
|
|
modifierMask=mask(cmdKey, controlKey, optionKey, shiftKey),
|
|
)
|
|
def low_handler() -> None:
|
|
update_statusbar("...")
|
|
timer.set_callback(lambda _: process_task(model_low))
|
|
timer.start()
|
|
|
|
|
|
@quickHotKey(
|
|
virtualKey=kVK_ANSI_H,
|
|
modifierMask=mask(cmdKey, controlKey, optionKey, shiftKey),
|
|
)
|
|
def high_handler() -> None:
|
|
update_statusbar("...")
|
|
timer.set_callback(lambda _: process_task(model_high))
|
|
timer.start()
|