Auf dieser Seite wird beschrieben, wie Sie selbst erstellten Kontext für Daten-KI-Agenten bereitstellen, die Datenbankdatenquellen verwenden, indem Sie die QueryData Methode verwenden.
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.
Für Datenbankdatenquellen wie AlloyDB, GoogleSQL für Spanner, Cloud SQL und Cloud SQL for PostgreSQL stellen Sie selbst 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.
Hinweis
- Sie benötigen einen Daten-KI-Agenten, dessen Agentenkontext für die Datenbank hochgeladen wurde, die Sie abfragen möchten. Weitere Informationen finden Sie unter Daten-KI-Agenten für AlloyDB, Daten-KI-Agenten für GoogleSQL für Spanner, Daten-KI-Agenten für Cloud SQL und Daten-KI-Agenten 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 gewähren. Weitere Informationen finden Sie unter Einzelnen IAM-Nutzern oder Dienstkonten in Cloud SQL Datenbankberechtigungen gewähren und Einzelnen IAM-Nutzern oder Dienstkonten in Cloud SQL for PostgreSQL Datenbankberechtigungen gewähren.
Kontext mit QueryData bereitstellen
Wenn Sie die QueryData Methode 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 selbst erstellten Kontext einbeziehen möchten, müssen Sie auch einen agentContextReference angeben, der auf eine context_set_id verweist.
Beispiel für eine QueryData-Anfrage mit selbst erstelltem Kontext
Im folgenden Beispiel wird eine QueryData-Anfrage mit alloydb gezeigt. Das Feld agent_context_reference.context_set_id wird verwendet, um auf selbst erstellten Kontext zu verweisen, der in der Datenbank gespeichert ist.
AlloyDB
{ "parent": "projects/data-agents-project/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": "data-agents-project", "region": "us-central1", "cluster_id": "sqlgen-magic", "instance_id": "data-agents-primary", "database_id": "financial" }, "agent_context_reference": { "context_set_id": "projects/data-agents-project/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/data-agents-project/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": "data-agents-project" "instance_id": "evalbench" "database_id": "financial" }, "agent_context_reference": { "context_set_id": "projects/data-agents-project/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/data-agents-project/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": "data-agents-project", "region": "us-central1", "instance_id": "data-agents-primary", "database_id": "financial" }, "agent_context_reference": { "context_set_id": "projects/data-agents-project/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 in natürlicher Sprache vom Endnutzer.context: Enthält Informationen zu den Datenquellen.datasource_references: Gibt den Datenquellentyp an.alloydb: Erforderlich beim Abfragen der Datenbank. Dieses Feld ändert sich je nach der Datenbank, die Sie abfragen.database_reference: Gibt Informationen zur Datenbankinstanz an.engine: Die Datenbank-Engine oder der SQL-Dialekt. Optional für AlloyDB. Setzen Sie für Spanner-DatenbankenGOOGLE_SQL. Setzen Sie für Cloud SQL-InstanzenMYSQL. Setzen Sie für Cloud SQL for PostgreSQL-InstanzenPOSTGRESQL.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: Verweist auf selbst erstellten Kontext in der Datenbank.context_set_id: Die Agentenkontext-ID, die in der Datenbank gespeichert ist. Weitere Informationen zum Ermitteln der Kontext-Set-ID finden Sie unter Agentenkontext-ID in AlloyDB finden, Agentenkontext-ID in GoogleSQL für Spanner finden, Agentenkontext-ID in Cloud SQL finden und Agentenkontext-ID in Cloud SQL for PostgreSQL finden.
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 auf „true“ gesetzt, wird eine Erklärung der SQL-Abfrage generiert.generate_disambiguation_question: Optional. Wenn auf „true“ gesetzt, werden Fragen zur Auflösung von Mehrdeutigkeiten generiert, wenn die Abfrage mehrdeutig ist.
Beispiel für eine QueryData-Antwort
Hier ist ein Beispiel für eine erfolgreiche Antwort von einem 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."
}