-
数据检索:从数据库中提取真实数据 -
生成:利用人工智能自然地理解问题并格式化答案
-
问题理解:LLM 分析自然语言问题 -
SQL生成:LLM 将问题转换为 SQL 查询 -
答案格式:LLM 获取原始数据库结果并将其格式化为自然语言。
( "system" , """您是房地产数据库的 SQL 查询专家。
数据库模式:
{schema}
编写 SQL 查询时:
1. 使用 SQLite 的正确 SQL 语法
2. 仅查询存在的表和列
3. 对于文本搜索,请使用带有 % 通配符的 LIKE 语句
4. 仅返回 SQL 查询语句,不返回其他任何内容
5. 不要包含 Markdown 代码块或反引号
6. 如果数据库无法回答该问题,则返回 "NO_QUERY"
请编写一个 SQL 查询语句来回答用户关于房地产数据库的问题。""" )
( "human" , "{input}" )
])
result = db.run(sql_query)
( "system" , """您是一位乐于助人的助手,能够用自然语言解释数据库查询结果。
请根据 SQL 查询结果提供清晰简洁的答案。
如果结果为空或未显示任何数据,请解释未找到匹配的记录。""" ),
( "human" , "问题:{question}\n\nSQL 查询:{sql_query}\n\n查询结果:{result}\n\n请用自然语言回答:" )
])
async def query ( request: QueryRequest ):
"""使用自然语言查询数据库。"""
if not request.question or not request.question.strip():
raise HTTPException(status_code= 400 , detail= "问题不能为空" )
try :
answer = query_database(request.question)
return QueryResponse(answer=answer)
except Exception as e:
raise HTTPException(status_code= 500 , detail= f"错误:{ str (e)} " )
st.session_state.messages.append ( {"role": "user" , "content" : prompt})
with st.chat_message ("assistant"): with st.spinner
( "思考中..." ):
-
验证所有输入 -
捕获 SQL 执行错误 -
提供有用的错误信息 -
记录调试失败日志
-
分别测试每个组件 -
轻松替换实现方式 -
分别缩放不同部分 -
在多个前端中复用 API
-
商业智能:非技术用户无需学习 SQL 即可查询数据库。销售团队可以询问“我们本季度的收入是多少?”并立即获得答案。 -
客户支持:客服人员可以快速查找信息:“显示客户 X 过去一周的所有工单。” -
数据探索:分析师可以以对话的方式探索数据集:“价格和面积之间有什么相关性?” -
内部工具:任何团队都可以根据自身特定的数据需求构建自定义助手。
-
LangChain:它提供的抽象层让构建 RAG 流水线变得易于管理。如果没有它,我得写几百行样板代码。 -
OpenAI GPT-4o-mini:经济高效且速度快。对于 SQL 生成,您不需要功能最强大的模型,而需要的是一个可靠且价格合理的模型。 -
FastAPI:一款现代化的Python Web框架,具备自动生成API文档的功能。非常适合快速构建可用于生产环境的API。 -
Streamlit:数据应用快速原型开发工具。我只用了一个下午就搭建好了整个前端。 -
SQLite:零配置,非常适合学习和开发。只需稍作修改,同一段代码即可用于 PostgreSQL 或 MySQL。
-
实时响应:无需等待完整答案,即可在生成结果的同时实时显示结果。这能使界面响应更加迅速。 -
多轮对话:记住之前问题的上下文。“公寓怎么样?”这个问题应该让对方明白你仍然在谈论房产。 -
查询说明:向用户展示生成的 SQL 查询语句。这有助于建立信任并帮助用户学习。 -
可视化:根据查询结果自动生成图表和图形。 -
多数据库支持:连接多个数据库,并允许用户跨数据库进行查询。 -
微调:专门训练用于 SQL 生成的自定义模型,提高准确性并降低成本。
-
复杂查询语言→自然语言 -
技术障碍→无障碍界面 -
静态报告→动态对话
往期推荐

