dify部署与新手简单使用
docker部署
下载项目
windows直接点下载zip即可
https://github.com/langgenius/dify?tab=readme-ov-file
linux以及mac请运行
git clone https://github.com/langgenius/dify.git
快速启动(均使用默认配置)
cd dify
cd docker
cp .env.example .env
docker compose up -d
访问
浏览器输入 http://127.0.0.1/

新手简单使用
添加模型
点击设置

然后安装你需要的模型供应商

以配置千问为例子:添加apikey即可完成

然后点击添加模型

简单对话机器人
在工作室中点击聊天助手如图所示

设置好提示词,这里主要是给模型做一些输出限制、思考方向、思考过程等。比如:

选择模型以及调整参数。这里建议使用qwen2.5或者deepseekr1对于新手来说。同时温度建议0.6

然后点击右下角发送问题即可对话(发布后你就可以工作室和应用中看到他了)

简单批量文本生成实战
选择工作室->创建工作流,随后点击开始哪里就可以看到如图标红的地方添加变量

然后点击LLM

然后在提示词中加入变量

然后加入节点结束,点击右上角运行即可查看测试结果


然后点击发布即可
之后点击在探索中打开

然后依次点击下载模板,在模板中输入信息,即可再点击批量运行即可

简单NL2SQL
我们的思路是先用大模型根据对应的问题生成SQL语句,然后去数据库中执行,最后根据SQL返回的结果进行分析。所以流是这样的

但考虑到空荡荡的数据用户体验不够好,所以本文采用这样的流程

先进行个简单的NL2SQL
这个阶段先不进行SQL语句的执行,先进行SQL语句的生成。
我用AI生成了一个数据库表(mysql),直接用就行。怎么生成这么长的数据?上下文不够?不要急,后面会讲。
-- 用户表
CREATE TABLE IF NOT EXISTS `users` (
`user_id` INT AUTO_INCREMENT PRIMARY KEY,
`username` VARCHAR(50) NOT NULL UNIQUE,
`password` VARCHAR(255) NOT NULL,
`email` VARCHAR(100) NOT NULL UNIQUE,
`phone` VARCHAR(20),
`avatar` VARCHAR(255),
`status` TINYINT DEFAULT 1 COMMENT '0-禁用 1-正常',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 商品分类表
CREATE TABLE IF NOT EXISTS `categories` (
`category_id` INT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(100) NOT NULL,
`parent_id` INT DEFAULT NULL,
`level` TINYINT DEFAULT 1 COMMENT '分类层级',
`sort_order` INT DEFAULT 0,
`is_show` TINYINT DEFAULT 1,
FOREIGN KEY (`parent_id`) REFERENCES `categories` (`category_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 商品表
CREATE TABLE IF NOT EXISTS `products` (
`product_id` INT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(200) NOT NULL,
`description` TEXT,
`price` DECIMAL(10,2) NOT NULL,
`market_price` DECIMAL(10,2),
`cost_price` DECIMAL(10,2),
`stock` INT NOT NULL DEFAULT 0,
`sold_num` INT DEFAULT 0,
`category_id` INT,
`main_image` VARCHAR(255),
`status` TINYINT DEFAULT 1 COMMENT '0-下架 1-上架',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (`category_id`) REFERENCES `categories` (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 购物车表
CREATE TABLE IF NOT EXISTS `cart` (
`cart_id` INT AUTO_INCREMENT PRIMARY KEY,
`user_id` INT NOT NULL,
`product_id` INT NOT NULL,
`quantity` INT NOT NULL DEFAULT 1,
`selected` TINYINT DEFAULT 1,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`),
FOREIGN KEY (`product_id`) REFERENCES `products` (`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 订单表
CREATE TABLE IF NOT EXISTS `orders` (
`order_id` INT AUTO_INCREMENT PRIMARY KEY,
`order_no` VARCHAR(50) NOT NULL UNIQUE,
`user_id` INT NOT NULL,
`total_amount` DECIMAL(10,2) NOT NULL,
`payment_amount` DECIMAL(10,2) NOT NULL,
`shipping_fee` DECIMAL(10,2) DEFAULT 0,
`address_id` INT,
`status` TINYINT DEFAULT 0 COMMENT '0-待支付 1-已支付 2-已发货 3-已完成 4-已取消',
`payment_time` DATETIME,
`shipping_time` DATETIME,
`complete_time` DATETIME,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 订单明细表
CREATE TABLE IF NOT EXISTS `order_items` (
`item_id` INT AUTO_INCREMENT PRIMARY KEY,
`order_id` INT NOT NULL,
`product_id` INT NOT NULL,
`product_name` VARCHAR(200) NOT NULL,
`product_image` VARCHAR(255),
`current_price` DECIMAL(10,2) NOT NULL,
`quantity` INT NOT NULL,
`total_price` DECIMAL(10,2) NOT NULL,
FOREIGN KEY (`order_id`) REFERENCES `orders` (`order_id`),
FOREIGN KEY (`product_id`) REFERENCES `products` (`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 收货地址表
CREATE TABLE IF NOT EXISTS `shipping_address` (
`address_id` INT AUTO_INCREMENT PRIMARY KEY,
`user_id` INT NOT NULL,
`receiver_name` VARCHAR(50) NOT NULL,
`receiver_phone` VARCHAR(20) NOT NULL,
`province` VARCHAR(50) NOT NULL,
`city` VARCHAR(50) NOT NULL,
`district` VARCHAR(50) NOT NULL,
`detail_address` VARCHAR(255) NOT NULL,
`is_default` TINYINT DEFAULT 0,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 支付记录表
CREATE TABLE IF NOT EXISTS `payment` (
`payment_id` INT AUTO_INCREMENT PRIMARY KEY,
`order_id` INT NOT NULL,
`payment_no` VARCHAR(100) NOT NULL,
`payment_method` TINYINT COMMENT '1-支付宝 2-微信 3-银联',
`payment_amount` DECIMAL(10,2) NOT NULL,
`payment_status` TINYINT DEFAULT 0 COMMENT '0-未支付 1-支付成功 2-支付失败',
`payment_time` DATETIME,
`callback_content` TEXT,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`order_id`) REFERENCES `orders` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `users` (`username`,`password`,`email`,`phone`,`avatar`,`status`,`created_at`,`updated_at`)
SELECT * FROM (SELECT 'user1' AS `username`, 'pwd1' AS `password`, 'user1@example.com' AS `email`, '0995822412' AS `phone`, '/avatars/user1.png' AS `avatar`, 1 AS `status`, '2025-06-03 16:51:18' AS `created_at`, '2025-06-03 16:51:18' AS `updated_at`) AS tmp
WHERE NOT EXISTS(SELECT 1 FROM `users` WHERE `username`='user1' OR `email`='user1@example.com');
INSERT INTO `users` (`username`,`password`,`email`,`phone`,`avatar`,`status`,`created_at`,`updated_at`)
SELECT * FROM (SELECT 'user2' AS `username`, 'pwd2' AS `password`, 'user2@example.com' AS `email`, '0913356886' AS `phone`, '/avatars/user2.png' AS `avatar`, 1 AS `status`, '2025-06-18 23:59:04' AS `created_at`, '2025-06-18 23:59:04' AS `updated_at`) AS tmp
WHERE NOT EXISTS(SELECT 1 FROM `users` WHERE `username`='user2' OR `email`='user2@example.com');
INSERT INTO `users` (`username`,`password`,`email`,`phone`,`avatar`,`status`,`created_at`,`updated_at`)
SELECT * FROM (SELECT 'user3' AS `username`, 'pwd3' AS `password`, 'user3@example.com' AS `email`, '0946913810' AS `phone`, '/avatars/user3.png' AS `avatar`, 1 AS `status`, '2025-06-06 22:39:35' AS `created_at`, '2025-06-06 22:39:35' AS `updated_at`) AS tmp
WHERE NOT EXISTS(SELECT 1 FROM `users` WHERE `username`='user3' OR `email`='user3@example.com');
INSERT INTO `users` (`username`,`password`,`email`,`phone`,`avatar`,`status`,`created_at`,`updated_at`)
SELECT * FROM (SELECT 'user4' AS `username`, 'pwd4' AS `password`, 'user4@example.com' AS `email`, '0939958838' AS `phone`, '/avatars/user4.png' AS `avatar`, 1 AS `status`, '2025-06-04 09:17:12' AS `created_at`, '2025-06-04 09:17:12' AS `updated_at`) AS tmp
WHERE NOT EXISTS(SELECT 1 FROM `users` WHERE `username`='user4' OR `email`='user4@example.com');
INSERT INTO `users` (`username`,`password`,`email`,`phone`,`avatar`,`status`,`created_at`,`updated_at`)
SELECT * FROM (SELECT 'user5' AS `username`, 'pwd5' AS `password`, 'user5@example.com' AS `email`, '0923756669' AS `phone`, '/avatars/user5.png' AS `avatar`, 1 AS `status`, '2025-06-17 10:12:21' AS `created_at`, '2025-06-17 10:12:21' AS `updated_at`) AS tmp
WHERE NOT EXISTS(SELECT 1 FROM `users` WHERE `username`='user5' OR `email`='user5@example.com');
INSERT INTO `categories` (`name`,`parent_id`,`level`,`sort_order`,`is_show`)
SELECT * FROM (SELECT 'Electronics' AS `name`, NULL AS `parent_id`, 1 AS `level`, 1 AS `sort_order`, 1 AS `is_show`) AS tmp
WHERE NOT EXISTS(SELECT 1 FROM `categories` WHERE `name`='Electronics' AND parent_id IS NULL);
INSERT INTO `categories` (`name`,`parent_id`,`level`,`sort_order`,`is_show`)
SELECT * FROM (SELECT 'Laptops' AS `name`, 1 AS `parent_id`, 2 AS `level`, 2 AS `sort_order`, 1 AS `is_show`) AS tmp
WHERE NOT EXISTS(SELECT 1 FROM `categories` WHERE `name`='Laptops' AND parent_id=1);
INSERT INTO `categories` (`name`,`parent_id`,`level`,`sort_order`,`is_show`)
SELECT * FROM (SELECT 'Phones' AS `name`, 1 AS `parent_id`, 2 AS `level`, 3 AS `sort_order`, 1 AS `is_show`) AS tmp
WHERE NOT EXISTS(SELECT 1 FROM `categories` WHERE `name`='Phones' AND parent_id=1);
INSERT INTO `categories` (`name`,`parent_id`,`level`,`sort_order`,`is_show`)
SELECT * FROM (SELECT 'Tablets' AS `name`, 1 AS `parent_id`, 2 AS `level`, 4 AS `sort_order`, 1 AS `is_show`) AS tmp
WHERE NOT EXISTS(SELECT 1 FROM `categories` WHERE `name`='Tablets' AND parent_id=1);
INSERT INTO `categories` (`name`,`parent_id`,`level`,`sort_order`,`is_show`)
SELECT * FROM (SELECT 'Accessories' AS `name`, 1 AS `parent_id`, 2 AS `level`, 5 AS `sort_order`, 1 AS `is_show`) AS tmp
WHERE NOT EXISTS(SELECT 1 FROM `categories` WHERE `name`='Accessories' AND parent_id=1);
INSERT INTO `categories` (`name`,`parent_id`,`level`,`sort_order`,`is_show`)
SELECT * FROM (SELECT 'Gaming Laptops' AS `name`, 2 AS `parent_id`, 2 AS `level`, 6 AS `sort_order`, 1 AS `is_show`) AS tmp
WHERE NOT EXISTS(SELECT 1 FROM `categories` WHERE `name`='Gaming Laptops' AND parent_id=2);
INSERT INTO `categories` (`name`,`parent_id`,`level`,`sort_order`,`is_show`)
SELECT * FROM (SELECT 'Ultrabooks' AS `name`, 2 AS `parent_id`, 2 AS `level`, 7 AS `sort_order`, 1 AS `is_show`) AS tmp
WHERE NOT EXISTS(SELECT 1 FROM `categories` WHERE `name`='Ultrabooks' AND parent_id=2);
INSERT INTO `categories` (`name`,`parent_id`,`level`,`sort_order`,`is_show`)
SELECT * FROM (SELECT 'Cases' AS `name`, 5 AS `parent_id`, 2 AS `level`, 8 AS `sort_order`, 1 AS `is_show`) AS tmp
WHERE NOT EXISTS(SELECT 1 FROM `categories` WHERE `name`='Cases' AND parent_id=5);
INSERT INTO `products` (`name`,`description`,`price`,`market_price`,`cost_price`,`stock`,`sold_num`,`category_id`,`main_image`,`status`,`created_at`,`updated_at`)
SELECT * FROM (SELECT 'SampleProduct1' AS `name`, 'Description for SampleProduct1' AS `description`, 1494.3 AS `price`, 1793.16 AS `market_price`, 1195.44 AS `cost_price`, 149 AS `stock`, 22 AS `sold_num`, 7 AS `category_id`, '/images/SampleProduct1.jpg' AS `main_image`, 1 AS `status`, '2025-06-01 18:30:53' AS `created_at`, '2025-06-01 18:30:53' AS `updated_at`) AS tmp
WHERE NOT EXISTS(SELECT 1 FROM `products` WHERE `name`='SampleProduct1' AND `category_id`=7);
INSERT INTO `products` (`name`,`description`,`price`,`market_price`,`cost_price`,`stock`,`sold_num`,`category_id`,`main_image`,`status`,`created_at`,`updated_at`)
SELECT * FROM (SELECT 'SampleProduct2' AS `name`, 'Description for SampleProduct2' AS `description`, 108.1 AS `price`, 129.72 AS `market_price`, 86.48 AS `cost_price`, 65 AS `stock`, 29 AS `sold_num`, 1 AS `category_id`, '/images/SampleProduct2.jpg' AS `main_image`, 1 AS `status`, '2025-06-14 14:56:56' AS `created_at`, '2025-06-14 14:56:56' AS `updated_at`) AS tmp
WHERE NOT EXISTS(SELECT 1 FROM `products` WHERE `name`='SampleProduct2' AND `category_id`=1);
INSERT INTO `products` (`name`,`description`,`price`,`market_price`,`cost_price`,`stock`,`sold_num`,`category_id`,`main_image`,`status`,`created_at`,`updated_at`)
SELECT * FROM (SELECT 'SampleProduct3' AS `name`, 'Description for SampleProduct3' AS `description`, 437.73 AS `price`, 525.28 AS `market_price`, 350.18 AS `cost_price`, 176 AS `stock`, 139 AS `sold_num`, 7 AS `category_id`, '/images/SampleProduct3.jpg' AS `main_image`, 1 AS `status`, '2025-06-06 08:24:57' AS `created_at`, '2025-06-06 08:24:57' AS `updated_at`) AS tmp
WHERE NOT EXISTS(SELECT 1 FROM `products` WHERE `name`='SampleProduct3' AND `category_id`=7);
INSERT INTO `products` (`name`,`description`,`price`,`market_price`,`cost_price`,`stock`,`sold_num`,`category_id`,`main_image`,`status`,`created_at`,`updated_at`)
SELECT * FROM (SELECT 'SampleProduct4' AS `name`, 'Description for SampleProduct4' AS `description`, 925.96 AS `price`, 1111.15 AS `market_price`, 740.77 AS `cost_price`, 81 AS `stock`, 0 AS `sold_num`, 3 AS `category_id`, '/images/SampleProduct4.jpg' AS `main_image`, 1 AS `status`, '2025-06-17 22:41:44' AS `created_at`, '2025-06-17 22:41:44' AS `updated_at`) AS tmp
WHERE NOT EXISTS(SELECT 1 FROM `products` WHERE `name`='SampleProduct4' AND `category_id`=3);
INSERT INTO `products` (`name`,`description`,`price`,`market_price`,`cost_price`,`stock`,`sold_num`,`category_id`,`main_image`,`status`,`created_at`,`updated_at`)
SELECT * FROM (SELECT 'SampleProduct5' AS `name`, 'Description for SampleProduct5' AS `description`, 874.1 AS `price`, 1048.92 AS `market_price`, 699.28 AS `cost_price`, 81 AS `stock`, 19 AS `sold_num`, 4 AS `category_id`, '/images/SampleProduct5.jpg' AS `main_image`, 1 AS `status`, '2025-06-19 12:46:03' AS `created_at`, '2025-06-19 12:46:03' AS `updated_at`) AS tmp
WHERE NOT EXISTS(SELECT 1 FROM `products` WHERE `name`='SampleProduct5' AND `category_id`=4);
INSERT INTO `products` (`name`,`description`,`price`,`market_price`,`cost_price`,`stock`,`sold_num`,`category_id`,`main_image`,`status`,`created_at`,`updated_at`)
SELECT * FROM (SELECT 'SampleProduct6' AS `name`, 'Description for SampleProduct6' AS `description`, 706.36 AS `price`, 847.63 AS `market_price`, 565.09 AS `cost_price`, 33 AS `stock`, 24 AS `sold_num`, 2 AS `category_id`, '/images/SampleProduct6.jpg' AS `main_image`, 1 AS `status`, '2025-06-09 17:07:14' AS `created_at`, '2025-06-09 17:07:14' AS `updated_at`) AS tmp
WHERE NOT EXISTS(SELECT 1 FROM `products` WHERE `name`='SampleProduct6' AND `category_id`=2);
INSERT INTO `products`

最低0.47元/天 解锁文章
7649

被折叠的 条评论
为什么被折叠?



