In diesem Dokument wird beschrieben, wie Sie QueryData testen und die Kontextdatei aktualisieren. Sie können die Fähigkeit von QueryData testen, SQL-Abfragen aus Fragen in natürlicher Sprache zu generieren. Wenn eine generierte Abfrage nicht korrekt ist, können Sie die Kontextset-Datei aktualisieren.
Weitere Informationen zu Kontextgruppen finden Sie unter Kontextgruppen – Übersicht.Hinweis
Achten Sie darauf, dass bereits ein Kontextset erstellt und die Kontextset-Datei in den QueryData-Agenten hochgeladen wurde. Weitere Informationen finden Sie unter Kontextsätze in AlloyDB Studio verwalten.
Wenn Sie Kontextset-Dateien herunterladen, aktualisieren und hochladen möchten, muss der IAM-Nutzer die Rolle „Dataplex Catalog Editor“ (roles/dataplex.catalogEditor) oder „Dataplex Catalog Admin“ (roles/dataplex.catalogAdmin) für das Projekt haben. Weitere Informationen finden Sie unter Berechtigungen für Kontextgruppen.
QueryData testen
So testen Sie ein QueryData-Objekt:
Rufen Sie in der Google Cloud Console die Seite „AlloyDB“ auf.
Wählen Sie einen Cluster aus der Liste aus.
Klicken Sie im Navigationsmenü auf AlloyDB Studio.
Melden Sie sich mit der Authentifizierung über Identity and Access Management in Studio an.
Klicken Sie im Bereich Explorer neben dem verwendeten Kontextsatz auf Aktionen ansehen.
Klicken Sie auf Kontextset testen.
Klicken Sie im Abfrageeditor auf SQL generieren, um den Bereich Help me code zu öffnen.
Geben Sie im Editor eine Frage in natürlicher Sprache ein, um eine SQL-Abfrage zu generieren, und klicken Sie auf Generieren.
Prüfen Sie die SQL-Abfrage auf Richtigkeit. Klicken Sie auf Einfügen, um die Abfrage dem Editor hinzuzufügen.
Kontextset herunterladen und aktualisieren
Wenn Sie mit der generierten SQL-Abfrage für eine Frage in natürlicher Sprache nicht zufrieden sind, laden Sie die vorhandene Kontextset-Datei herunter. Anschließend können Sie die Abfragevorlage prüfen und aktualisieren und die aktualisierte Kontextdatei noch einmal in den Agenten hochladen.
So laden Sie einen Kontextsatz herunter und aktualisieren ihn:
- Klicken Sie im Bereich Explorer neben dem verwendeten Kontextsatz auf Aktionen ansehen.
- Klicken Sie auf Kontextdatei herunterladen.
- Folgen Sie der Anleitung unter Kontextsets mit dem Context-Engineering-Agenten erstellen, um den Kontext mit zusätzlichen Abfragepaaren zu aktualisieren.
- Klicken Sie im Bereich Explorer neben dem verwendeten Kontextsatz auf Aktionen ansehen.
- Klicken Sie auf Kontextgruppe bearbeiten.
- Klicken Sie im Abschnitt Kontextsatzdatei hochladen auf Durchsuchen und wählen Sie die aktualisierte Kontextsatzdatei aus.
- Klicken Sie auf Speichern, um den Kontextsatz zu aktualisieren.
Wenn Sie mit der Genauigkeit der Antworten zufrieden sind, können Sie den Endpunkt QueryData verwenden, um Ihre Anwendung mit dem Kontextset zu verbinden.
Kontextset-ID ermitteln
Wenn Sie eine Datenanwendung mit dem QueryData-Agenten verbinden möchten, benötigen Sie die ID des Kontextsets.
Rufen Sie in der Google Cloud Console die Seite „AlloyDB“ auf.
Wählen Sie einen Cluster aus der Liste aus.
Klicken Sie im Navigationsmenü auf AlloyDB Studio.
Melden Sie sich mit der Authentifizierung von Identity and Access Management in Studio an.
Klicken Sie im Bereich Explorer neben dem verwendeten Kontextsatz auf Aktionen ansehen.
Klicken Sie auf Kontextgruppe bearbeiten.
Notieren Sie sich die Kontext-ID unter Kontextset-ID. Das Format der Kontextset-ID ähnelt
projects/PROJECT_ID/locations/LOCATION/contextSetGroups/GROUP_ID/contextSets/CONTEXT_SET_ID@v1.
QueryData mit Anwendung verbinden
Legen Sie die Kontext-Set-ID im Methodenaufruf QueryData fest, um erstellten Kontext für Datenbankdatenquellen wie AlloyDB, Spanner, Cloud SQL, Cloud SQL for PostgreSQL, Firestore und Bigtable bereitzustellen. Weitere Informationen finden Sie unter Kontext für Daten-Agenten für Datenbank-Datenquellen definieren.
Nachdem Sie den Kontextsatz getestet haben, können Sie die Datenbank-Datenquelle in Ihrem QueryData-Aufruf referenzieren.
Beispiel für eine QueryData-Anfrage mit selbst erstelltem Kontext
Das folgende Beispiel zeigt eine QueryData-Anfrage mit der alloydb-Datenbankdatenquelle. Das Feld agent_context_reference.context_set_id wird verwendet, um auf vorab erstellten Kontext zu verweisen, der in der Datenbank gespeichert ist.
{ "parent": "projects/context-set-project/locations/us-central1", "prompt": "How many accounts in the Prague region are eligible for loans? A3 contains the data of region.", "context": { "datasource_references": [ { "alloydb": { "database_reference": { "project_id": "context-set-project", "region": "us-central1", "cluster_id": "sqlgen-magic", "instance_id": "context-set-primary", "database_id": "financial" }, "agent_context_reference": { "context_set_id": "projects/context-set-project/locations/us-central1/contextSets/bdf_pg_all_templates" } } } ] }, "generation_options": { "generate_query_result": true, "generate_natural_language_answer": true, "generate_disambiguation_question": true, "generate_explanation": true } }
Der Anfragetext enthält die folgenden Felder:
prompt: Die Frage des Endnutzers in natürlicher Sprache.context: Enthält Informationen zu den Datenquellen.datasource_references: Gibt den Typ der Datenquelle an.alloydb: Erforderlich, wenn die Datenbank abgefragt wird. Dieses Feld ändert sich je nach der Datenbank, die Sie abfragen.database_reference: Gibt Informationen zu Ihrer Datenbankinstanz an.cluster_id: Die Cluster-ID der Datenbankinstanz.project_id: Die Projekt-ID der Datenbankinstanz.region: Die Region der AlloyDB-Instanz.instance_id: Die Instanz-ID der AlloyDB-Instanz.database_id: Die ID der Datenbank.
agent_context_reference: Links zu verfasstem Kontext in der Datenbank.context_set_id: Die vollständige Kontext-Set-ID des in der Datenbank gespeicherten Kontexts. Beispiel:projects/context-set-project/locations/us-central1/contextSets/bdf_gsql_gemini_all_templates.
generationOptions: Konfiguriert den Typ der zu generierenden Ausgabe.generate_query_result: Legen Sie „true“ fest, um die Abfrageergebnisse zu generieren und zurückzugeben.generate_natural_language_answer: Optional. Wenn auf „true“ gesetzt, wird eine Antwort in natürlicher Sprache generiert.generate_explanation: Optional. Wenn diese Option auf „true“ gesetzt ist, wird eine Erklärung der SQL-Abfrage generiert.generate_disambiguation_question: Optional. Wenn diese Option auf „true“ gesetzt ist, werden Fragen zur Mehrdeutigkeitsauflösung generiert, wenn die Abfrage mehrdeutig ist.
QueryData-Beispielantwort
Hier ist ein Beispiel für eine erfolgreiche Antwort auf einen QueryData-Aufruf:
{
"generated_query": "-- Count the number of accounts in Prague that are eligible for loans\nSELECT\n COUNT(DISTINCT \"loans\".\"account_id\")\nFROM \"loans\"\nJOIN \"district\" -- Join based on district ID\n ON \"loans\".\"district_id\" = \"district\".\"district_id\"\nWHERE\n \"district\".\"A3\" = 'Prague'; -- Filter for the Prague region",
"intent_explanation": "The question asks for the number of accounts eligible for loans in the Prague region. I need to join the `district` table with the `loans` table to filter by region and count the distinct accounts. The `A3` column in the `district` table contains the region information, and I'll filter for 'Prague'. The `loans` table contains information about loans, including the `account_id` and `district_id`. I will join these two tables on their respective district IDs.",
"query_result": {
"columns": [
{
"name": "count"
}
],
"rows": [
{
"values": [
{
"value": "2"
}
]
}
],
"total_row_count": 1
},
"natural_language_answer": "There are 2 accounts in Prague that are eligible for loans."
}