Галоўная / Артыкулы

Трыаж прэтэнзій па страхаванні з удзелам калькольнікаў на Microsoft Foundry

Трыаж страховых заявак у Microsoft Foundry: коордынатор, які керуе праблемамі страховага пакета, агенты па борьбе з мошчанніцай і вірасце спораў, пункты контролю, App Insights і хостынг Container Apps.

Выдавец: REACTAPP.TOP13 хв чытання2993 слоў

Крыніцы: AZURE AI: Multi-agent claims triage on Microsoft Foundry

Уявіце сабе страховую компанію, якая ўсё дзень прымае тыячы новых заявкаў праз веб-формы і тэлефонныя лініі. Перш чым здзейсніць платэж, важлівыя тры фактары: страхова захопленасць на дату падарунка, сігналы шахрайства, якія фіксуе команда SIU, і дыяпазон выплаты на адповіднае завяленьне. Ручны последоўны анаіз ёсць повольным. Метод трыажу з удзелам кальколяў, якія працуюць на платформе Foundry, дазволяе паралельна працаваць спецыялістам, а людзей заставляць рашаць выключныя справы.

Іспользуемыя інструменты

Розгортанне модэляў Azure AI Foundry, фрэймворк агентаў/оркестрацыі з перадачай заданняў, функцыя контроля стану для стабільнай працы, Application Insights для аналізу логаў, а таксама Container Apps з кераваным ідэнтыфікаторам для хостування.

Прыямыя прычынкі

Падпіска на Azure з доступам да Foundry, можлівасць розгортання кантэйнерных дапрацоўак, працовы простор App Insights і прыклады пакетаў заявкаў для тэставання.

Архітэктура праекта

Агент-коордынатар распрацоўвае задачы між трохма спецялістамі (кантроль дзейнасці, борьба з мошчаннем, вырахунакі). Інструменты абгружаюць даны з полісаў, пераглядаюць спісы мошчання і працуюць з правіламі класыфікацыі. Тэпкі стан заявкі застаецца незменным пры перадачы. Тэлеметрыя фіксуе кожную перадачу даных.

Шаг 1. Створыце рэсурс Foundry і абгружыце мадэлі

Падготавьце праект і абгружыце мадэлі чату, якія будуць вікорыстоўваны агентамі. Аккуратна запісуйце назвы абгружэнняў.

Шаг 2. Установіце фрэймворк і налаштавьце кліент чату на выкарыстоўванне Foundry

az group create \
  --name rg-claims-prod-uks \
  --location uksouth

az cognitiveservices account create \
  --name fdy-claims-prod-uks \
  --resource-group rg-claims-prod-uks \
  --location uksouth \
  --kind AIServices \
  --sku S0 \
  --assign-identity

az cognitiveservices account deployment create \
  --name fdy-claims-prod-uks \
  --resource-group rg-claims-prod-uks \
  --deployment-name gpt-4o \
  --model-name gpt-4o \
  --model-version 2024-08-06 \
  --model-format OpenAI \
  --sku-capacity 200 \
  --sku-name GlobalStandard

az cognitiveservices account deployment create \
  --name fdy-claims-prod-uks \
  --resource-group rg-claims-prod-uks \
  --deployment-name gpt-4o-mini \
  --model-name gpt-4o-mini \
  --model-version 2024-07-18 \
  --model-format OpenAI \
  --sku-capacity 400 \
  --sku-name GlobalStandard
python -m venv .venv
source .venv/bin/activate
pip install agent-framework azure-monitor-opentelemetry azure-identity azure-cosmos
# claims/clients.py
import os
from azure.identity import DefaultAzureCredential
from agent_framework.azure import AzureOpenAIChatClient

credential = DefaultAzureCredential()

coordinator_client = AzureOpenAIChatClient(
    endpoint=os.environ["FOUNDRY_ENDPOINT"],
    deployment_name="gpt-4o",
    credential=credential,
)

specialist_client = AzureOpenAIChatClient(
    endpoint=os.environ["FOUNDRY_ENDPOINT"],
    deployment_name="gpt-4o-mini",
    credential=credential,
)
# claims/agents.py
from claims.clients import coordinator_client, specialist_client

coordinator = coordinator_client.create_agent(
    name="triage",
    instructions=(
        "You are the first-line claims triage officer for a UK motor insurer. "
        "Read the claim and decide which specialist should handle it next. "
        "Route to 'policy_agent' when cover or policy dates are in question. "
        "Route to 'fraud_agent' when the description contains any indicator of "
        "staged loss, late notification, or inconsistent detail. "
        "Route to 'settlement_agent' when cover is confirmed and only the payout "
        "figure remains. Call the matching handoff tool, for example "
        "handoff_to_fraud_agent. Never state a settlement figure yourself."
    ),
)

policy_agent = specialist_client.create_agent(
    name="policy_agent",
    instructions=(
        "You verify whether the policy was in force on the incident date and "
        "whether the peril is covered. Use the lookup_policy tool. State the "
        "cover position plainly and cite the policy section. If cover is void, "
        "say so and stop; do not speculate on settlement."
    ),
)

fraud_agent = specialist_client.create_agent(
    name="fraud_agent",
    instructions=(
        "You score claims against the SIU signal list using the score_fraud_signals "
        "tool. Report each signal that fired and the aggregate score. Any score at "
        "or above 0.6 must be handed to policy_agent for a cover check before it "
        "goes anywhere near settlement."
    ),
)

settlement_agent = specialist_client.create_agent(
    name="settlement_agent",
    instructions=(
        "You band the damage estimate and propose a settlement using the "
        "band_settlement tool. Anything above 15000 GBP must be flagged for human "
        "authorisation in your response. Never approve a payment."
    ),
)
# claims/workflow.py
from agent_framework import HandoffBuilder
from claims.agents import coordinator, policy_agent, fraud_agent, settlement_agent

def build_triage_workflow():
    return (
        HandoffBuilder(
            name="claims_triage",
            description="Motor claims triage: cover, fraud signals, settlement banding.",
            participants=[coordinator, policy_agent, fraud_agent, settlement_agent],
        )
        .set_coordinator(coordinator)
        .add_handoff(coordinator, [policy_agent, fraud_agent, settlement_agent])
        .add_handoff(fraud_agent, policy_agent)
        .add_handoff(policy_agent, settlement_agent)
        .with_interaction_mode("autonomous", autonomous_turn_limit=12)
        .with_termination_condition(
            lambda conv: any(
                "AUTHORISATION REQUIRED" in (msg.text or "")
                for msg in conv[-2:]
            )
        )
        .build()
    )
# claims/tools.py
from typing import Annotated
from datetime import date
import httpx

POLICY_API = "https://pas.internal.claims-leeds.co.uk/v2"

async def lookup_policy(
    policy_number: Annotated[str, "The policy number, format MOT-00000000"],
    incident_date: Annotated[str, "Incident date as YYYY-MM-DD"],
) -> dict:
    """Return cover status and policy sections in force on the incident date."""
    async with httpx.AsyncClient(timeout=10.0) as client:
        r = await client.get(
            f"{POLICY_API}/policies/{policy_number}/cover",
            params={"as_at": incident_date},
        )
        r.raise_for_status()
        return r.json()

SIU_SIGNALS = {
    "late_notification_days": 14,
    "no_police_reference": True,
    "prior_claims_12m": 2,
}

def score_fraud_signals(
    description: Annotated[str, "Free-text claim description"],
    notified_after_days: Annotated[int, "Days between incident and notification"],
    prior_claims_12m: Annotated[int, "Claims by this policyholder in last 12 months"],
) -> dict:
    """Score a claim against the SIU signal list. Returns fired signals and aggregate."""
    fired = []
    if notified_after_days > SIU_SIGNALS["late_notification_days"]:
        fired.append("late_notification")
    if prior_claims_12m >= SIU_SIGNALS["prior_claims_12m"]:
        fired.append("claim_frequency")
    if "no witnesses" in description.lower():
        fired.append("no_independent_witness")
    return {"signals_fired": fired, "score": round(len(fired) / 3, 2)}

def band_settlement(
    estimate_gbp: Annotated[float, "Repair or replacement estimate in GBP"],
) -> dict:
    """Band an estimate and return the proposed settlement and authorisation route."""
    if estimate_gbp <= 2500:
        return {"band": "A", "proposed_gbp": estimate_gbp, "route": "auto"}
    if estimate_gbp <= 15000:
        return {"band": "B", "proposed_gbp": estimate_gbp, "route": "team_leader"}
    return {"band": "C", "proposed_gbp": estimate_gbp, "route": "AUTHORISATION REQUIRED"}
policy_agent = specialist_client.create_agent(
    name="policy_agent",
    instructions="...",
    tools=[lookup_policy],
)

fraud_agent = specialist_client.create_agent(
    name="fraud_agent",
    instructions="...",
    tools=[score_fraud_signals],
)

settlement_agent = specialist_client.create_agent(
    name="settlement_agent",
    instructions="...",
    tools=[band_settlement],
)
# claims/checkpoints.py
from agent_framework import InMemoryCheckpointStorage

# Tests and local runs
storage = InMemoryCheckpointStorage()
workflow = build_triage_workflow_with_storage(storage)

async for event in workflow.run_stream(claim_text, session_id=claim_id):
    handle(event)
# claims/telemetry.py
import os
from azure.monitor.opentelemetry import configure_azure_monitor
from agent_framework.observability import enable_instrumentation

def init_telemetry() -> None:
    configure_azure_monitor(
        connection_string=os.environ["APPLICATIONINSIGHTS_CONNECTION_STRING"],
    )
    enable_instrumentation()
dependencies
| where timestamp > ago(24h)
| where name startswith "invoke_agent"
| extend agent = tostring(customDimensions["gen_ai.agent.name"])
| extend claim = tostring(customDimensions["session.id"])
| summarize
    hops = count(),
    total_ms = sum(duration),
    p95_ms = percentile(duration, 95)
    by agent
| order by total_ms desc
# claims/run.py
import asyncio
from agent_framework import RequestInfoEvent
from claims.telemetry import init_telemetry
from claims.workflow import build_triage_workflow

CLAIM = """
Claim MOT-40118822. Policy MOT-00318844, incident 2026-07-29, notified 2026-08-19.
Insured reports offside wing and door damage in a supermarket car park, no witnesses,
no police reference. Third party details not supplied. Estimate 3,180 GBP.
"""

async def main() -> None:
    init_telemetry()
    workflow = build_triage_workflow()

    async for event in workflow.run_stream(CLAIM, session_id="MOT-40118822"):
        if isinstance(event, RequestInfoEvent):
            # Autonomous mode only surfaces this on escalation
            print(f"HUMAN NEEDED: {event.data.prompt}")
            break
        print(event)

asyncio.run(main())
az identity create \
  --name umi-claims-triage \
  --resource-group rg-claims-prod-uks

PRINCIPAL=$(az identity show -n umi-claims-triage -g rg-claims-prod-uks --query principalId -o tsv)
CLIENT=$(az identity show -n umi-claims-triage -g rg-claims-prod-uks --query clientId -o tsv)
FOUNDRY=$(az cognitiveservices account show -n fdy-claims-prod-uks -g rg-claims-prod-uks --query id -o tsv)

az role assignment create \
  --role "Azure AI User" \
  --assignee-object-id $PRINCIPAL \
  --assignee-principal-type ServicePrincipal \
  --scope $FOUNDRY

az containerapp create \
  --name ca-claims-triage \
  --resource-group rg-claims-prod-uks \
  --environment cae-claims-prod-uks \
  --image acrclaimsproduks.azurecr.io/claims-triage:1.0.0 \
  --user-assigned umi-claims-triage \
  --min-replicas 1 \
  --max-replicas 8 \
  --cpu 1.0 \
  --memory 2.0Gi \
  --env-vars \
    FOUNDRY_ENDPOINT=https://fdy-claims-prod-uks.openai.azure.com/ \
    AZURE_CLIENT_ID=$CLIENT \
    ENABLE_INSTRUMENTATION=true \
    OTEL_SERVICE_NAME=claims-triage \
    APPLICATIONINSIGHTS_CONNECTION_STRING=secretref:appi-conn
az group delete \
  --name rg-claims-prod-uks \
  --yes \
  --no-wait
az containerapp delete \
  --name ca-claims-triage \
  --resource-group rg-claims-prod-uks \
  --yes

az cognitiveservices account deployment delete \
  --name fdy-claims-prod-uks \
  --resource-group rg-claims-prod-uks \
  --deployment-name gpt-4o-mini

Настроўце канцэнтры, абгружэння і аўтэнтыфікацыю праз Entra/managed identity — утрымайцеся ад перадачы кантрольных клучаў API ў зображэннях кантэйнераў.

Шаг 3. Адактуець коордынатора і трохіх спецыялістаў

Дай кожнаму спецыялісту часткавы праблематычны запрос і набор засобаў. Коордынатор толькі керуе і агрэгуе; ён не павінен пераўтвараць логіку спецыялістаў.

Шаг 4. Складзець граф перадачы

Часткавыя рэбра перадачы лепшыя за хаотычны набор засобаў. Прыродны выбар — праблемы → мошчанніцтва → вырахунак; дазволь швыракую перадачу да SIU, калі рэйтынг мошчанніцтва расце.

Шаг 5. Дай спецыялістам рэальныя засобы

Засобы павінны працаваць з рэальнымі сістэмамі або ўпорнікамі з схемамі. Фальшывыя засобы, якія завжды «затверджуюць», нічога не навучаюць.

Шаг 6. Точка контролю, каб пачатак занова не прымусіў адмахнуцца ведучага клэймента

Зберагачы стан задачы/клэймента пасля кожнага спецыяліста. Пачатак працы кантэйнера ў серэдзіне клэймента павінен продырацца далей, а не прыводзіць да двойнай оплаты.

Шаг 7. Адправляй логі і показнікі да Application Insights

Выпускайце спецыяльныя запісі для перадачы заданняў, затрымкі працы інструментаў і фінальных рэзультатаў. Дашборды должны паказваць медыянное час аналізу у порываў з ручным базовым значэнням.

Крок 8. Адрабатайце заявку і прачытайце рэзультат

Ожывайце „золатую“ заявку з вядомымі рэзультатамі пакрыцча і фрауду. Абявіце, што фінальны пакет коордынатора включае всі тры спецыялістскія рэзультаты.

Крок 9. Размістайце на Container Apps з кераваным ідэнтыфікаторам

Надайце права ідэнтыфікатора для размешчэння ў Foundry і для будзь-якіх бэкенд-API, якія вызываюць інструменты. Забезпечыце захопленне входу.

Усунення проблем

Пусты выход спецыялістаў зазвычай значыць некорэктную назву размешчэння або скрацаны JSON інструмента. Ціклы часта означаюць відсутнасць умоў завершэння перадачы задання. Неудачы аўтэнтыфікаціі ёсць наследкам RBAC, а не „модэль недзеяе“.

Косц адрабаткі гэтага

Мадэльныя токены домінуюць; запісі стану і даныя з App Insights ў порэванні з імі маюць меньшы розмер. Неабяжна абмежыць максымальную колькасць раундаванняў за заявкай і колькасць запытак да політык кэшу.

Очышчэнне

Удаліце кантэйнерныя прыклады, ідэнтыфікаторы і розгортання, якія вы стварылі для практычнага курсу, ўбачыць, каб рэсурсы дамоў не застаўаліся на счытку.

Заканчэнне

Процедура сортавання заявак калькольнікаў з мнага агентамі працюе, калі спецыялісты ёсць обмежаныя, інструменты — рэальныя, запісы стану — надзеяныя, а тэлеметрыя паказвае, што затрымкі ёсць важлівыя. Foundry забезпечвае базу для модэлі; граф і правіла аператыў ствараюць сам продукт.

Дадзіце вузел людскага затверджэння для сум, якія перавышаюць прагу. Агенты должны прышвыдзіць сортавання, а не таямна затверджваць вялікія выплаты.

Правіла пра адман з версіямі трэба выдзеліць ад прамптамі модэлі. Калі SIU апдэйтуе спіс сігналаў, не трэба змянюваць прампты, каб іх зафіксаваць — інструменты должны чытаць актуальны спіс.

Адзьякаваць тэсты на адночасныя запіты ў спрацоўванні Foundry з урахоўванням лімітаваń шырокаспектнасці. Павінен быць вялікі ўзначаны спосаб працы пад час перэпалнення аберанку: адклэсць запіт, адкласці яго на пазнейшы час або перавесты працэю ў ручны рэжым.

Прыватнасць: тэкст запіта ёсць чулым. Неабходна пераканацца, што ў лаг-файлах не залічваюцца персональныя даны, а таксама што функцыя выбору прыкладоў у App Insights не зберагае первісныя персональныя даны ў спецыяльных відметках.

Зберагаць тэст на стваранне хаосу, які зупіняе кантэйнер пад час апрацоўкі запіту і пераканаеся, што працэя можа будзе продажыта з пункту перапытку без дублікацыя эфектаў ад інструменту — ключы ідэмпатэнтнасці пад час зберагання даных ёсць обавязковымі.

Даўжыць вузел для людскай апраўкі для справ, якія перасягаюць заданы порог. Агенты павінны прышвыцьліваць процэс сортавання запітоў, а не таямна разрашаць вялікія выплаты.

Правіла на брань версый разлучаць ад прамптамі модэляў. Калі SIU адкладзець актуальны спіс сігналаў, не павінна быць патрэба змяні прампта, каб іх заўважыць — інструменты павінны чытаць актуальны спіс.

Адзьякаваць тэсты на адночасныя запіты ў спрацоўванні Foundry з урахоўванням лімітаваń шырокаспектнасці. Павінен быць вялікі ўпорадак аб’екта канэў: адкласіць, адкласіць на пазнейшы час або перавесты на ручны рэжым.

Прыватнасць: тэкст запітаў ёсць чулым. Забяжцеся, каб у лагах не было відображаныя інформацыі, якая можа аўтэнтыфікаваць аднойчыну особу, і каб функцыя выборкавання дадзеных у App Insights не зберагала первісных персональных дадзеных у спецыяльных відметках.

Заставьце тэст на стваранне хаосу, які зупіняе кантэйнер пад час апрацоўкі запіта і пераканальваеся ў возз’яджэнне з пункта контролю без дублікацыі паслядкав для інструментаў — ключы ідэмпатэнтнасці пад час зберагання дадзеных ёсць обав’язковымі.

Дадзіце вузол для людскай апраўды для справ, якія перасягаюць заданы порог. Агенты павінны прышвартаваць працэс аналізу, а не таямніча затверджваць вялікія выплаты.

Правіла на брандзлівство версый слід выдзеліць ад правілаў для модэляў. Калі SIU апдэйтуе спіс сігналаў, не патрабуецца змены правілаў модэля, каб іх застосаваць — інструменты павінны чытаць актуальны спіс.

Адзьякаваць тэсты на адночасныя запіты ў спрацоўванні Foundry з урахоўванням лімітаваń шырокаспектнасці. Павінен быць вялікі ўпорадак аб’ектаў у чаты: адхіленне, адкладэнне або пераход на ручны рэжым.

Прыватнасць: тэкст запітаў ёсць чулым. Забяжцеся, каб у логах не было відображаныя інформацыі аб особах, і каб пры вікорыстоўванні App Insights адбіранне дадзеных не зберагало первісных персональных даных у спецыяльных відметках.

Заставьце тэст на стваранне хаосу, які зупіняе кантэйнер пад час апрацоўкі запіта і пераканальваеся ў возз’яджэнне з пункта контролю без дубліраўчых наследкаваń з боку інструментаў — ключы ідэмпатэнтнасці пад час зберагання дадзеных ёсць обав’язковымі.

Дадзіце елемент для людскага затверджэння для справ, якія перавышаюць заданы порог. Агенты павінны прышвыцьняць працэс аналізу, а не таямніча затверджваць вялікія выплаты.

Правіла борьбы з падлогам версый нарадзіва ад правілаў для модэляў. Калі SIU апдэйтуе спіс сігналоў, не патрабуецца змены правілаў, каб іх застосаваць — інструменты павінны чытаць актуальны спіс.

Адзьякаваць тэсты на адночасныя запіты ў спрацоўванні Foundry з урахоўванням лімітаваń шырокаспектнасці. Павінен быць вялікі ўпорадак аб’ектаў у чаты: адхіленне, адкладэнне чы пераход на ручны рэжым.

Прыватнасць: тэкст запітаў ёсць чулым. Неабходна пераканацца, што логі змаўчваюць даны PAN/SSN, а таксама што функцыя выбору прыкладоў у App Insights не зберагае первісных персональных даных у спецыяльных вімерах.

Зберагаць тэст хаосу, які зупіняе кантэйнер пад час апрацоўкі запіта і пераканаеся, што працэс можа будзе продажыты з пункта контролю без дублікацыяў наследкав для інструментаў — ключы ідэмпатэнтнасці пад час зберагання даных ёсць обав’язковымі.

Даўжыць вузел для людскай апраўкі для справ, якія перасягаюць заданы порог. Агенты павінны прышвыцьліваць процэс сортавання, а не таямна разрашаць вялікія выплаты.

Правіла брахмату версый разлучаць ад прамптамі модэляў. Калі SIU адкладзець актуальны спіс сігналаў, не павінна быць патрэба змяні прампта, каб іх заўважыць — інструменты павінны чытаць актуальны спіс.

Адзьякаваць тэсты на адночасныя запіты ў спрацоўванні Foundry з урахоўванням лімітаваń шырокаспектнасці. Павінен быць вялікі ўзначаны спосаб працы пад час перэповнення аберанку: адклэсць запіт, адкласці яго на пазнейшы час або перавесты працэю ў ручны рэжым.

Прыватнасць: тэкст запіта ёсць чулым. Забяжцеся, каб у лагах не было зафіксаваных персональных даных, і каб функцыя выбору прыкладоў у App Insights не зберагала сырыя персональныя даныя ў спецыяльных відметках.

Заставьце тэст на стваранне хаосу, які зупіняе кантэйнер пад час апрацоўкі запіту і пераканаеся, што працэя можа будзе продовжана з пункта перапытку без дублікацыяў наследкав для інструментаў — ключы ідэмпатэнтнасці пад час зберагання даных ёсць обавязковымі.

Дадзіце вузел для людскай апраўкі для запытоў, якія перасягаюць заданы порог. Агенты павінны прышвартаваць процэс аналізу, а не таямніча затверджваць вялікія выплаты.

Правіла на борацьбу з падлогам версый раздзельна ад інструкцый для модэляў. Калі SIU адкладзець актуальны спіс сігналаў, не патрабуецца змены інструкцый, каб ўсё было перыявлена — інструменты павінны чытаць актуальны спіс.

Адзьякаваць тэсты на адночасныя запіты ў спрацоўванні Foundry з урахоўванням лімітаваń шырокаспектнасці. Павінен быць вялікі ўпорадак аб’ектаў у чаты: адхіленне, адкладэнне або пераход на ручны рэжым.

Прыватнасць: тэкст запітаў ёсць чулым. Неабходна пераканацца, што логі змаўчваюць даны PAN/SSN, а таксама што функцыя выбору прыкладоў у App Insights не зберагае первісных персональных даных у спецыяльных вімерах.

Зберагаць тэст хаосу, які зупіняе кантэйнер пад час апрацоўкі запіта і пераканаеся, што працэс можа будзе продажы ўскладнення без дублікацыя пабочных эфектаў — ключы ідэмпатэнтнасці пад час зберагання даных ёсць обав’язковымі.

Даўжыць вузол для людскай апраўдкі для сцэнарыяў выкарыстання, якія перасягаюць заданы порог. Агенты павінны прышвыцьліваць процэс аналізу, а не таямніча затверджваць вялікія выплаты.

Правіла борьбы з падлогам версый нарадзіва ад правілаў для модэляў. Калі SIU апдэйтуе спіс сігналоў, не павінна быць потрэба змены правілаў, каб іх застосаваць — інструменты павінны чытаць актуальны спіс.

Адзьякаваць тэсты на адночасныя запіты ў спрацоўванні Foundry з урахоўванням лімітаваń шырокаспектнасці. Павінен быць вялікі ўпорадак аб’ектаў у чаты: адхіленне, адкладэнне чы пераход на ручны рэжым.

Прыватнасць: тэкст запітаў ёсць чулым. Неабходна пераканацца, што логі змаўчваюць даны PAN/SSN, а таксама што функцыя выбору прыкладоў у App Insights не зберагае первісных персональных даных у спецыяльных вімерах.

Зберагаць тэст хаосу, які зупіняе кантэйнер пад час апрацоўкі запіта і пераканаеся, што працэс можа будзе продажыты з пункта перапытку без дублікацыяў наследкав для інструментаў — ключы ідэмпатэнтнасці пад час зберагання даных ёсць обав’язковымі.

Даўжыць элемент для людзкага затверджэння для сум, якія перавышаюць певны порог. Агенты должны прышвыдзіць процэс аналізу, а не таямніча затверджваць вялікія выплаты.

Правіла браньбы з падрабненням версій трэба выдзеліць ад прамптав для модэляў. Калі SIU адкладзець актуальны спіс сігналаў, не патрабуецца змены прампта, каб іх заўважыць — інструменты должны чытаць актуальны спіс.

Адаптавайце тэсты на навантажэнне для пераканальных запітоў па лімітам гучнасці ў рэалізацыі Foundry. Павінна быць вяліканая мадэль паведамлення пра перэпалоўку у чаты: адхілэнне, адкладзенне або пераход на ручны рэжым.

Прыватнасць: тэкст запітоў ёсць чулым. Забяжцеся, каб у логах не было відображаныя інформацыі аб особах, і каб пры вікорыстоўванні App Insights адбіранне дадзеных не зберагало первісных персональных данаў у спецыяльных вімерах.

Заставайце тэсты на хаос, якія зупіняюць кантэйнер пад час апрацоўкі запіту і пераканальваюць яго да продажу з пункта контролю без дублікацыі пабочных эфектаў — ключы ідэмпатэнтнасці пад час зберагання дадзеных ёсць обавязковымі.

Інструкцыі для спецялістаў павінны забараняць стварэнне новых пунктав правіл. Калі інструмент аналізу вяртае порожняе рэзультат, спецяліст павінен перадаць справу на вышэйшы ранг — а не проста здагадвацца, што запіт, верагатна, павінен быць адхілены.

Апэльнуйцеся на пераканальванне схемы для аргументаў інструмента. Некорэктна запісаны ідэнтыфікатор запіту павінен спрычыніць невяліканне вызову інструмента, перш чым гэта стане прычыной халюцынацый у аналізе.

Раздзеляйце інструменты для чытання ад інструментаў для запісу. Агенты для сортавання дадзеных працуюць за замовчэннем у рэжыме толькі чытання; запісы для вырашэння патрабуюць санкцыі адпаведнага вузла і ключа ідэмпатэнтнасці.

Связуйце адзінакі Application Insights з конкрэтнымі дзеяннямі: адзінакі ў відношэні да тайма-аутаў інструментаў протыв абману павінны бачыць власнікаў інтэграціі SIU, а не каманду платформы LLM за замовчэннем.

Зберагаюце сінтэтычныя заявкі ў пакеце прыкладоў, які включае крайнія случаі: полісы, якія заканчыліся, рэйтынгі абману на межы, а таксі працэсаў, якія ствараюць навантажэння на маршрутызацыю.

Пад час дэманстраціі для керуючых пакажыце лянцюг адстэпенавання дзеянь для адной заявкі. Галоўная ідэя — кантроллы і організацыя процэсаў, а не назвы модэляў.

У спецыялістаў патрабавайце, каб яны не выдумвалі клазу палісаў. Калі інструмент для аналізу пакрыцча вяртае порожні рэзультат, спецыяліст павінен падняць прыгожданне — а не здагадвацца, што “верагатна ёсць пакрыцча”.

Застосавайце пераканаленне схемы да аргументах інструментаў. Некорэктна запісаны ідэнтыфікатор прэтэнзіі павінен спрычыніць невялікасць вызову інструмента, прычым не стаць аб’ектам вымышленай наратыўнай структуры расследавання.

Раздзеляйце інструменты для чытання ад інструментаў для запісу. Агенты для сортавання за замовчэннем працуюць толькі у рэжыме чытання; запіс даных для вырашэння спрабаў трэбуе санкцыі адпаведнага вузла і ключа ідэмпатэнтнасці.

Связуйце адмоўкі з Application Insights з конкрэтнымі дзеяннямі: раст у колькасці падзейкаў з пераганянням часу у інструментах протываабману — адпаведальныя ўчаснікі інтэграцыі SIU, а не каманда платформы LLM за замовчэннем.

Зберагаюце сінтэтычныя прэтэнзіі ў пакеце фікстураў, які включае крайнія прыклады: палучаны поліс, гранічны рэйтынг абману і інцыдэнты з удзелам калькі автамабіляў, якія ствараюць навантажэння на механізмы маршрутацыі.

Пад час дэманстрацыі для керуючых пакажыце лянцюг трэйсаў для адной прэтэнзіі. Галоўная ідэя — кантроллы і організацыя процэсаў, а не назвы брэндаў модэляў.

Спецыялістычныя запросы должны забараняць створэнне новых пунктав полісы. Калі інструмент аналізу вярнёў порожняе рэзультат, спецыяліст павінен перадаць справу на вышэйшы ранг — а не проста здагадвацца, што «верагатна пакрываецца».

Неабходна праверкі структуры дадзеных для аргументаў інструмента. Некорэктна запісаны ідэнтыфікатор прэтэнзіі павінен спрычыніць невялікі брак пад час вызову інструмента, прычым не стаць падставай для халюцынацыйных выводам у расследаванні.

Трэба раздзеляць інструменты для чытання дадзеных ад інструментаў для ўрабаткі. Агенты, якія ведаюць праблемы, за замовчаннем маюць толькі права на чытанне; для змены статусу прэтэнзій неабходны апраўленне з боку відповіднага аддзела і ключ ідэмпатэнтнасці.

Неабходна прыязначаць адпаведных адповідачоў за неудачы Application Insights: падвышэнне колькасці тайма-аўтаматав у інструментах борьбы з мошчаннем — на адпаведальных за інтэграцыю SIU, а не на команду платформы LLM за замовчаннем.

Сінтэтычныя прэтэнзіі трэба зберагаць у пакеце фікстураў, які включае крайнія прыклады: прэтэнзіі з заканчылася тэрміном дачыны полісы, прэтэнзіі з межовым рэйтынгам мошчанні, а таксі пры інцыдэтах з колькама автамобілямі, якія ствараюць навантажэння на сістэму маршрутазаціі.

Калі дэманструеце для керуючых, пакажыце графік аналізу для аднаго заявлення. Галоўная ідэя — кантроль і організацыя процэсу, а не назвы маркаў модэляў.

Інструкцыі спецялістаў должны забараняць стварэнне новых пунктав полісы. Калі інструмент аналізу паказвае порожнія рэзультаты, спецяліст павінен перадаць справу вышэй — а не прыпускаты, што заявленне, верагацыйна, падпадае пад захопленне.

Застосавіце пераканальванне схемы на аргументы інструмента. Некорэктна запісаны ідэнтыфікатор заявлення павінен спрычыніць непрацяю інструмента, перш чым стане прычыной хвалюгерскага наратыву расследавання.

Раздзеліце інструменты для чытання ад інструментаў для запісу. Агенты, якія займаюцца сортаваннем заявленняў, па замовчэнню маюць толькі права на чытанне; запіс дакументаў патрабуе затверджэння адпаведнага вузла і ключа ідэмпотэнцыі.

Связайце адмоўкі Application Insights з конкрэтнымі дзеяннямі: якшчы збільшыцца колькасць адмоўків інструмента борьбы з махінацыямі, адпаведальныяя ўстановы — власнікі інтэграцыі SIU, а не каманда платформы LLM па замовчэнню.

Зберагаюце сінтэтычныя заявкі ў пакеце прыладаў, які включае крайнія случаі: полычаны поліс, рэгулярны рэйтынг шахрайства і інцыдэнты з колькама автамабілямі, якія ствараюць напругу ў працэсе маршрутазавання.

Пад час дэманстрацыі для керуючых аддзеламі пакажыце графік трэйсу для аднай заявкі. Галоўная ідэя — кантроль і організацыя процэсаў, а не назвы брэндаў модэляў.