funktion ai_decide

gäller för:markerad med ja Databricks SQL markerad med ja Databricks Runtime

Important

Den här funktionen finns i Beta.

Funktionen ai_decide() utvärderar en eller flera frågor mot text eller strukturerad data. För varje fråga returneras antingen en sannolikhet, ett val från namngivna kriterier eller en poäng på en ordnad skala. Använd den för att skicka supportärenden, bedöma om ett evenemang behöver uppmärksamhet eller prioritera arbetet med hjälp av en bedömningsmall du själv bestämmer.

Alla frågor i ett samtal använder samma inmatning, kallad state. Du kan kombinera olika frågetyper i ett samtal och använda de returnerade svaren i nedströms SQL-frågor.

Datasäkerhet

Dina dokumentdata bearbetas inom Databricks säkerhetsperimeter. Databricks lagrar inte parametrarna som skickas till AI-funktionsanropen, men behåller metadata-kördetaljer, såsom Databricks Runtime-versionen som används.

Requirements

Apache 2.0-licens

De underliggande modeller som kan användas just nu är licensierade under Apache 2.0-licensen, Copyright © Apache Software Foundation. Kunderna ansvarar för att säkerställa efterlevnaden av tillämpliga modelllicenser.

Databricks rekommenderar att du granskar dessa licenser för att säkerställa efterlevnad av tillämpliga villkor. Om modeller dyker upp i framtiden som presterar bättre enligt Databricks interna riktmärken kan Databricks ändra modellen (och listan över tillämpliga licenser som tillhandahålls på den här sidan).

Den modell som driver den här funktionen görs tillgänglig med hjälp av API:er för Modellserver foundation-modell. Se Tillämpliga modellvillkor för information om vilka modeller som är tillgängliga på Databricks och de licenser och principer som styr användningen av dessa modeller.

Om modeller dyker upp som presterar bättre enligt Azure Databricks interna riktmärken kan Databricks ändra modellerna och uppdatera dokumentationen.

Syntax

ai_decide(state, questions [, options])

Arguments

  • state: Ett VARIANT eller STRING uttryck som innehåller innehåll, kontext och exempel som behövs för att besvara frågorna. Värdet kan variera mellan rader. Accepterar antingen:

    • En som STRING innehåller klartext eller ett JSON-kodat objekt eller array. JSON-objekt och arrayer tolkas som strukturerad data. Andra strängar behandlas som text.
    • En VARIANT som produceras av en annan AI-funktion (till exempel ai_parse_document eller ai_extract)
  • questions: Ett konstant STRING uttryck som innehåller ett icke-tomt JSON-objekt. Varje nyckel är ett icke-tomt fråge-ID, och varje värde är en frågedefinition. Samma definitioner gäller för varje rad. Se Frågedefinitioner.

  • options: Ett valfritt konstant MAP<STRING, STRING> uttryck. Det stödda alternativet är version, med värdet '1.0'. Version 1.0 är standard. För att specificera det explicit, använd map('version', '1.0').

Frågedefinitioner

Varje frågedefinition kräver type och instructions, plus criteria när det krävs av frågetypen. Obligatoriska fält kan inte vara null. Andra fält stöds inte.

  • type: En av noul, choiceeller score.
  • instructions: Instruktioner för att utvärdera tillståndet, uttryckt som en sträng, JSON-objekt eller JSON-array.
  • criteria: Beskrivningarna som definierar hur man ska svara. Den nödvändiga formen beror på type.

Noul-frågor

Använd noul för att uppskatta sannolikheten att en fråga är sann. Resultatet är ett tal från 0 till 1.

Det valfria criteria objektet kan innehålla true och false nycklar för att beskriva dessa utfall. Varje beskrivning kan vara en sträng, ett JSON-objekt eller en JSON-array. Utelämna criteria när du inte behöver dessa beskrivningar. Om tillhandahållet criteria måste vara ett objekt och kan inte vara null.

{
  "needs_escalation": {
    "type": "noul",
    "instructions": "Does this ticket need immediate escalation?",
    "criteria": {
      "true": "An active service outage blocks the customer from working.",
      "false": "The customer can continue working or has a workaround."
    }
  }
}

Valfrågor

Använd choice för att välja en etikett från en uppsättning namngivna kriterier.

Det nödvändiga criteria objektet mappar 1 till 255 icke-tomma etiketter till beskrivningar. Varje beskrivning kan vara en sträng, ett JSON-objekt, en JSON-array eller null. Använd null när etiketten ensam beskriver valet.

{
  "team": {
    "type": "choice",
    "instructions": "Which team should handle this ticket?",
    "criteria": {
      "shipping": "Delivery or shipment issues",
      "billing": "Payment or invoice issues",
      "technical_support": "Product technical problems"
    }
  }
}

Poängfrågor

Använd score för att utvärdera tillståndet mot en ordnad skala.

Den nödvändiga criteria matrisen innehåller 2 till 10 beskrivningar, ordnade från lägst till högst. Varje beskrivning kan vara en sträng, ett JSON-objekt eller en JSON-array. Det första kriteriet har index 0, nästa har index 1, och så vidare.

Resultatet är det sannolikhetsviktade medelvärdet av dessa index. Den kan vara fraktionell och varierar från 0 antalet kriterier minus ett. Till exempel ger sannolikheterna för 0.1, , och 0.6 över tre kriterier ett värde på 1.50.3.

{
  "urgency": {
    "type": "score",
    "instructions": "How urgent is this ticket?",
    "criteria": [
      "Routine request with no time pressure",
      "Time-sensitive issue with a workaround",
      "Critical issue that blocks the customer"
    ]
  }
}

Returns

Returnerar a VARIANT med fälten response, metadata, och error_message. Fältet response innehåller ett answers objekt med en post per fråga. Fråge-ID:n matchar exakt de som anges i parametern questions . Varje svar innehåller ett type fält som matchar frågetypen: noul, , choiceeller score. Följande exempel visar response fältet för varje frågetyp:

  • Noul-frågor: A probability från 0 till 1 som uppskattar sannolikheten att frågan är sann.

    {
      "answers": {
        "needs_escalation": {
          "type": "noul",
          "probability": 0.1
        }
      }
    }
    
  • Valfrågor: A choice som innehåller etiketten med högst sannolikhet och ett probabilities objekt som mappar varje etikett till dess sannolikhet. confidence är ett tal från 0 till 1 som visar hur väl staten stödjer bedömningen. Värdena probabilities summeras till 1. Etikettnamnen stämmer exakt överens med de som anges i criteria.

    {
      "answers": {
        "team": {
          "type": "choice",
          "choice": "shipping",
          "probabilities": {
            "shipping": 0.8,
            "billing": 0.1,
            "technical_support": 0.1
          },
          "confidence": 0.9
        }
      }
    }
    
  • Poängfrågor: A som score innehåller det sannolikhetsviktade medelvärdet av kriteriindexen, en legend avbildning av strängindex (såsom "0") till de ursprungliga kriteribeskrivningarna, och ett probabilities objekt som mappar dessa index till sannolikheter. confidence är ett tal från 0 till 1 som visar hur väl staten stödjer bedömningen. Värdena probabilities summeras till 1.

    {
      "answers": {
        "urgency": {
          "type": "score",
          "score": 1.5,
          "legend": {
            "0": "Routine request with no time pressure",
            "1": "Time-sensitive issue with a workaround",
            "2": "Critical issue that blocks the customer"
          },
          "probabilities": {
            "0": 0.1,
            "1": 0.3,
            "2": 0.6
          },
          "confidence": 0.8
        }
      }
    }
    

Vid framgång metadata.version identifierar funktionsversionen som används och error_message är null.

Vid misslyckande response är null och error_message beskriver misslyckandet. Ogiltiga argumenttyper eller icke-konstanta frågedefinitioner kan också orsaka frågefel.

Exempel

Följande exempel visar hur man utvärderar flera frågor i ett samtal. Genererade svar kan variera mellan samtal.

Utvärdera flera frågetyper

Detta exempel utvärderar en produktlista utifrån dess kategori, användning av återvunna material och lämplighet för vandring i regnigt väder:

SELECT ai_decide(
  '{"name": "TrailShell jacket", "description": "Lightweight waterproof hiking jacket made from recycled polyester. Packs into its own pocket."}',
  '{
    "category": {
      "type": "choice",
      "instructions": "Which product category best fits this item?",
      "criteria": {
        "outerwear": "Jackets, coats, and other protective outer layers",
        "footwear": "Shoes, boots, and sandals",
        "accessories": "Bags, hats, and other accessories"
      }
    },
    "recycled_materials": {
      "type": "noul",
      "instructions": "Does the listing state that the product uses recycled materials?"
    },
    "hiking_suitability": {
      "type": "score",
      "instructions": "How suitable is this product for hiking in rainy weather?",
      "criteria": [
        "Not suitable for outdoor use in rain",
        "Offers some protection from rain",
        "Designed for hiking with waterproof protection"
      ]
    }
  }',
  map('version', '1.0')
) AS decision;

Exempelsvar:

{
  "response": {
    "answers": {
      "category": {
        "type": "choice",
        "choice": "outerwear",
        "probabilities": { "outerwear": 0.95, "footwear": 0.01, "accessories": 0.04 },
        "confidence": 0.95
      },
      "recycled_materials": { "type": "noul", "probability": 0.98 },
      "hiking_suitability": {
        "type": "score",
        "score": 1.8,
        "legend": {
          "0": "Not suitable for outdoor use in rain",
          "1": "Offers some protection from rain",
          "2": "Designed for hiking with waterproof protection"
        },
        "probabilities": { "0": 0.05, "1": 0.1, "2": 0.85 },
        "confidence": 0.9
      }
    }
  },
  "metadata": { "version": "1.0" },
  "error_message": null
}