Initial SQL-only 1C adapter baseline
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
DEFAULT_INDEX = ROOT / "plugins" / "1c" / "datasets" / "prepared" / "rag_index.json"
|
||||
|
||||
REQUIRED_PHRASES = [
|
||||
"Не выдумывай метаданные 1С",
|
||||
"запроси метаданные через инструмент",
|
||||
"источники",
|
||||
"Какие реквизиты есть у справочника Номенклатура?",
|
||||
]
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = argparse.ArgumentParser(description="Check that the 1C RAG prompt contains safety-critical instructions.")
|
||||
parser.add_argument("--index", type=Path, default=DEFAULT_INDEX)
|
||||
args = parser.parse_args()
|
||||
|
||||
command = [
|
||||
sys.executable,
|
||||
"scripts/ask_1c_rag.py",
|
||||
"Какие реквизиты есть у справочника Номенклатура?",
|
||||
"--index",
|
||||
str(args.index),
|
||||
"--print-prompt",
|
||||
]
|
||||
result = subprocess.run(
|
||||
command,
|
||||
cwd=ROOT,
|
||||
check=False,
|
||||
text=True,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
)
|
||||
if result.returncode != 0:
|
||||
print(result.stderr, file=sys.stderr)
|
||||
return result.returncode
|
||||
|
||||
missing = [phrase for phrase in REQUIRED_PHRASES if phrase not in result.stdout]
|
||||
if missing:
|
||||
print("1C RAG prompt check failed. Missing phrases:", file=sys.stderr)
|
||||
for phrase in missing:
|
||||
print(f"- {phrase}", file=sys.stderr)
|
||||
return 1
|
||||
|
||||
print("1C RAG prompt check passed.")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user