38 lines
894 B
Python
38 lines
894 B
Python
# gemini.py
|
|
from __future__ import annotations
|
|
import tomllib
|
|
from pathlib import Path
|
|
from typing import Any
|
|
from google import genai
|
|
from google.genai import types
|
|
|
|
_client: genai.Client | None = None
|
|
_chat: Any = None
|
|
|
|
def _load_key() -> str:
|
|
with open("credentials.toml", "rb") as f:
|
|
return tomllib.load(f)["gemini"]["api_key"]
|
|
|
|
def _ensure_client() -> None:
|
|
global _client
|
|
if _client is None:
|
|
_client = genai.Client(api_key=_load_key())
|
|
|
|
def _ensure_chat() -> None:
|
|
global _chat
|
|
if _chat is None:
|
|
_ensure_client()
|
|
_chat = _client.chats.create(model="gemini-2.0-flash")
|
|
|
|
def send(md_content: str, user_message: str) -> str:
|
|
global _chat
|
|
_ensure_chat()
|
|
full_message = f"<context>\n{md_content}\n</context>\n\n{user_message}"
|
|
response = _chat.send_message(full_message)
|
|
return response.text
|
|
|
|
def reset_session() -> None:
|
|
global _client, _chat
|
|
_client = None
|
|
_chat = None
|