Der selbst erstellte Kontext ist eine Anleitung, die Daten-KI-Agent-Inhaber bereitstellen können, um das Verhalten eines Daten-KI-Agenten zu beeinflussen und die Antworten der API zu optimieren. Ein effektiver selbst erstellter Kontext liefert Ihren Daten-KI-Agenten der Conversational Analytics API nützliche Informationen, um Fragen zu Ihren Datenquellen zu beantworten.
Auf dieser Seite wird beschrieben, wie Sie selbst erstellten Kontext für Datenbankdatenquellen mit der QueryData-Methode bereitstellen. Bei Datenbankdatenquellen wie AlloyDB, GoogleSQL for Spanner, Cloud SQL und Cloud SQL for PostgreSQL stellen Sie den erstellten Kontext bereit, indem Sie den Kontext zuerst in der Datenbank definieren und speichern und dann in Ihrem QueryData-Aufruf darauf verweisen.
Wenn Sie Kontext mit hoher Genauigkeit bereitstellen, kann die API genauere und relevantere SQL-Abfragen und Antworten generieren.
Hinweise
- Es ist ein Daten-Agent mit dem in ihn hochgeladenen Agent-Kontext für eine Datenbank vorhanden. Weitere Informationen finden Sie unter Data Agents für AlloyDB, Data Agents für GoogleSQL for Spanner, Data Agents für Cloud SQL und Data Agents für Cloud SQL for PostgreSQL.
Aktivieren Sie die Cloud SQL Data API für Ihre Instanz so:
gcloud beta sql instances patch INSTANCE_ID --data-api-access=ALLOW_DATA_APIErsetzen Sie
INSTANCE_IDdurch die ID Ihrer Cloud SQL- oder Cloud SQL for PostgreSQL-Instanz.Sie müssen einem IAM-Nutzer oder Dienstkonto auch Datenbankberechtigungen erteilen. Weitere Informationen finden Sie unter Einzelnen IAM-Nutzern oder Dienstkonten in Cloud SQL Datenbankberechtigungen erteilen und Einzelnen IAM-Nutzern oder Dienstkonten in Cloud SQL for PostgreSQL Datenbankberechtigungen erteilen.
Kontext mit QueryData bereitstellen
Wenn Sie die Methode QueryData aufrufen, geben Sie die Datenquelle und Kontextinformationen im Feld QueryDataRequest.context.datasourceReferences an. Für Datenbankquellen müssen Sie eine der folgenden Optionen verwenden:
alloydbfür AlloyDB for PostgreSQLspanner_referencefür GoogleSQL für Spannercloud_sql_referencefür Cloud SQL und Cloud SQL for PostgreSQL
In diesen Verweisen geben Sie die Datenbank und die Tabellen mit dem Feld databaseReference an. Wenn Sie von Ihnen erstellten Kontext einfügen möchten, müssen Sie auch einen agentContextReference angeben, der auf einen context_set_id verweist.
Beispiel für eine QueryData-Anfrage mit selbst erstelltem Kontext
Das folgende Beispiel zeigt eine QueryData-Anfrage mit alloydb. Das Feld agent_context_reference.context_set_id wird verwendet, um auf vorab erstellten Kontext zu verweisen, der in der Datenbank gespeichert ist.
AlloyDB
{ "parent": "projects/cloud-db-nl2sql/locations/us-central1", "prompt": "How many accounts who have region in Prague are eligible for loans? A3 contains the data of region.", "context": { "datasource_references": [ { "alloydb": { "database_reference": { "project_id": "cloud-db-nl2sql", "region": "us-central1", "cluster_id": "sqlgen-magic", "instance_id": "sqlgen-magic-primary", "database_id": "financial" }, "agent_context_reference": { "context_set_id": "projects/cloud-db-nl2sql/locations/us-east1/contextSets/bdf_pg_all_templates" } } } ] }, "generation_options": { "generate_query_result": true, "generate_natural_language_answer": true, "generate_disambiguation_question": true, "generate_explanation": true } }
GoogleSQL für Spanner
{ "parent": "projects/cloud-db-nl2sql/locations/us-central1", "prompt": "How many accounts who have region in Prague are eligible for loans? A3 contains the data of region.", "context": { "datasource_references": [ { "spanner_reference" { "database_reference" { "engine": "GOOGLE_SQL" "project_id": "cloud-db-nl2sql" "region": "us-central1" "instance_id": "evalbench" "database_id": "financial" }, "agent_context_reference": { "context_set_id": "projects/cloud-db-nl2sql/locations/us-east1/contextSets/bdf_pg_all_templates" } } } ] }, "generation_options": { "generate_query_result": true, "generate_natural_language_answer": true, "generate_disambiguation_question": true, "generate_explanation": true } }
Cloud SQL und Cloud SQL for PostgreSQL
{ "parent": "projects/cloud-db-nl2sql/locations/us-central1", "prompt": "How many accounts who have region in Prague are eligible for loans? A3 contains the data of region.", "context": { "datasource_references": [ { "cloud_sql_reference": { "database_reference": { "engine": "MYSQL" "project_id": "cloud-db-nl2sql", "region": "us-central1", "instance_id": "sqlgen-magic-primary", "database_id": "financial" }, "agent_context_reference": { "context_set_id": "projects/cloud-db-nl2sql/locations/us-east1/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 Datenquellentyp an.alloydb: Beim Abfragen der Datenbank erforderlich. Dieses Feld ändert sich je nach der Datenbank, die Sie abfragen.database_reference: Gibt Informationen zu Ihrer Datenbankinstanz an.engine:project_id: Die Projekt-ID der Datenbankinstanz.region: Die Region der Datenbankinstanz.cluster_id: Die Cluster-ID der Datenbankinstanz.instance_id: Die Instanz-ID der Datenbank.database_id: Die ID der Datenbank.
agent_context_reference: Links zum erstellten Kontext in der Datenbank.context_set_id: Die im Kontext des Agenten in der Datenbank gespeicherte ID. Weitere Informationen zum Suchen der Kontext-ID finden Sie unter Agent-Kontext-ID in AlloyDB suchen, Agent-Kontext-ID in GoogleSQL für Spanner suchen, Agent-Kontext-ID in Cloud SQL suchen und Agent-Kontext-ID in Cloud SQL for PostgreSQL suchen.
generationOptions: Konfiguriert den Typ der zu generierenden Ausgabe.generate_query_result: Auf „true“ setzen, 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 dieser Wert auf „true“ gesetzt ist, wird eine Erklärung der SQL-Abfrage generiert.generate_disambiguation_question: Optional. Wenn auf „true“ gesetzt, werden bei mehrdeutigen Anfragen Fragen zur Begriffsklärung generiert.
Beispielantwort QueryData
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."
}