Изследвания · Онтологии и бизнес правила

Правилата на компанията, записани веднъж и прилагани точно

Онтологията описва това, с което компанията работи: нейните обекти, техните атрибути, връзките им и правилата, които се прилагат към тях. Във VAILS тя не е проектен документ: тя се изпълнява. Документите се пренасят в нея, бизнес правилата се прилагат към нея и тя може да бъде запитвана или проверявана за съгласуваност по всяко време.

Как работи

Онтологията се декларира с класове, типизирани и ограничени атрибути (задължителни, граници, затворен списък от стойности, наследяване) и връзки. Тя се компилира в логически правила, в база, собствена на онтологията и на сесията.

Данните постъпват в нея по три начина: извлечени от текст или изображение от езиковия модел, воден от схемата; създадени директно от програмата; или получени от оптимизационно изчисление. Бизнес правилата се пишат с условие, действие и приоритет; изводът ги прилага, докато нищо повече не се променя. След това онтологията се запитва чрез филтри или на естествен език.

  1. Деклариране
  2. Попълване
  3. Прилагане на правилата
  4. Запитване и проверка

Примери от бизнеса

Банка: блокиране на рисковите преводи

Три правила, по ред на приоритет: висока сума или чувствителна държава правят превода рисков, а рисковият превод се блокира. Правилата са четими за отдела по съответствие.

$Banque = [ontology:define "Banque_Securite"
    [ontology:class Virement
        [attributes
            [montant Float [required true]]
            [pays_destination String [default "France"]]
            [niveau_risque String [default "FAIBLE"]]
            [statut String [default "EN_ATTENTE"]]]]]
[ontology:rule "MontantEleve" $Banque [target "Virement"] [priority 100]
    [when ($this.montant > 10000)]
    [then [ontology:set $this "niveau_risque" "ELEVE"]]]
[ontology:rule "PaysSensible" $Banque [target "Virement"] [priority 90]
    [when ($this.pays_destination == "Iles Caimans")]
    [then [ontology:set $this "niveau_risque" "ELEVE"]]]
[ontology:rule "Blocage" $Banque [target "Virement"] [priority 10]
    [when ($this.niveau_risque == "ELEVE")]
    [then [ontology:set $this "statut" "BLOQUE"]]]
[ontology:commit [new Virement [montant 15500] [pays_destination "Iles Caimans"]]]
[ontology:commit [new Virement [montant 820]]]
[ontology:infer-fixpoint $Banque 10]
[ontology:select $Banque "Virement" [statut "BLOQUE"]]

Резултат, получен на сървъра: преводът от 15 500 € към Каймановите острови е блокиран, а този от 820 € остава в изчакване.

Подбор на персонал: верига от правила

Първо правило определя нивото според опита; второ решава според нивото и оценката. Изводът свързва двете.

$RH = [ontology:define "RH_Tri"
    [ontology:class Candidat
        [attributes [nom String [required true]] [experience Integer [min 0]]
                    [score Integer [min 0] [max 100]]
                    [niveau String [default "JUNIOR"]] [decision String [default "A_ETUDIER"]]]]]
[ontology:rule "NiveauSenior" $RH [target "Candidat"] [priority 100]
    [when ($this.experience >= 7)]
    [then [ontology:set $this "niveau" "SENIOR"]]]
[ontology:rule "Accepte" $RH [target "Candidat"] [priority 10]
    [when (($this.niveau == "SENIOR") && ($this.score >= 70))]
    [then [ontology:set $this "decision" "ACCEPTE"]]]
[ontology:commit [new Candidat [nom "Marie"] [experience 9] [score 82]]]
[ontology:commit [new Candidat [nom "Paul"] [experience 9] [score 55]]]
[ontology:commit [new Candidat [nom "Lea"] [experience 3] [score 90]]]
[ontology:infer-fixpoint $RH 10]
[ontology:select $RH "Candidat" [decision "ACCEPTE"]]

Резултат, получен на сървъра: приета е само Мари; Пол е старши, но оценката му е недостатъчна, а Леа все още не е старши.

Покупки: проверка на качеството на данните за доставчиците

Преди да плати на доставчик или да го включи в списъка, онтологията проверява дали задължителните полета са налице и дали стойностите спазват границите си. Тази проверка е изцяло символна.

$Four = [ontology:define "Fournisseurs"
    [ontology:class Fournisseur
        [attributes [raison_sociale String [required true]] [siret String [required true]]
                    [note_qualite Integer [min 0] [max 20]]]]]
[ontology:commit [new Fournisseur [raison_sociale "Alpha SARL"] [note_qualite 25]]]
[ontology:consistent $Four]

Резултат, получен на сървъра: две блокиращи нарушения, липсващият регистрационен номер на фирмата и оценка за качество 25 при максимум 20.

Поръчки: привеждане на свободна стойност към каталога

Цветът и размерът на дограмата приемат само стойности от каталога. Когато клиентът напише антрацит или голям формат, извличането привежда стойността към правилния етикет по смисъл.

$menuiserie = [ontology:define menuiserie
    [ontology:class Fenetre [attributes
        [reference String]
        [couleur String [in_values "Blanc 9010" "Gris 7016" "Brun 8019" "Noir 9005"]]
        [taille String [in_values "S" "M" "L" "XL"]]]]]
$f = [ontology:fromText $menuiserie "Fenetre" "Commande REF-001 : fenetre coulissante, profil couleur anthracite, grand format (large)."]
[print $f.couleur]     # Gris 7016
[print $f.taille]      # L

Оферти: извличане на сканиран документ

PDF оферта се превръща в изображения и след това се пренася в схемата, включително таблицата с редовете. Сумите пристигат типизирани, готови да бъдат проверени от правила.

[ontology:class Devis
    [attributes
        [numero String [key true]]
        [date Date]
        [client Client]
        [lignes List [of LigneDevis]]      # déclenche l'extraction du tableau
        [total_ht Currency]
        [taux_tva Number]
        [total_ttc Currency]]]
$images = [pdfToImages $fichier_pdf 2.0]
$devis  = [ontology:fromImage $DevisSystem "Devis" $images]

Правила, написани от бизнес екипите

Правилата могат да бъдат написани и на Gherkin, формата на тестовите сценарии, и след това автоматично превърнати в изпълнима онтология.

$source = "
Feature: SecurityRules
  Background: Schema
    Given I define an ontology named 'BankSystem'
    And I define a class 'Transaction' with attributes:
    | Name   | Type    | Default   |
    | amount | Integer | 0         |
    | status | String  | 'Pending' |

  @priority: 100
  Scenario: High Value Rule
    Given a 'Transaction' context
    When 'amount' is greater than 1000
    Then set 'status' to 'HighRisk'
"
$Ontologie = [evaluate [ontology:loadGherkin $source]]

Какво гарантира и какви са ограниченията ѝ

  • Правилата се прилагат точно и възпроизводимо, по ред на приоритета си, до стабилизиране.
  • Съгласуваността се проверява без езиков модел: задължителни полета, граници, списъци от стойности, кардиналности.
  • Всяка сесия има свои онтологии; запазването им след края на сесията става изрично, чрез запис в работното пространство.
  • Извличането от текст или изображение минава през езиковия модел; онтологичните договори позволяват то да бъде валидирано и повторено при отклонение.

Да приложим тази работа към вашите процеси?

Диагностиката тръгва от реалния начин, по който работите, и определя решенията, които могат да бъдат поверени на ИИ.

Свържете се с нас в WhatsApp