Add admin AI models panel (list, test, select Mistral models)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
defc07648c
commit
13677b3ce3
4 files changed
+162
-5
No files matched your search
@@ -11,6 +11,7 @@ import logging
|
||||
from openai import OpenAI, BadRequestError
|
||||
from legal_framework import LEGAL_FILTER_PROMPT, SYNTHESIS_PROMPT, LAW_CHECK_PROMPT, build_filter_prompt
|
||||
from legifrance_client import get_legifrance_client
|
||||
from database import get_setting
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -36,6 +37,16 @@ def _get_live_legal_texts() -> dict[str, str]:
|
||||
return {}
|
||||
|
||||
|
||||
def get_model(kind: str) -> str:
|
||||
"""kind = "filter" | "synthesis". Priorité : réglage admin (DB) > env > défaut."""
|
||||
default = "mistral-small-latest" if kind == "filter" else "mistral-large-latest"
|
||||
try:
|
||||
saved = get_setting(f"{kind}_model")
|
||||
except Exception:
|
||||
saved = None
|
||||
return saved or os.environ.get(f"{kind.upper()}_MODEL", os.environ.get(f"OPENAI_{kind.upper()}_MODEL", default))
|
||||
|
||||
|
||||
def get_client() -> OpenAI:
|
||||
"""
|
||||
Supporte deux modes (par ordre de priorité) :
|
||||
@@ -75,7 +86,7 @@ def filter_idea(content: str) -> dict:
|
||||
"""
|
||||
try:
|
||||
client = get_client()
|
||||
filter_model = os.environ.get("FILTER_MODEL", os.environ.get("OPENAI_FILTER_MODEL", "mistral-small-latest"))
|
||||
filter_model = get_model("filter")
|
||||
live_texts = _get_live_legal_texts()
|
||||
system_prompt = build_filter_prompt(live_texts)
|
||||
if live_texts:
|
||||
@@ -137,7 +148,7 @@ def check_existing_law(content: str) -> str:
|
||||
"""
|
||||
try:
|
||||
client = get_client()
|
||||
model = os.environ.get("FILTER_MODEL", os.environ.get("OPENAI_FILTER_MODEL", "mistral-small-latest"))
|
||||
model = get_model("filter")
|
||||
response = client.chat.completions.create(
|
||||
model=model,
|
||||
max_tokens=200,
|
||||
@@ -165,7 +176,7 @@ def synthesize_ideas(ideas: list[str]) -> str:
|
||||
)
|
||||
try:
|
||||
client = get_client()
|
||||
synthesis_model = os.environ.get("SYNTHESIS_MODEL", os.environ.get("OPENAI_SYNTHESIS_MODEL", "mistral-large-latest"))
|
||||
synthesis_model = get_model("synthesis")
|
||||
ideas_text = "\n".join(f"{i + 1}. {idea}" for i, idea in enumerate(ideas))
|
||||
response = client.chat.completions.create(
|
||||
model=synthesis_model,
|
||||
|
||||
Reference in new issue
Block a user