Formato di file .qna
SI APPLICA A: SDK v4
Nota
Azure AI QnA Maker verrà ritirato il 31 marzo 2025. A partire dal 1° ottobre 2022, non potrai creare nuove risorse o Knowledge Base di QnA Maker. Una versione più recente della funzionalità di domande e risposte è ora disponibile come parte del linguaggio di intelligenza artificiale di Azure.
La risposta alle domande personalizzate, una funzionalità del linguaggio di intelligenza artificiale di Azure, è la versione aggiornata del servizio QnA Maker. Per altre informazioni sul supporto di domande e risposte in Bot Framework SDK, vedere Comprensione del linguaggio naturale.
I file .qna contengono definizioni basate su testo Markdown per concetti di QnAmaker.ai. Questo articolo illustra i diversi concetti espressi tramite il formato di file .qna.
Aggiunta di commenti
Usare > per creare un commento. Ecco un esempio:
> This is a comment and will be ignored
Coppie di domande e risposte
Il file con estensione qna e il parser supportano le definizioni di domande e risposte.
Ecco la sintassi di una definizione di domanda e risposta di base:
# ? Question
[list of question variations]
```
Answer
```
Ecco alcuni esempi di definizioni di domande e risposte:
> # QnA Definitions
### ? who is the ceo?
```
You can change the default message if you use the QnAMakerDialog.
For details, see [Azure AI Bot Service documentation](/articles/adaptive-dialog/adaptive-dialog-prebuilt-actions.md).
```
### ? How do I programmatically update my KB?
```
You can use our REST apis to manage your KB.
\#1. See here for details: https://westus.dev.cognitive.microsoft.com/docs/services/58994a073d9e04097c7ba6fe/operations/58994a073d9e041ad42d9baa
```
Si noti che l'identificatore di tipo markdown
per answer
è facoltativo.
Domande multiple
È possibile aggiungere più domande alla stessa risposta aggiungendo semplicemente varianti alle domande.
### ? Aren't you feeling happy today?
- Feeling cheerful?
```markdown
I'm quite happy, thank you.
```
Filtri in QnA Maker
I filtri in QnA Maker sono semplici coppie chiave-valore che è possibile usare per limitare i risultati della ricerca, migliorare le risposte e archiviare il contesto.
Usare la sintassi seguente per aggiungere filtri:
***Filters:***
- name = value
- name = value
Ecco un esempio di come usare un filtro:
### ? Where can I get coffee?
- I need coffee
**Filters:**
- location = seattle
```markdown
You can get coffee in our Seattle store at 1 pike place, Seattle, WA
```
### ? Where can I get coffee?
- I need coffee
**Filters:**
- location = portland
```markdown
You can get coffee in our Portland store at 52 marine drive, Portland, OR
```
Inserimento di file PDF in QnA Maker
QnA Maker supporta anche l'inserimento di file PDF durante la creazione della knowledge base. Per aggiungere i file che dovranno essere inseriti da QnA Maker, è possibile usare lo schema di riferimento URL. Se il tipo di contenuto dell'URI non è testo o HTML, il parser lo aggiungerà alla raccolta di file per QnA Maker da inserire.
[SurfaceManual.pdf](https://download.microsoft.com/download/2/9/B/29B20383-302C-4517-A006-B0186F04BE28/surface-pro-4-user-guide-EN.pdf)
Riferimenti esterni
I riferimenti esterni sono supportati nel file .qna e usano la sintassi dei collegamenti Markdown.
Fare riferimento a un altro file .qna
Per fare riferimento a un altro file .qna, usare [link name](<.qna file name>)
. I riferimenti possono essere un percorso assoluto o un percorso relativo rispetto al file .qna che li contiene.
Fare riferimento a una cartella che contiene file .qna
Per supportare il riferimento a una cartella contenente altri file .qna, è possibile scegliere tra le soluzioni seguenti:
[link name](<.qna file path>/*)
: cerca i file con estensione qna nel percorso assoluto o relativo specificato.[link name](<.qna file path>/**)
: cerca in modo ricorsivo i file con estensione qna nel percorso assoluto o relativo specificato, incluse le sottocartelle.
Fare riferimento a un URL
Per fare riferimento a un URL che QnA Maker dovrà inserire durante la creazione della knowledge base, è possibile usare [link name](<URL>)
.
Fare riferimento da un file specifico
È anche possibile aggiungere riferimenti a espressioni definite in un file specifico in una sezione intent o come coppie domanda/risposta.
[link name](<.lu file path>#<INTENT-NAME>)
: trova tutte le espressioni trovate in <INTENT-NAME> nel file con estensione lu e le aggiunge all'elenco di domande in cui è specificato il riferimento.[link name](<.lu file path>#*utterances*)
: trova tutte le espressioni nel file con estensione lu e le aggiunge all'elenco di domande in cui è specificato il riferimento.[link name](<.qna file path>#?)
: trova domande da tutte le coppie QnA definite nel file con estensione qna e le aggiunge all'elenco di espressioni in cui è specificato questo riferimento.[link name](<.qna folder>/*#?)
: trova tutte le domande di tutti i file con estensione qna nella cartella specificata e le aggiunge all'elenco di espressioni in cui è specificato questo riferimento.
Ecco un esempio dei riferimenti precedenti:
> QnA URL reference
[QnaURL](/azure/ai-services/qnamaker/)
> Include all content in ./kb1.qna
[KB1](./kb1.qna)
> Look for all .qna files under a path
[ChitChat](./chitchat/*)
> Recursively look for .qna files under a path including subfolders.
[ChitChat](../chitchat/resources/**)
Descrizione modello
È possibile includere le informazioni di configurazione per l'applicazione LUIS o la knowledge base di QnA Maker nel file .qna per consentire al parser di gestire correttamente il contenuto Language Understanding.
Nota
Language Understanding (LUIS) verrà ritirato il 1° ottobre 2025. A partire dal 1° aprile 2023, non sarà possibile creare nuove risorse LUIS. Una versione più recente di Language Understanding è ora disponibile come parte del linguaggio di intelligenza artificiale di Azure.
CLU (Conversational Language Understanding), una funzionalità del linguaggio di intelligenza artificiale di Azure, è la versione aggiornata di LUIS. Per altre informazioni sul supporto per la comprensione del linguaggio in Bot Framework SDK, vedere Comprensione del linguaggio naturale.
Ecco come aggiungere le informazioni di configurazione cantando > !#:
> !# @<property> = <value>
> !# @<scope>-<property> = <value>
> !# @<scope>-<property> = <semicolon-delimited-key-value-pairs>
Si noti che tutte le informazioni passate in modo esplicito tramite gli argomenti dell'interfaccia della riga di comando sostituiranno le informazioni presenti nel file .qna.
> Parser instruction - this is optional; unless specified, the parser will default to the latest version.
> !# @version = 1.0
> QnA Maker KB description
> !# @kb.name = my qna maker kb name
> Source for a specific QnA pair
> !# @qna.pair.source = <source value>
Contenuto per più turni
Per rappresentare il contenuto per più turni in formato .qna, si usa la notazione per i collegamenti Markdown. I collegamenti vengono specificati nel modo seguente:
- [display text](#<ID or question>)
Facoltativamente, è possibile includere context-only
per tutte le richieste disponibili solo contestualmente per una domanda. Per altre informazioni sull'uso di context
, vedere la sezione relativa all'aggiunta di una coppia domanda/risposta esistente come richiesta di completamento.
- [tell me a joke](#?joke) `context-only`
Richieste di completamento
Per creare richieste di completamento, gli sviluppatori possono scegliere di usare direttamente una domanda come richiesta di completamento o assegnare un ID esplicito a una coppia domanda/risposta.
Usare direttamente una domanda
La prima coppia domanda/risposta con il testo del collegamento definito come question
verrà aggiunta come richiesta. Se è necessario un controllo più esplicito, usare invece gli ID.
Quando si usa direttamente una domanda, usare la convenzione Markdown e sostituire gli spazi con trattini ( ad esempio, usare #?when-is-the-portland-store-open
invece di #?when is the portland store open
). Il parser farà del suo meglio per trovare il collegamento.
# ?store hours
```
Most our stores are open M-F 9AM-10PM.
```
**Prompts:**
- [Seattle store](#?seattle)
- [Portland store](#?when-is-the-portland-store-open)
# ?seattle
```
The Seattle store is open M-F 9AM-10PM.
```
# ?when is the portland store open
- portland store hours
```
The Portland store is open 24/7.
```
Suggerimento
Il collegamento non verrà effettivamente eseguito come collegamento selezionabile nella maggior parte dei renderer Markdown.
Assegnare un ID esplicito a una coppia domanda/risposta
Assegnare gli ID a ogni richiesta con un numero. Nell'esempio seguente è possibile vedere che a ogni negozio è stato assegnato un valore numerico diverso.
# ?store hours
```
Most our stores are open M-F 9AM-10PM.
```
**Prompts:**
- [Seattle store](#1)
- [Portland store](#2)
<a id = "1"></a>
# ?seattle
```
The Seattle store is open M-F 9AM-10PM.
```
<a id = "2"></a>
# ?when is the portland store open
- portland store hours
```
The Portland store is open 24/7.
```
Risorse aggiuntive
- Per informazioni sul formato di file .lu, vedere Formato di file .lu.