Skip to content

智能图表服务

文档生成服务分成2个主要步骤,一个是SQL生成,而是图表生成

整体架构

architecture

体系结构

SystemStructure

工作流程

调用参数校验

  • 判断是否直接触发规则,如果触发则直接用正则提取信息,自动填写接口参数
  • 如未触发,临时缓存或永久缓存,自动生成参数(暂未实现,该功能配置提供给助手模块进行调用)
  • 大模型直接生成参数,进行参数校验和补充或丢弃

数据查询生成

  • 参数分为2类,一类为数据库关键拼接,二类为用户问题转化为数据库查询问题。
  • 优先触发第一类,如有完整的时间、地点、报警类型,则拼接sql。
  • 如没有根据nlp2sql进行sql生成。

查询结果校验

  • 如果满足2维数据则生成指定图表,如果为二维空数据则生成空图表
  • 如果非2维数据则通过表格方式直接展示。(后期可考虑分页)
  • 如果异常、则报数查询异常

生成图表

  • 组装数据为Echarts格式数据,或tabel表格,以及文字提示。

NLP2SQL提示词

sqlcoder

_DEFAULT_TEMPLATE = """### Instructions:
Your task is convert a question into a SQL query, given a {dialect} database schema.
Adhere to these rules:
- **Deliberately go through the question and database schema word by word** to appropriately answer the question
- **Use Table Aliases** to prevent ambiguity. For example, `SELECT table1.col1, table2.col1 FROM table1 JOIN table2 ON table1.id = table2.id`.
- When creating a ratio, always cast the numerator as float

### Input:
Generate a SQL query that answers the questioq `{input}`.
This query will run on a database whose schema is represented in this string:
{schema_info}
### Response:
Based on your instructions, here is the SQL query I have generated to answer the question `{input}`:
```sql

常用

_DEFAULT_TEMPLATE = """
你是一个 SQL 专家,给你一个用户的问题,你会生成一条对应的 {dialect} 语法的 SQL 语句。

如果用户没有在问题中指定 sql 返回多少条数据,那么你生成的 sql 最多返回 {top_k} 条数据。 
你应该尽可能少地使用表。

已知表结构信息如下:
{table_info}

注意:
1. 只能使用表结构信息中提供的表来生成 sql,如果无法根据提供的表结构中生成 sql ,请说:“提供的表结构信息不足以生成 sql 查询。” 禁止随意捏造信息。
2. 不要查询不存在的列,注意哪一列位于哪张表中。
3. 使用 json 格式回答,确保你的回答是必须是正确的 json 格式,并且能被 python 语言的 `json.loads` 库解析, 格式如下:
{response}
"""

RESPONSE_FORMAT_SIMPLE = {
    "thoughts": "对用户说的想法摘要",
    "sql": "生成的将被执行的 SQL",
}

下一步计划(商业BI)

技术规律

1.Text2Sql(已实践) 无法解决KnowHow问题,模型不稳定。需要加sql改写、纠正等模块。 主要问题在解决Text2Sql如何解决业务知识,以及某些问题光用SQL无法完成。

2.Text2Graph

3.代码编写类(有开源参考) https://github.com/zwq2018/Data-Copilot 九章云极TableAgent

4.指标平台+大模型(可选择一个成熟的BI系统进行改造或融合)

例如Quick BI

https://bi.aliyun.com/template/nl/public?spm=5176.14192723.J_4311996040.5.62652577LZCQVk

5.数据虚拟化+大模型(未接触)

参考资料

以终为始,以业务为导向

流程分层,而不是端到端

https://www.zhihu.com/question/628814054/answer/3274271761

https://zhuanlan.zhihu.com/p/670082492