
_出典:Gartner (2023)_
Gartner によると、“Quick Wins” は以下のようなユースケースです。
これらのプロジェクトは、インフラストラクチャの大規模なオーバーホールを必要とせずに、生成 AI から ROI (Return On Investment) の早期達成を求める組織にとって理想的です。
Alibaba Cloud のソリューションは、Quick Win の例です。理由は以下のとおりです。

_出典:Gartner, Inc. (2024)_
Gartner の分析では、コード生成 (text-to-SQL を含む) は、“Likely Wins” 象限、つまり高い実現可能性、高い価値、低いリスクに分類されます。 要点:
1. コスト効率:
2. スケーラビリティ:
3. 短期間で価値を実現:
組織が text-to-SQL ソリューションを採用することで、Gartner の推奨事項に合わせて、低リスクで影響の大きい AI への取り組みを優先できます。 自動化だけではなく、最小限の先行投資で生産性を高め、データ主導の意思決定を加速することができます。
より深い洞察については、Gartner のレポートをご覧ください。
この構造では、ビジネスの連携、リスク軽減、実用的な ROI が強調されています。経営幹部や意思決定者に最適です。

SQL クエリの作成には時間がかかり、エラーが発生しやすく、コストもかかります。 顧客データを分析する場合でも、レポートを生成する場合でも、自然言語による質問を SQL に変換するには、データベースを深く理解する必要があります。 AI を使用してこのプロセスを自動化し、コストを節約できるとしたらどうでしょうか。
この記事では、最先端の大規模言語モデル (LLM) である Alibaba Cloud Qwen3 (この例では Qwen-Max を使用) を活用した text-to-SQL チャットボット を構築します。 このチャットボットは、PostgreSQL データベースに接続し、人間によるクエリを SQL に変換し、結果を返します。SQL を 1 行も手動で書く必要はありません。
Alibaba Cloud の費用対効果の高い API 料金と Qwen-Max の高い精度により、開発時間_と_クラウド費用の両方を削減できます。
Alibaba Cloud にアクセスし、サインアップします。 ログイン後、Model Studio コンソール (リンク) に移動します。
[API Key Management] ページ (リンク) に移動し、新しい API キーを作成します。 API キーは安全に保管してください。Qwen-Max へのアクセストークンです。
仮想環境を作成し、依存関係をインストールします。
# 仮想環境の作成
python3 -m venv venv
source venv/bin/activate
# 必要なパッケージのインストール
pip install openai python-dotenv psycopg2-binary tabulate
以下の内容を requirements.txt に保存します。
openai
python-dotenv
psycopg2-binary
tabulate
用意されたサンプルコードを使用して簡単なテストを実行し、API キーが機能することを確認します。
import os
from openai import OpenAI
try:
client = OpenAI(
# 環境変数が設定されていない場合は、次の行を API キーに置き換えます:api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen-plus", # モデルリスト:https://www.alibabacloud.com/help/en/model-studio/getting-started/models
messages=[
{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': 'Who are you?'}
]
)
print(completion.choices[0].message.content)
except Exception as e:
print(f"Error message: {e}")
print("For more information, see: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code")
ApsaraDB for PostgreSQL を使用して、マネージド PostgreSQL インスタンスを設定します。 詳細については、こちらのドキュメントをご参照ください。
もう 1 つの方法は、このステップバイステップガイドに従って、Alibaba Cloud で PostgreSQL 17 データベースをプロビジョニングし、psql を使用してローカルマシンに接続することです。

上図に示すインターフェースを使用して、PostgreSQL 17 インスタンスを設定します。
| 設定 | 操作 |
|---|---|
| リージョン | リージョンを選択します (例:シンガポール)。 |
| データベースエンジン | [PostgreSQL] を選択し、ドロップダウンから [バージョン17] を選択します。 |
| SLR 権限 | セキュリティを強化するため、“Authorized” がチェックされていることを確認します。 |
| エディション | 冗長性を確保するため、[高可用性エディション] を選択します。 |
| プロダクトタイプ | ほとんどのユースケースでは、[Standard] を選択します。 |
| ストレージタイプ | 高性能 I/O 用の [高性能クラウドディスク] を選択します。 |
| ネットワークタイプ | 安全な分離のために [VPC] を選択します。 |
| ホワイトリストに追加 | [はい] を選択肢、ローカル IP または VPC からの接続を許可します。 |
インスタンスがアクティブになったことを確認し、
psql でローカルに接続するローカルマシンに psql をインストールし (インストールされていない場合)、以下の方法で接続します。
psql -h <エンドポイント> -U <ユーザー名> -d <データベース名> -p <ポート>
それぞれのプレースホルダーをお客様の設定に合わせて置き換えます (例:デフォルトのデータベースを -d postgres に設定)。
詳細な設定については、Alibaba Cloud の公式ドキュメントをご参照ください。
macOS / Linux で、以下を実行します。
brew install postgresql # macOS
sudo apt install postgresql-client # Ubuntu
DVD レンタルサンプルデータベース をダウンロードして復元します。
# データベースを復元
pg_restore -U your_user -h your_host -p your_port -d dvdrental dump_file.tar
psql または pgAdmin でテストを実行するサンプルクエリを実行して、すべてが正常に機能することを確認します。
SELECT * FROM film LIMIT 5;
以下は、Qwen-Max を使用して自然言語クエリを SQL に変換し、PostgreSQL で実行するスクリプトです。
import os
import psycopg2
from openai import OpenAI
from dotenv import load_dotenv
from tabulate import tabulate
load_dotenv()
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
)
def generate_sql_query(natural_language_query):
system_prompt = """
You are a helpful assistant trained to convert natural language queries into SQL statements.
The database schema includes the following tables:
- film_category (category_id, name)
- film (film_id, title, category_id)
- inventory (inventory_id, film_id, store_id)
- rental (rental_id, inventory_id, customer_id, return_date, rental_date)
- payment (payment_id, customer_id, staff_id, rental_id, amount, payment_date)
Generate a valid SQL query that answers the user's question.
"""
response = client.chat.completions.create(
model="qwen-max",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": natural_language_query}
],
temperature=0.2
)
sql_query = response.choices[0].message.content.strip()
# "```sql" と "```" の間の SQL を抽出
start_marker = "```sql"
end_marker = "```"
start_idx = sql_query.find(start_marker)
end_idx = sql_query.find(end_marker, start_idx + len(start_marker))
if start_idx != -1 and end_idx != -1:
sql_query = sql_query[start_idx + len(start_marker):end_idx]
elif start_idx != -1:
sql_query = sql_query[start_idx + len(start_marker):]
elif end_idx != -1:
sql_query = sql_query[:end_idx]
sql_query = sql_query.strip()
# 'select' キーワードにフォールバック
if not sql_query.lower().startswith("select"):
select_index = sql_query.lower().find("select")
if select_index != -1:
sql_query = sql_query[select_index:]
return sql_query.strip()
def execute_sql_query(sql_query):
conn = psycopg2.connect(
dbname=os.getenv("DB_NAME"),
user=os.getenv("DB_USER"),
password=os.getenv("DB_PASSWORD"),
host=os.getenv("DB_HOST"),
port=os.getenv("DB_PORT")
)
cursor = conn.cursor()
try:
cursor.execute(sql_query)
columns = [desc[0] for desc in cursor.description]
rows = cursor.fetchall()
return columns, rows
except Exception as e:
print(f"Error executing SQL: {e}")
return [], []
finally:
cursor.close()
conn.close()
def main():
user_query = "show the sum of amount by each payment id that is greater then 10"
print("Generating SQL query...")
sql_query = generate_sql_query(user_query)
print("Generated SQL:")
print(sql_query)
print("\nExecuting SQL query...")
columns, rows = execute_sql_query(sql_query)
if columns and rows:
print("\nQuery Result:")
print(tabulate(rows, headers=columns, tablefmt="psql"))
else:
print("No results returned.")
if __name__ == "__main__":
main()
generate_sql_query():Qwen-Max を使用して自然言語を SQL に変換します。execute_sql_query():PostgreSQL に接続し、生成された SQL を実行します。main():フローを調整します。
上図のような結果が得られるはずです。 このコードは、さらに開発および変更を行ってダッシュボードを作成することができ、また ChatBI と統合できます。 QuickBI の ChatBI ほど高度ではありませんが、悪くありません。
psql または pgAdmin で SQL 出力を直接テストします。print(repr(sql_query)) を使用して隠し文字をデバッグします。このチャットボットはほんの始まりに過ぎません。 Alibaba Cloud の Qwen シリーズを使用すると、以下のように拡張できます。
コストを削減し、生産性を高める準備はできましたか? この text-to-SQL チャットボットから始めて、AI を活用した自動化の可能性を最大限に引き出してみましょう。
この記事は英語から翻訳されました。 元の記事はこちらからご覧いただけます。
119 posts | 4 followers
FollowRegional Content Hub - February 26, 2024
Regional Content Hub - July 7, 2025
Regional Content Hub - August 5, 2024
Regional Content Hub - May 13, 2024
Regional Content Hub - November 18, 2024
Regional Content Hub - April 21, 2025
119 posts | 4 followers
Follow
Tongyi Qianwen (Qwen)
Top-performance foundation models from Alibaba Cloud
Learn More
Alibaba Cloud Model Studio
A one-stop generative AI platform to build intelligent applications that understand your business, based on Qwen model series such as Qwen-Max and other popular models
Learn More
Alibaba Cloud for Generative AI
Accelerate innovation with generative AI to create new business success
Learn More
AgentBay
Multimodal cloud-based operating environment and expert agent platform, supporting automation and remote control across browsers, desktops, mobile devices, and code.
Learn MoreMore Posts by Regional Content Hub