从零开始:在魔搭平台构建AI First的SQL生成应用,让数据库查询变得如此简单!💻

引言:AI First与魔搭的完美融合

在当今的AI开发浪潮中,"AI First"理念正在重塑我们的开发方式。正如学习笔记中提到的,我们不再仅仅把AI作为应用的附加功能,而是将其作为应用的核心驱动力。今天,我将带大家体验如何在**魔搭(ModelScope)**平台上,从零开始构建一个AI First的自然语言生成SQL应用,让数据库查询变得如此简单!✨

🌟 魔搭平台小贴士:魔搭是阿里云于2022年在云栖大会推出的AI大模型开源社区,定位为聚焦多模态AI模型的开源平台,提供从模型训练到部署的全流程服务。截至2025年2月,魔搭社区已汇聚超4.5万个开源模型和5500余项MCP服务,服务全球200余个国家超过2000万用户。


为什么选择魔搭?🚀

魔搭平台提供了无与伦比的开发体验,让我们从零开始构建应用:

开箱即用:预配置的开发环境,无需安装依赖
模型丰富:数千个高质量开源模型,直接调用无需训练
生态完善:无缝对接阿里云PAI、函数计算等基础设施
社区强大:280万开发者社区,遇到问题快速解决

在魔搭平台上,我们能直接使用阿里云的算力和模型资源,让开发变得如此简单。下面,让我们一步步体验如何在魔搭上构建一个自然语言生成SQL的应用。


实战:在魔搭中构建SQL生成应用

1️⃣ 创建魔搭Notebook

为什么重要:魔搭Notebook是魔搭平台的核心功能,它提供了交互式的开发环境,无需配置本地环境,一键启动即可开始编码。

操作步骤

  1. 访问魔搭官网,申请魔搭账号
  2. 在左侧边栏点击 “我的Notebook”
  3. 启动 “CPU环境”
  4. 点击 “Notebook 下 Python3(ipykernel)”

具体操作步骤如下图所示:

1

2

接下来就可以编写Python代码了

💡 小技巧:魔搭Notebook默认提供GPU环境,对于AI应用开发非常友好,无需额外配置。

2️⃣ 创建数据库(SQLite)

import sqlite3

# 创建数据库连接
conn = sqlite3.connect("employee.db")
cursor = conn.cursor()

# 创建表
cursor.execute("""
CREATE TABLE IF NOT EXISTS employees (
    id INTEGER PRIMARY KEY,
    name TEXT,
    department TEXT,
    salary INTEGER
)
""")

# 插入测试数据
sample_data = [
    (1, "张三", "开发部", 32000),
    (2, "李四", "销售部", 22000),
    (3, "王五", "开发部", 34000),
    (4, "赵六", "销售部", 12000)
]
cursor.executemany('INSERT INTO employees VALUES (?,?,?,?)', sample_data)
conn.commit()

代码解释

  • sqlite3.connect("employee.db"):创建SQLite数据库连接
  • cursor.execute():执行SQL语句
  • CREATE TABLE IF NOT EXISTS:如果表不存在则创建
  • executemany():批量插入多条记录
  • conn.commit():提交事务,确保数据写入数据库

💡 为什么用SQLite:SQLite是轻量级嵌入式数据库,无需单独安装,非常适合开发和测试环境。

3️⃣获取数据库Schema

# 获取数据库Schema
schema = cursor.execute("PRAGMA table_info(employees)").fetchall()
schema_str = "CREATE TABLE EMPLOYEES (\n" + "\n".join([f"{col[1]} {col[2]}" for col in schema]) + "\n)"
print("数据库Schema:")
print(schema_str)

代码解释

  • PRAGMA table_info(employees):获取表的元信息(列名、数据类型等)
  • fetchall():获取所有元信息
  • schema_str:构建可读的数据库Schema字符串

输出结果

数据库Schema:
CREATE TABLE EMPLOYEES (
id INTEGER
name TEXT
department TEXT
salary INTEGER
)

📌 关键点:AI模型需要了解数据库结构才能生成正确的SQL,因此获取并提供Schema是关键步骤。

4️⃣使用魔搭模型生成SQL

from openai import OpenAI

# 初始化客户端(魔搭支持的DeepSeek模型)
client = OpenAI(
    base_url="https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation",
    api_key="YOUR_API_KEY"  # 在魔搭获取API Key
)

def generate_sql(query, schema):
    prompt = f"""
    这是一个数据库的Schema:
    {schema}
    根据这个Schema,你能输出一个SQL查询来回答以下问题吗?
    只输出SQL查询,不要输出任何其他内容,也不要带任何格式。
    问题:{query}
    """
    
    response = client.chat.completions.create(
        model="qwen-max",  # 魔搭平台支持的模型
        messages=[{"role":"user", "content":prompt}]
    )
    return response.choices[0].message.content

# 生成SQL查询
question = "开发部部门员工的姓名和工资是多少?"
sql_query = generate_sql(question, schema_str)
print("生成的SQL查询:")
print(sql_query)

代码解释

  • base_url:魔搭API的URL,使用阿里云的DashScope服务
  • api_key:在魔搭控制台获取的API密钥
  • model="qwen-max":魔搭平台支持的通义千问最大版本模型
  • prompt:提示词工程,指导模型生成SQL
  • messages:对话历史,指定AI的角色和任务

输出结果

生成的SQL查询:
SELECT name, salary FROM employees WHERE department = '开发部';

💡 为什么用Qwen模型:Qwen是阿里云自研的超大规模语言模型,特别适合中文场景,对数据库Schema的理解能力很强。

5️⃣执行SQL查询

# 执行生成的SQL
cursor.execute(sql_query)
results = cursor.fetchall()
print("查询结果:")
for row in results:
    print(row)

代码解释

  • cursor.execute():执行SQL查询
  • fetchall():获取所有查询结果
  • for row in results:遍历并打印结果

输出结果

查询结果:
('张三', 32000)
('王五', 34000)

实际应用场景:AI First的无限可能

在魔搭平台上,我们可以轻松构建各种AI First应用:

  1. 智能客服系统:用户说"查一下我的订单状态",AI自动调用数据库获取信息
  2. 数据分析工具:业务人员说"统计一下销售部员工的平均工资",AI自动生成SQL并返回结果
  3. 电商应用:用户说"帮我找500-1000元的手机",AI自动生成SQL查询并返回产品列表

🌟 魔搭小技巧:在魔搭平台的"应用市场"中,你可以找到大量现成的AI应用模板,直接修改使用,无需从零开始。


结语:拥抱魔搭,拥抱AI First

魔搭不仅是一个模型平台,更是AI First开发的起点。它让开发者能够专注于应用创新,而不是基础环境配置。在魔搭平台上,我们能轻松实现:

  • 从自然语言到SQL的无缝转换
  • 快速构建AI应用原型
  • 无缝对接阿里云基础设施

“AI First不是口号,而是我们开发的起点。在魔搭平台上,让AI成为你应用的驱动力。” 💡

现在,就登录魔搭,开始你的AI First之旅吧!✨

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐