本地部署vanna ai+通过http请求调用vanna

article/2025/6/19 12:55:28

本地部署vanna ai

准备python环境,推荐最新的python12、13版本

安装vanna库

我这里安装的python环境是python312

进入目录python312/Scripts,在该目录下的命令行窗口中输入以下命令:pip jinstall vanna

pip install vanna

配置向量库

这里我选用的向量库为qdrant,并在Linux环境下通过docker进行安装

配置linux环境以及在linux环境下安装docker的教程可自行查找

在完成docker配置的linux环境中,运行qdrant容器,命令如下

docker run -d --name qdrant_server -v $(pwd)/qdrant_storage:/qdrant/storage -p 6333:6333 qdrant/qdrant

获取线上大模型的base_urlapi_key

这里,我选择使用线上大语言模型通义千问。新用户可以通过其官方平台注册账号,免费体验该模型。

获取通义千问模型的base_urlapi_key可以参考以下官方文档:

https://help.aliyun.com/zh/model-studio/user-guide/first-api-call-to-qwen

编写vanna调用代码

vanna使用python编写,这里我选择pycharm作为开发环境,以下是完整的python程序:将获取到的api_key填入以下对应的参数中

from vanna.base import VannaBase
from vanna.qdrant import Qdrant_VectorStore
from qdrant_client import QdrantClient
from vanna.qianwen import QianWenAI_Chat# 创建Vanna实例
class MyVanna(Qdrant_VectorStore, MyCustomLLM):def __init__(self, config=None):Qdrant_VectorStore.__init__(self, config=config)QianWenAI_Chat.__init__(self, config=config)# 配置参数
config = {"client": QdrantClient(host="8.134.216.171", port=6333),"api_key": "sk-yVx6P2nKH4YHT7BfwFTMJLT3IEKrglpQ7OzNjhWulDUrUXLa","model": "https://api.moonshot.cn/v1"
}# 实例化Vanna
vn = MyVanna(config=config)# 连接MySQL数据库
vn.connect_to_mysql(host="8.134.204.169",dbname="sales_visit",  # 替换为你的数据库名称user="root",  # 替换为你的数据库用户名password="root",  # 替换为你的数据库密码port=3306  # 数据库的运行端口,mysql默认运行在3306端口
)# 启动Vanna的Flask应用
from vanna.flask import VannaFlaskApp
app = VannaFlaskApp(vn)
app.run()

运行访问localhost:8084,就可以看到的vanna的前端操作界面了

请添加图片描述

请添加图片描述

添加训练数据

请添加图片描述

有三种类型的数据DDL(数据库表结构)、Documentation(说明文档)、SQL(可执行sql语句),可以按照自己的需求添加训练数据

请添加图片描述


与vanna实例相关的api接口

vn是vanna的实例对象,vn.generate_sql("What are the top 10 customers by sales?")用于生成sql语句,vn.run_sql("SELECT * FROM my_table")用于执行sql语句。

通过http请求调用vanna的功能

通过 HTTP 请求,既可以调用线上官方的 Vanna 功能,也可以调用本地部署的 Vanna 功能。

以下是一个例子:

from urllib import request
from flask import Flask, jsonify, request
from vanna.remote import VannaDefault# 初始化Flask应用
app = Flask(__name__)@app.route('/ask', methods=['POST'])
def deal_ask():print("进入请求处理")# 获取请求中的查询需求data = request.jsonif not data or 'question' not in data:return jsonify({"error":"query question is required"}),400question = data['question']print(question)# vn=init_app()vn = VannaDefault(model='rik', api_key='2a307e03229f40ef9621073b41ed1701')vn.connect_to_mysql(host="8.134.233.232",dbname="sale_visit",  # 替换为你的数据库名称user="root",  # 替换为你的数据库用户名password="root",port=3306)  # Connect to your database hereprint("开始执行请求")# 执行请求# result = vn.ask(question)result = vn.generate_sql(question)print("请求执行完毕")# print("这是result[1]")# print(result[1])# print("这是result[2]")# print(result[2])# 返回结果return jsonify({"result": result})# 启动Flask应用
if __name__ == '__main__':app.run(host='0.0.0.0', port=3000)

可以在postman中发送请求进行测试,

url -X POST http://localhost:3000/ask \-H "Content-Type: application/json" \-d '{"question": "查询最近一周的销售数据"}'

后端收到请求后,将会返回一条sql查询语句


http://www.hkcw.cn/article/SUlcZyqZrK.shtml

相关文章

和 AI 玩海龟汤差点崩溃:它永远比我多知道 100 个隐藏真相

关于海龟汤 第一次接触海龟汤时,我还以为这是某种美食烹饪挑战,直到朋友抛出第一个谜题 ——“一个人走进酒吧,要了一杯水,酒保却掏出一把枪对准他,可这个人不仅没害怕,反而说了声谢谢离开了”&#xff0c…

个人健康中枢的多元化AI软件革新与精准健康路径探析

引言 人工智能技术的迅猛发展正在重塑医疗健康领域的服务模式和用户体验。随着多模态大模型、MCP协议、A2A协议和思考链算法等创新技术的出现,个人健康中枢正在经历一场深刻的软件革新。这些技术不仅打破了传统健康管理系统的信息孤岛,还通过多维度数据整合和深度推理能力,…

探索高性能AI识别和边缘计算 | NVIDIA Jetson Orin Nano 8GB 开发套件的全面测评

随着边缘计算和人工智能技术的迅速发展,性能强大的嵌入式AI开发板成为开发者和企业关注的焦点。NVIDIA近期推出的Jetson Orin Nano 8GB开发套件,凭借其40 TOPS算力、高效的Ampere架构GPU以及出色的边缘AI能力,引起了广泛关注。本文将从配置性…

利用本地DeepSeek R1和n8n框架,创建AI智能体

如今,AI 越来越智能。在本地部署个人 AI 智能体,是一件意义重大的事:无需云服务和 API,就能完全自主掌控私人 AI,保障数据安全和隐私,还能个性化定制。 借助n8n、Ollama和DeepSeek-R1这三款超实用工具&…

【AI打标签】基于DeepSeek Janus为图片批量打标签

DeepSeek Janus的能力,相信不需要我多说了,看下面三张图片,自然就知道了。 但是,如何通过DeepSeek Janus提高我们的工作生产力,在这里,我给大家说道说道。 ★★★★★ 建议一定看到最后,至于为…

SpringAI+MCP协议 实战

文章目录 前言Spring AIMcp(Model Context Protocol) 快速实战Spring AISpring AI 集成 MCP 协议Spring Mcp Client 示例Spring Mcp Server 示例 前言 大模型发展可能到了接近成熟的程度了,但是业界的重点肯定不会仅仅就放在大模型上的&…

AI+游戏开发:如何用 DeepSeek 打造高性能贪吃蛇游戏

文章目录 一、技术选型与准备1.1 传统开发 vs AI生成1.2 环境搭建与工具选择1.3 DeepSeek API 初步体验 二、贪吃蛇游戏基础实现2.1 游戏结构设计2.2 初始化游戏2.3 DeepSeek 生成核心逻辑 三、游戏功能扩展3.1 多人联机模式3.2 游戏难度动态调整3.3 游戏本地保存与回放3.4 跨平…

AI智能体|扣子(Coze)全网最详细讲解(保姆级)

没有任何编程基础?没关系! 这篇保姆级教程将手把手教你用Coze平台打造能搜索新闻、分析数据、创作内容的AI智能体,让你的工作效率提升300%。从此告别加班,让AI成为你最强力的工作伙伴! 什么是AI智能体?一个…

国足备战世预赛生死战 力争两连胜

中国男足国家队于6月2日晚抵达印度尼西亚首都雅加达,准备参加5日举行的2026美加墨世界杯亚洲区预选赛18强赛第9轮对阵印尼队的比赛。当地时间晚上10时30分,中国队在主教练伊万科维奇的带领下走出雅加达苏加诺-哈达国际机场,随后登上大巴前往酒店。伊万科维奇表示,中国队在…

滕州走失男孩遗体被发现 溺水身亡排除刑案

6月2日晚,山东省滕州市公安局发布警情通报。5月31日22时35分许,滕州市公安局接到孔某某报警,称其10岁的外孙赵某某于当日17时许离家后失联。接警后,公安机关迅速行动,调阅监控、走访群众,并联合当地政府和社会救援力量,使用搜救警犬和无人机等手段持续搜寻。6月2日15时许…

官方通报幼童掉入高铁股道 儿童已安全交还家长

6月2日下午,上铁淮南西站发布了一则情况说明。5月31日16时09分左右,铁路工作人员在淮南南站3号站台边缘下方发现了一名儿童,并迅速将其拉上站台。经了解,这名儿童当天随家长乘坐G7446次列车,在列车停靠淮南南站3号站台期间,不慎从列车和站台之间的间隙掉入股道。经过初步…

ubuntu安装devkitPro

建议开个魔法 wget https://apt.devkitpro.org/install-devkitpro-pacman chmod x ./install-devkitpro-pacman sudo ./install-devkitpro-pacman(下面这句如果报错也没事) sudo ln -s /proc/self/mounts /etc/mtab往~.bashrc添加 export DEVKITPRO/o…

西藏那曲市双湖县发生地震 震级3.4级

西藏那曲市双湖县发生地震 震级3.4级!中国地震台网正式测定:6月3日9时44分在西藏那曲市双湖县(北纬33.65度,东经89.37度)发生3.4级地震,震源深度10千米。(总台央视记者 张腾飞)责任编辑:0882

张雪峰直播含泪自曝告别直播 压力山大但问心无愧

6月2日,张雪峰自曝可能告别直播的话题登上微博热搜。据报道,张雪峰结束了2025届高考志愿填报直播,并宣布暂停直播两个月。在直播结束时,张雪峰哽咽着向屏幕前的家长和考生深深鞠躬:“不管以后发生什么事,希望大家记住,我对得起大家。”他直言一路压力山大,但问心无愧。…

使用 Deepseek AI 制作视频的完整教程

使用 Deepseek AI 制作视频的完整教程 一、简介 Deepseek 作为一款强大的国产 AI 模型,可以帮助我们快速生成视频创作所需的脚本和画面描述。本教程将介绍如何利用 Deepseek AI 辅助视频制作的完整流程。 二、准备工作 需要准备的工具: Deepseek AI…

b站缓存视频导出/转换成.mp4文件

以Redmi K40S手机为例 1.查询视频id 1.首先缓存好要转换的视频 2.打开手机b站离线缓存->离线设置->离线诊断 3.选择要转换成mp4的缓存视频 4.记住视频id 2.根据id寻找对应的m4a文件 在/Android/data/tv.danmaku.bili/文件下,根据视频id找到对应的文件夹…

uniapp [全端兼容] - 实现瀑布流自定义单列+双列+三列布局,瀑布流组件插件可配置页面显示多少列数+自适应计算页面,实现瀑布流列表懒加载上拉页面触底加载(图片瀑布流、图文瀑布流、视频瀑布流)

前言 如果您需要 Vue 版本,请访问 这篇文章。 在 uni-app 全平台兼容(H5网页网站、支付宝/微信小程序、安卓App、苹果App、nvue)开发中,实现瀑布流布局列表+无限懒加载完整实现思路及源码,可配置瀑布流布局列数(支持1列/2列/3列/多列)组件改个配置项后自动重构瀑布流布局…

懒人必备!Coze一键制作火柴人心理学视频,新号45天涨了2.6w粉!(附超详细实战教程)

目录 一、工作流设计思路 二、制作工作流 2.1 开始节点 2.2 文案分镜分割 2.3 生成火柴人的提示词 2.4 字幕翻译成英文 2.5 图像内容生成 2.5.1 图像生成 2.5.2 选择器 2.5.3 补充图片工作流 2.5.4 智能抠图01 2.5.5 智能抠图02 2.5.6 变量聚合 2.6 固定背景图 …

iOS视频编码详细步骤(视频编码器,基于 VideoToolbox,支持硬件编码 H264/H265)

iOS视频编码详细步骤流程 1. 视频采集阶段 视频采集所使用的代码和之前的相同,所以不再过多进行赘述 初始化配置: 通过VideoCaptureConfig设置分辨率1920x1080、帧率30fps、像素格式kCVPixelFormatType_420YpCbCr8BiPlanarFullRange设置摄像头位置&am…

FramePack本地部署教程:6GB显存即可生成高质量视频,彻底摆脱显存线性依赖!

FramePack 由ControlNet之父张吕敏团队研发,是一种用于逐步生成视频的下一帧(下一帧部分)预测神经网络结构。FramePack 将输入上下文压缩到固定长度,以便生成工作量与视频长度无关。即使在笔记本电脑 GPU 上,FramePack…