当前位置: 首页 > wzjs >正文

苏州集团网站制作设计品牌建设的具体措施

苏州集团网站制作设计,品牌建设的具体措施,响应式外贸网站建设,外管局网站做延期收汇报告文章目录 1、vanna介绍1.1、基本介绍1.2、工作原理1.3、优点 2、vannadeepseekV3mysqlstreamlit本地化部署2.1、创建conda环境,安装依赖2.2、Mysql数据准备2.3、新建pycharm项目2.4、封装deepseek大模型2.5、定义MyVanna2.6、构建streamlit的app2.7、app演示 1、van…

文章目录

  • 1、vanna介绍
    • 1.1、基本介绍
    • 1.2、工作原理
    • 1.3、优点
  • 2、vanna+deepseekV3+mysql+streamlit本地化部署
    • 2.1、创建conda环境,安装依赖
    • 2.2、Mysql数据准备
    • 2.3、新建pycharm项目
    • 2.4、封装deepseek大模型
    • 2.5、定义MyVanna
    • 2.6、构建streamlit的app
    • 2.7、app演示

1、vanna介绍

1.1、基本介绍

vanna是一个基于 MIT 许可的开源 Python RAG(检索增强生成)框架,专注于 SQL 生成和相关功能。它利用大型语言模型(LLM)和检索增强生成技术,将自然语言输入转换为 SQL 查询,允许用户通过自然语言与数据库交互,无需精通 SQL 语法即可提取数据中的有价值信息。Vanna 的核心目标是简化数据库交互,降低数据查询的技术门槛,适用于数据分析师、业务专家以及普通用户。

1.2、工作原理

Vanna 的工作流程主要分为以下步骤:

  • 训练 RAG 模型
    基于用户的数据库模式(DDL)、元数据、文档和示例 SQL 查询,训练一个 RAG 模型,用于理解数据库结构和用户意图。
  • 语义检索
    用户提出自然语言问题后,Vanna 通过向量数据库进行语义检索,匹配相关信息。
  • 生成 SQL 查询
    结合检索到的上下文,利用 LLM 生成对应的 SQL 查询。
  • 执行与反馈
    在数据库中执行生成的 SQL 查询,并以表格或图表形式展示结果。同时,Vanna 支持自我学习,用户反馈和成功查询可进一步优化模型。

1.3、优点

  • 开源与可定制
    • 作为 MIT 许可的开源框架,Vanna 允许用户根据需求进行定制和集成,适应不同业务场景。
    • GitHub 星标已超 7200,社区活跃,持续优化潜力大。
  • 数据可视化
    查询结果以易于理解的表格、Pandas DataFrame 直观的可视化图表呈现,帮助用户快速获取洞察。

2、vanna+deepseekV3+mysql+streamlit本地化部署

2.1、创建conda环境,安装依赖

  • 创建conda环境
conda create -n vanna-learn python=3.10
conda activate vanna-learn
  • 安装依赖包
pip3 install 'vanna[chromadb,mysql]'
pip3 install openai
pip3 install streamlit

2.2、Mysql数据准备

  • 创建数据库
CREATE SCHEMA `test_vn` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • 创建表
CREATE TABLE `user` (`id` SERIAL COMMENT '用户ID',`name` varchar(64) DEFAULT NULL COMMENT '姓名',`age` INT(10) NULL DEFAULT NULL COMMENT '年龄',`gender` enum('MALE','FEMALE') NULL DEFAULT NULL COMMENT '性别',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  • 插入测试数据
drop procedure if exists insert_emp; 
delimiter ;;
create procedure insert_emp()        
begindeclare i int;                    set i=1;                          while(i<=1000)do                 insert into user(name,age,gender) values(CONCAT('tacy',i), FLOOR(RAND() * 100) + 1, IF(i % 3 = 0 , 'FEMALE', 'MALE')); set i=i+1;                       end while;
end;;
delimiter ;
call insert_emp();

2.3、新建pycharm项目

在这里插入图片描述

2.4、封装deepseek大模型

新建deepseek_chat,py

from vanna.base import VannaBase
from openai import OpenAIclass DeepSeekChat(VannaBase):def __init__(self, config=None):if config is None:raise ValueError("For DeepSeek, config must be provided with an api_key and model")if "api_key" not in config:raise ValueError("config must contain a DeepSeek api_key")if "model" not in config:raise ValueError("config must contain a DeepSeek model")api_key = config["api_key"]model = config["model"]self.model = modelself.client = OpenAI(api_key=api_key, base_url="https://api.deepseek.com/v1")def system_message(self, message: str) -> any:return {"role": "system", "content": message}def user_message(self, message: str) -> any:return {"role": "user", "content": message}def assistant_message(self, message: str) -> any:return {"role": "assistant", "content": message}def generate_sql(self, question: str, **kwargs) -> str:# 使用父类的 generate_sqlsql = super().generate_sql(question, **kwargs)# 替换 "\_" 为 "_"sql = sql.replace("\\_", "_")return sqldef submit_prompt(self, prompt, **kwargs) -> str:chat_response = self.client.chat.completions.create(model=self.model,messages=prompt,)return chat_response.choices[0].message.content

2.5、定义MyVanna

新建my_vanna,py

from vanna.chromadb import ChromaDB_VectorStore
from deepseek_chat import DeepSeekChatclass MyVanna(ChromaDB_VectorStore, DeepSeekChat):def __init__(self, config=None):ChromaDB_VectorStore.__init__(self, config=config)DeepSeekChat.__init__(self, config=config)

2.6、构建streamlit的app

新建app.py

  1. 实例化MyVanna
import streamlit as st
from my_vanna import MyVanna
import os
# DEEPSEEK_API_KEY在环境变量中设置
vn = MyVanna({'api_key': os.getenv('DEEPSEEK_API_KEY'), 'model': "deepseek-chat"})
  1. 连接数据库MYSQL
vn.connect_to_mysql(host='localhost', port=3306, dbname='test_vn', user='root', password='password')
  1. train
  • ddl表数据: 有多张表,分多个ddl,分次调用train()
DDL_USER="""
CREATE TABLE `user` (`id` SERIAL COMMENT '用户ID',`name` varchar(64) DEFAULT NULL COMMENT '姓名',`age` INT(10) NULL DEFAULT NULL COMMENT '年龄',`gender` enum('MALE','FEMALE') NULL DEFAULT NULL COMMENT '性别',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
"""
vn.train(ddl=DDL_USER)
  • documentation
vn.train(documentation='"即将失业的人"是指age>=35岁,也就是大于35岁的人会面临就业危机')
  • 存储sql到向量数据库
# 只传sql,让大模型根据SQL构造一个question
vn.train(sql='select name from user where age between 35 and 60')# question-sql
vn.train(question='tacy18的年龄', sql='select age from user where name="tacy18"')
  1. 编写stream lit页面
st.header("你好,我是你的图表AI助理")
my_question = st.text_input("请问你要查询什么数据?")
if st.button("发送"):if my_question:# 大模型根据自然语言描述的问题生成SQLsql = vn.generate_sql(my_question)# 执行SQL获取数据df = vn.run_sql(sql)# 调用大模型生成绘制图表的代码code = vn.generate_plotly_code(question=my_question, sql=sql, df=df)# 绘制图表fig = vn.get_plotly_figure(plotly_code=code, df=df)# 显示结果st.plotly_chart(fig, use_container_width=True)
  1. 启动应用
streamlit run app.py

2.7、app演示

在这里插入图片描述


文章转载自:

http://tTu1bh3r.mhfbf.cn
http://hYYqbkQz.mhfbf.cn
http://UkrzBgYA.mhfbf.cn
http://HIJRW27J.mhfbf.cn
http://29UQsUyB.mhfbf.cn
http://GAhmMQ1c.mhfbf.cn
http://7eIhpzPw.mhfbf.cn
http://mkIiqT4m.mhfbf.cn
http://6HjeFudQ.mhfbf.cn
http://W7eMC38o.mhfbf.cn
http://4bC70qt1.mhfbf.cn
http://fbylMBxC.mhfbf.cn
http://goKi1YVq.mhfbf.cn
http://3MQtQna2.mhfbf.cn
http://xHYWqEWG.mhfbf.cn
http://SMqHZUZ3.mhfbf.cn
http://FpX8nQCz.mhfbf.cn
http://CsnhdZAc.mhfbf.cn
http://MSeRP8cB.mhfbf.cn
http://V4y2vXlp.mhfbf.cn
http://n757WouE.mhfbf.cn
http://0tDPqo4z.mhfbf.cn
http://L5mtUqCq.mhfbf.cn
http://JyRZkao9.mhfbf.cn
http://t0aNIBHK.mhfbf.cn
http://RrL3Bd6v.mhfbf.cn
http://XqaJhTwI.mhfbf.cn
http://RhQVOd3Q.mhfbf.cn
http://sUiVUpK7.mhfbf.cn
http://qZ73NSg3.mhfbf.cn
http://www.dtcms.com/wzjs/642019.html

相关文章:

  • 建一个团购网站要多少钱北京网络营销北京
  • 深圳做棋牌网站建设哪家公司收费合理怎样审请网站
  • 游戏租号网站怎么建设在线拼图
  • 买一个网站多少钱wordpress菜单 标题属性
  • 服务器怎么做网站教程视频嵌入网站
  • 做股权众筹的网站简历模板手机版填写免费
  • 网站建设 顺德完整域名展示网站源码
  • 加强门户网站建设的讲话怎么用dw设计网站页面
  • 做网站下载那个数据库好wordpress mysql扩展
  • 上海专业网站建设市场长春建站公司网站
  • 保山网站建设多少钱wordpress 不同分类
  • 网校网站建设多少钱网站开发公司可行报告
  • 水利建设专项收入在什么网站上申报做网站之前的前期
  • 做婚庆的网站有哪些内容大连专业做网站
  • 企业网站设置费用网站导航如何做半透明
  • 做网站卖得出去吗jsp页面如何做网站pv统计
  • 帝国建站软件天元建设集团有限公司招聘信息
  • 在线生成短链接石家庄seo排名外包
  • 外贸自建站可以自己做网站吗软文推广教程
  • 网站地图的制作广告平台有哪些 互联网
  • 五合一网站制作视频教程?p2p网站开发思路方案
  • 越秀网站建设设计网站建设与管理必修
  • 网站建设中扁平化结构北京 集团公司网站建设
  • 松江网站建设品划网络浙江省城乡与住房建设部网站
  • 58徐州网站建设高中网站建设计划表
  • 网站组件设计学类
  • 做网站北京临沂手工活外发加工网
  • 做临时网站wordpress中文手册下载
  • 苏州seo网站诊断wordpress高级套餐
  • 包装材料营销型网站怎么用云虚拟主机建设网站