v1.0.178: P0 — улучшены промпты classify и diff. Classify: блок НУБЕС=Исполнитель, parent_number=null для contract, примеры doc_type=other, 3 few-shot примера. Diff: UNRESOLVED вместо ADD при сомнении.
This commit is contained in:
+38
-10
@@ -102,7 +102,7 @@ FALLBACK_DIFF = """Ты — анализатор допсоглашений (Д
|
|||||||
7. Если в тексте есть и фраза о новой редакции, и точечные правки — приоритет за «новой редакцией»: full_replace.
|
7. Если в тексте есть и фраза о новой редакции, и точечные правки — приоритет за «новой редакцией»: full_replace.
|
||||||
|
|
||||||
EDGE-CASES:
|
EDGE-CASES:
|
||||||
8. UNRESOLVED — если ДС упоминает изменение услуги, которой НЕТ в текущей спецификации, ИЛИ название настолько отличается, что нельзя уверенно сопоставить с конкретным id. В reason укажи причину.
|
8. UNRESOLVED — если ДС упоминает изменение услуги, которой НЕТ в текущей спецификации, ИЛИ название настолько отличается, что нельзя уверенно сопоставить с конкретным id. ВАЖНО: если СОМНЕВАЕШЬСЯ в сопоставлении — делай UNRESOLVED, а НЕ ADD. Лучше unresolved, чем ложный дубликат. В reason укажи причину.
|
||||||
9. Частичные данные: если в ДС нет цены/кол-ва/даты — ставь null для этих полей, не выдумывай.
|
9. Частичные данные: если в ДС нет цены/кол-ва/даты — ставь null для этих полей, не выдумывай.
|
||||||
10. Пропускай итоговые строки («Итого», «НДС», «К оплате») и подписи/реквизиты.
|
10. Пропускай итоговые строки («Итого», «НДС», «К оплате») и подписи/реквизиты.
|
||||||
11. price, qty, sum — ЧИСЛА (без «руб.», без пробелов; «55 000,00» \u2192 55000). Не пересчитывай суммы сам — бери из ДС.
|
11. price, qty, sum — ЧИСЛА (без «руб.», без пробелов; «55 000,00» \u2192 55000). Не пересчитывай суммы сам — бери из ДС.
|
||||||
@@ -242,17 +242,45 @@ def build_classify_prompt(header_text):
|
|||||||
body = prompt["body"].replace("{header_text}", header_text)
|
body = prompt["body"].replace("{header_text}", header_text)
|
||||||
return body, prompt.get("id", "")
|
return body, prompt.get("id", "")
|
||||||
# Fallback
|
# Fallback
|
||||||
body = """Ты — классификатор договорных документов. Ниже фрагмент текста документа.
|
body = """Ты — классификатор договорных документов облачного провайдера НУБЕС.
|
||||||
|
|
||||||
Определи:
|
Ниже фрагмент текста документа. Определи:
|
||||||
1. doc_type: "contract", "supplement", "specification", "other"
|
|
||||||
2. own_number: номер ЭТОГО документа
|
|
||||||
3. parent_number: номер родительского договора (для допников/спецификаций)
|
|
||||||
4. doc_date: дата в формате YYYY-MM-DD
|
|
||||||
5. counterparty: название контрагента
|
|
||||||
6. confidence: "ok" или "low"
|
|
||||||
|
|
||||||
Верни СТРОГО JSON: {"doc_type":"...","own_number":"...","parent_number":"...","doc_date":"...","counterparty":"...","confidence":"..."}
|
1. doc_type:
|
||||||
|
- "contract" — договор (заголовок «Договор», «Соглашение», преамбула с условиями)
|
||||||
|
- "supplement" — допсоглашение (ссылается на родительский договор, меняет условия)
|
||||||
|
- "specification" — спецификация / приложение с таблицей услуг (стойко-места, IP, каналы, питание)
|
||||||
|
- "other" — НЕ договорной документ: акт сверки, счёт, счёт-фактура, УПД, акт оказанных услуг, платёжное поручение, доверенность, письмо
|
||||||
|
|
||||||
|
2. own_number — номер ЭТОГО документа (например «XXX001-03700», «МЭС-123/2024», «1» для допника).
|
||||||
|
Если номер не указан — null.
|
||||||
|
|
||||||
|
3. parent_number — номер родительского договора (для supplement и specification).
|
||||||
|
Для doc_type="contract": ВСЕГДА null.
|
||||||
|
|
||||||
|
4. doc_date — дата документа в формате YYYY-MM-DD. Если дата прописью — переведи в цифры.
|
||||||
|
Если нет даты — null.
|
||||||
|
|
||||||
|
5. counterparty — название КОНТРАГЕНТА (Заказчика).
|
||||||
|
ВАЖНО: НУБЕС — всегда Исполнитель. НЕ возвращай НУБЕС как counterparty.
|
||||||
|
НУБЕС известен как: «НУБЕС», «ООО НУБЕС», «ООО "НУБЕС"», «Nubes».
|
||||||
|
counterparty — ВСЕГДА другая сторона (Заказчик/Покупатель/Абонент).
|
||||||
|
Если документ не содержит контрагента — null.
|
||||||
|
|
||||||
|
Верни СТРОГО JSON без пояснений:
|
||||||
|
{"doc_type":"...","own_number":"...","parent_number":"...","doc_date":"...","counterparty":"..."}
|
||||||
|
|
||||||
|
ПРИМЕР 1 (договор):
|
||||||
|
Текст: «Договор № XXX001-03700 от 15.03.2025. ООО "НУБЕС" (Исполнитель) и ЗАО "ТехноПлюс" (Заказчик)...»
|
||||||
|
Ответ: {"doc_type":"contract","own_number":"XXX001-03700","parent_number":null,"doc_date":"2025-03-15","counterparty":"ЗАО \"ТехноПлюс\""}
|
||||||
|
|
||||||
|
ПРИМЕР 2 (допсоглашение):
|
||||||
|
Текст: «Допсоглашение №1 к Договору № XXX003-01300 от 05.06.2024...»
|
||||||
|
Ответ: {"doc_type":"supplement","own_number":"1","parent_number":"XXX003-01300","doc_date":"2024-06-05","counterparty":"АО XXX003"}
|
||||||
|
|
||||||
|
ПРИМЕР 3 (мусор):
|
||||||
|
Текст: «Акт сверки взаимных расчётов за 1 квартал 2025 г. Стороны: НУБЕС и ООО Ромашка. Сальдо 150 000 руб.»
|
||||||
|
Ответ: {"doc_type":"other","own_number":null,"parent_number":null,"doc_date":"2025-03-31","counterparty":"ООО Ромашка"}
|
||||||
|
|
||||||
ДОКУМЕНТ:
|
ДОКУМЕНТ:
|
||||||
---
|
---
|
||||||
|
|||||||
Reference in New Issue
Block a user