
_出典: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 を活用した自動化の可能性を最大限に引き出してみましょう。
この記事は英語から翻訳されました。 元の記事はこちらからご覧いただけます。
144 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
144 posts | 4 followers
Follow
Qwen
Full-range, open-source, multimodal, and multi-functional
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
Token Plan
Build more, spend less. One plan, every modality.
Learn More
Alibaba Cloud for Generative AI
Accelerate innovation with generative AI to create new business success
Learn MoreMore Posts by Regional Content Hub