Webhook listener that monitors Gitea repos for BLIGHT: triggers in markdown files, processes them via Gemini 2.5 Flash-Lite, and writes results back in-place. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
30 lines
1.1 KiB
Python
30 lines
1.1 KiB
Python
import google.generativeai as genai
|
|
import config
|
|
from .base import AIProvider
|
|
|
|
_SYSTEM_PROMPT = (
|
|
"You are an inline document assistant. "
|
|
"The user will provide a markdown document and a specific instruction. "
|
|
"Your response must contain ONLY the text to be inserted into the document — "
|
|
"no preamble, no explanation, no meta-commentary, no markdown code fences unless "
|
|
"the instruction specifically asks for them. "
|
|
"Respond as if your output will be dropped directly into the middle of a document."
|
|
)
|
|
|
|
|
|
class GeminiProvider(AIProvider):
|
|
def __init__(self) -> None:
|
|
genai.configure(api_key=config.GEMINI_API_KEY)
|
|
self._model = genai.GenerativeModel(
|
|
model_name="gemini-2.5-flash-lite",
|
|
system_instruction=_SYSTEM_PROMPT,
|
|
)
|
|
|
|
def complete(self, document: str, instruction: str) -> str:
|
|
prompt = (
|
|
f"DOCUMENT:\n\n{document}\n\n"
|
|
f"INSTRUCTION: {instruction}"
|
|
)
|
|
response = self._model.generate_content(prompt)
|
|
return response.text.strip()
|