最近研学过程中发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击链接跳转到网站人工智能及编程语言学习教程。读者们可以通过里面的文章详细了解一下人工智能及其编程等教程和学习方法。下面开始对正文内容的介绍。
标签:大模型、Text2SQL、NL2Chart、PandasAI、LangChain、可视化、零代码 —- 1. 背景:业务人员想要“说句话就出图” 公司每月经营复盘会前,业务同学把需求甩给数据团队: “给我一张最近 30 天 GMV 趋势图,按渠道拆分。” 经典流程: 需求 → 数据同学写 SQL → Excel 透视 → 出图 → 返工 → 3 小时没了。 目标:一句话直接出图,且 不暴露数据库,不泄露原始数据。 —- 2. 技术选型:LLM + PandasAI + 本地缓存 模块 选型 原因 大模型 gpt-3.5-turbo-16k 便宜、代码能力强 数据引擎 DuckDB + PandasAI 本地 parquet,无 SQL 暴露 可视化 Altair 语法简洁,自动生成交互图 交互 Streamlit 10 分钟出界面 —- 3. 系统流程:一句话 → 图表 用户输入自然语言 ↓ LangChain Prompt LLM 生成 DuckDB SQL + Altair Python ↓ Streamlit exec 图表渲染 + 缓存
—- 4. 100 行核心代码
# app.py
import streamlit as st
from pandasai import SmartDataframe
from pandasai.llm import OpenAI
import duckdb, os, altair as alt
@st.cache_data
def load_data():
return duckdb.sql("SELECT * FROM 'sales.parquet'").df()
llm = OpenAI(api_token=os.getenv("OPENAI_API_KEY"))
df = load_data()
sdf = SmartDataframe(df, config={"llm": llm})
query = st.text_input("说句话出图:")
if query:
try:
code = sdf.chat(query)
exec(code) # 生成 alt.Chart(…)
except Exception as e:
st.error("LLM 写错代码啦:" + str(e))
—- 5. Prompt 模板(让 LLM 不乱造)
PROMPT = """
你是一名数据分析师,只使用 DuckDB SQL 和 Altair。
表字段:date, channel, gmv, orders。
要求:
1. 生成 DuckDB SQL 过滤数据;
2. 生成 alt.Chart 代码;
3. 不要暴露真实数据。
"""
—- 6. 实测案例 用户输入 生成图表 耗时 “最近 30 天 GMV 趋势” 折线图 1.2 s “各渠道 GMV 占比” 环形图 1.1 s “GMV 与订单量散点” 气泡图 1.3 s —- 7. 性能 & 安全 • 数据本地:sales.parquet 仅 50 MB,不落盘。 • 权限隔离:LLM 拿不到原始数据,仅见聚合结果。 • 缓存:相同提问 0.2 s 返回结果。 —- 8. 踩坑日记 坑 解决 LLM 写 SQL 字段名大小写错 DuckDB 不区分大小写,自动容错 图表中文乱码 Altair 默认字体 → 指定思源黑体 多次提问上下文冲突 每次重置 SmartDataframe 实例 —- 9. 一键部署
pip install pandasai streamlit duckdb altair
streamlit run app.py
浏览器打开 http://localhost:8501,业务同学即可自助出图。 —- 10. 结语:让 SQL 消失在对话里 当业务人员只需要说 “给我一张图”, 当数据团队不再需要熬夜写 SQL, 你会发现 大模型真正的 killer app 是“消灭中间层”。 如果这篇文章帮你节省了一次返工,欢迎点个 Star; 也欢迎留言聊聊你让 LLM 写过哪些“离谱”的 SQL!
评论前必须登录!
注册