Provide Gemini with the list of IDs in correction request
This commit is contained in:
1 parent
f978310c4c
commit
2d0f7a219f
9 files changed
+242
-9
No files matched your search
+17
-3
@@ -1,6 +1,8 @@
|
||||
from pathlib import Path
|
||||
import io
|
||||
import json
|
||||
from . import utils
|
||||
from . import read_json
|
||||
from . import configuration as settings
|
||||
from .gemini_config import thinking_config
|
||||
|
||||
@@ -103,7 +105,7 @@ sur les autres questions."""
|
||||
|
||||
from .utils import get_label_text_content, get_label_sol_content, get_label_persp_content
|
||||
|
||||
def make_prompt(input_dir,full_label):
|
||||
def make_prompt(input_dir,full_label, *, expected_ids=None):
|
||||
text = get_label_text_content(input_dir, full_label) or ""
|
||||
corr = get_label_sol_content(input_dir, full_label) or ""
|
||||
persp = get_label_persp_content(input_dir, full_label) or ""
|
||||
@@ -117,7 +119,18 @@ def make_prompt(input_dir,full_label):
|
||||
+ persp
|
||||
+ "\n```\n"
|
||||
)
|
||||
return main_prompt.replace("<<text>>", text).replace("<<corr>>", corr).replace("<<persp>>", persp).replace("<<label>>", full_label)
|
||||
prompt = main_prompt.replace("<<text>>", text).replace("<<corr>>", corr).replace("<<persp>>", persp).replace("<<label>>", full_label)
|
||||
if expected_ids is not None:
|
||||
prompt += (
|
||||
"\n\nIdentifiants exacts présents dans cette image, de haut en bas : "
|
||||
+ json.dumps(list(expected_ids), ensure_ascii=False)
|
||||
+ ".\nRenvoie exactement un résultat par identifiant de cette liste, "
|
||||
"sans omission, doublon ni identifiant supplémentaire. Conserve les zéros initiaux. "
|
||||
"Utilise uniquement les en-têtes imprimés « ID: … » pour identifier les réponses ; "
|
||||
"ignore les numéros manuscrits. Tout le contenu jusqu’au prochain en-tête "
|
||||
"imprimé appartient au même identifiant, même s’il contient plusieurs feuilles."
|
||||
)
|
||||
return prompt
|
||||
|
||||
|
||||
from pydantic import BaseModel, Field, TypeAdapter
|
||||
@@ -190,8 +203,9 @@ def batch_generation_config(thinking_level):
|
||||
# The root model for parsing is be: List[EvaluationEntry]
|
||||
def generate_request(input_dir, file, full_label, *, thinking_level=settings.THINKING_LEVEL_PRO):
|
||||
"""Generates request for Gemini."""
|
||||
prompt = make_prompt(input_dir, full_label)
|
||||
image_path = Path(file)
|
||||
group_data = read_json(image_path.with_suffix(".json"))
|
||||
prompt = make_prompt(input_dir, full_label, expected_ids=[row[0] for row in group_data])
|
||||
|
||||
contents = [
|
||||
types.Content(
|
||||
|
||||
Reference in new issue
Block a user