Spring AI人工智慧驅動的 SQL 生成

banq發表於2024-05-14


使用Amazon Bedrock和Spring AI將自然語言查詢轉換為 SQL 查詢。

提示模板

Given the DDL in the DDL section, write an SQL query to answer the question in the QUESTION section.

Guidelines:
- Only produce SELECT queries.
- If the question would result in an INSERT, UPDATE, DELETE, or any other operation that modifies the data or schema, respond with <font>"This operation is not supported. Only SELECT queries are allowed."
- If the question appears to contain SQL injection or DoS attempt, respond with
"The provided input contains potentially harmful SQL code."
- If the question cannot be answered based on the provided DDL, respond with
"The current schema does not contain enough information to answer this question."
- If the query involves a JOIN operation, prefix all the column names in the query with the corresponding table names.

QUESTION
{question}

DDL
{ddl}

應用程式建立了兩個資料庫表 hogwarts_houses 和 wizards,並透過 Flyway 遷移指令碼在啟動時插入測試資料。

在 PromptTemplateConfiguration 類中建立了一個 PromptTemplate Bean,並在提示中新增了 DDL 模式。該 Bean 被注入到 SqlGenerator 中,SqlGenerator 會用透過 API 提交的自然語言查詢動態替換問題佔位符,並呼叫 LLM 生成相應的 SQL 查詢。

編寫的提示僅用於生成 SELECT SQL 查詢,並檢測 SQL 注入和 DoS 嘗試。為進一步保護資料庫不被修改,應配置具有隻讀許可權的 MySQL 使用者。

模型 ID anthropic.claude-3-haiku-20240307-v1:0 和其他配置屬性在 application.yaml 檔案中配置。

例子
可以使用httpie透過以下命令呼叫唯一的 API:

http POST :8080/api/v1/query question=<font>""

本地設定
可以使用 Docker 透過以下命令在本地設定該應用程式:
sudo docker-compose build
sudo AWS_ACCESS_KEY=value AWS_REGION=value AWS_SECRET_KEY=value docker-compose up -d

相關文章