DeepSeek 实现数据统计图文教程(maxKB +ollama+echarts)

DeepSeek 实现数据统计图文教程(maxKB +ollama+echarts)

一,实现效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二,环境搭建

请参考:DeepSeek R1+RAG 构建本地AI知识库

三,功能实现

1,小助手总体工作流程

在这里插入图片描述

2,具体实现

2.1 提前下载好deepseek-coder-v2-15b

在DeepSeek家族中,DeepSeek-Coder-V2模型以其独特的专注点和卓越的性能脱颖而出。该模型基于Mixture-of-Experts(MoE)架构,这是一种高效的模型设计思路,能够将复杂的任务分解为多个简单子任务,每个子任务由专家模型负责处理。这种架构不仅提高了模型的处理效率,还使得模型能够灵活地应对各种复杂情况。

DeepSeek-Coder-V2模型是在DeepSeek-V2的基础上进行进一步预训练得到的。通过额外增加6万亿个标记的训练数据,该模型的语言理解和生成能力得到了显著提升。特别是在代码生成和理解方面,DeepSeek-Coder-V2展现出了与GPT4-Turbo相当的性能水平,这得益于其对大量代码数据的深入学习和理解。

值得一提的是,DeepSeek-Coder-V2模型支持多达338种编程语言,远远超过了前代模型的86种。这种广泛的编程语言支持使得该模型能够更好地满足开发人员的需求,无论是进行代码生成、代码补全还是代码理解等任务,都能够游刃有余。

此外,DeepSeek-Coder-V2模型还具备长上下文处理能力,其上下文长度从16K扩展到了128K。这意味着该模型能够处理更长、更复杂的代码片段,为开发人员提供更加全面、准确的代码建议。同时,该模型还通过优化推理算法和硬件加速技术,实现了高效的推理速度,使得在实际应用场景中能够快速响应用户的请求。

在这里插入图片描述
在这里插入图片描述

在终端中输入

#下载 deepseek-coder-v2:16b 模型 
ollama pull deepseek-coder-v2:16b

#ollama 查看已下的模型
ollama list

下载完成显示如下图
在这里插入图片描述

2.2 创建应用

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
编写开场白
在这里插入图片描述
在这里插入图片描述
我的提示词内容如下:

角色定义:你是一个SQL编写专家,请严格按照以下格式生成标准的SQL代码。
任务描述:创建新的会话根据描述 {
    
    {
    
    开始.question}} 生成MySQL查询SQL。
输出要求:
1. 请确保返回的内容中不包含任何代码框(如 ```或 ` 符号),仅返回纯文本。
2. 必须返回一个标准的可执行的一条SQL代码。
3. 必须SQL代码大小写统一。
4. 不能有任何SQL无关的文字内容,不带任何格式。
5. SQL不能换行,有个一行返回。

在这里插入图片描述
这个函数的主要作用是输入生成的SQL语句进行数据查询或统计具体代码如下:

from pymysql import *
import json
import re


def extract_python_code(markdown_text):
    """
    Extract Python code blocks from markdown text.
    Args:markdown_text (str): The markdown text containing Python code blocks
    Returns:list: A list of extracted Python code blocks
    """
    # Pattern to match Python code blocks
    pattern = r"```sql\s*(.*?)\s*```"
    # Find all matches using re.DOTALL flag to match across multiple lines
    matches = re.findall(pattern, markdown_text, re.DOTALL)
    # Clean up each code block (remove leading/trailing whitespace)
    code_blocks = [block.strip() for block in matches]
    return code_blocks


def execute_sql_query(query):
    """
    :param query: 要执行的SQL查询
    :return: 查询结果
    """
    #query = '{"query": " ```sql\nSELECT ip,COUNT(*) AS count FROM sys_log GROUP BY ip;\n```"}'
    connection = None
    result = None
    query = query.replace("\r\n", "").replace("\n", "")
    query = extract_python_code(query)[0]
    if(query.find("query") != -1):
        json_obj = json.loads(query)
        query = json_obj.get("query")
    print(query)
    try:
        connection=connect(host='192.168.20.15',user='root',password='root@123',
                           database='jeecg-boot-prod',charset='utf8')
        if connection.open:
            cursor = connection.cursor()
            cursor.execute(query)
            result = cursor.fetchall()
    except Error as e:
        print(f"Error while connecting to MySQL {
      
      e}")
    finally:
        if connection.open:
            cursor.close()
            connection.close()
    return result

在这里插入图片描述
我的提示词如下:

角色定义:你是一个ECharts图表专家,请严格按照以下格式生成标准的ECharts配置代码。
任务描述:{
    
    {
    
    开始.question}} 根据描述生成ECharts代码。
输入数据:{
    
    {
    
    自定义函数.result}}
输出要求:
1. 必须返回一个标准的JavaScript对象,以'option = {'开头。
2. 必须包含完整的配置项:title, tooltip, legend(如果需要), grid等。
3. 所有的数据必须是静态的,不能包含函数调用或动态生成的数据。
4. 所有的样式必须通过配置项设置,不能包含外部CSS或JavaScript代码。
5. 图表大小和位置必须使用百分比,不能使用固定像素值。
6. 文本大小应该适中,标题不超过16px,其他文本不超过14px。
7. 确保所有的数据格式正确,数值型数据不要带引号。
8. 请直接返回完整的ECharts配置代码,不要包含任何解释或其他内容。
9. 确保代码可以直接在ECharts中运行,遵循上述格式要求。

在这里插入图片描述
这个自定函数主要是处理ai生成的echarts 数据, 其实可以不设这个节点 主要是为了方便调整自己的样式我的代码如下:

# coding=utf-8
import json
 
def get_echarts(option):
    option = option.replace("```javascript", "").replace("```", "").replace("\r", "").replace("\n", "")
    return json.dumps({
    
    'actionType': 'EVAL', 'option': option, 'style': {
    
    'height': '600px', 'width': '100%'}})

在这里插入图片描述
最后赋数据结构:

/*
 Navicat Premium Data Transfer

 Source Server         : 192.168.20.15
 Source Server Type    : MySQL
 Source Server Version : 80023
 Source Host           : 192.168.20.15:3306
 Source Schema         : jeecg-boot-prod

 Target Server Type    : MySQL
 Target Server Version : 80023
 File Encoding         : 65001

 Date: 10/03/2025 17:19:02
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for sys_log
-- ----------------------------
DROP TABLE IF EXISTS `sys_log`;
CREATE TABLE `sys_log`  (
  `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `log_type` int(0) NULL DEFAULT NULL COMMENT '日志类型(1登录日志,2操作日志)',
  `log_content` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '日志内容',
  `operate_type` int(0) NULL DEFAULT NULL COMMENT '操作类型',
  `userid` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作用户账号',
  `username` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作用户名称',
  `ip` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'IP',
  `method` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '请求java方法',
  `request_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '请求路径',
  `request_param` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '请求参数',
  `request_type` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '请求类型',
  `cost_time` bigint(0) NULL DEFAULT NULL COMMENT '耗时',
  `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人',
  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人',
  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `idx_sl_userid`(`userid`) USING BTREE,
  INDEX `idx_sl_log_type`(`log_type`) USING BTREE,
  INDEX `idx_sl_operate_type`(`operate_type`) USING BTREE,
  INDEX `idx_sl_create_time`(`create_time`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统日志表' ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

四,总结

虽然当前的呈现方式较为简约,但数据查询到展示的完整流程已成功实现。若你对进一步提升其智能化程度感兴趣,不妨自行探索一番。后续我还将带来更多精彩内容,欢迎关注,以免错过。

猜你喜欢

转载自blog.csdn.net/hugejiletuhugejiltu/article/details/146157752
今日推荐