dify-03

1、函数调用

database工具安装

报错

复制代码
database
failed to launch plugin: failed to install dependencies: failed to install dependencies: exit status 2, output: DEBUG Searching for user configuration in: `/root/.config/uv/uv.toml`
DEBUG uv 0.11.14 (x86_64-unknown-linux-gnu)
TRACE Checking lock for `/app/storage/cwd/.uv-cache` at `/app/storage/cwd/.uv-cache/.lock`
TRACE Acquired shared lock for `/app/storage/cwd/.uv-cache`
DEBUG Searching for default Python interpreter in virtual environments
TRACE Found cached interpreter info for Python 3.12.3, skipping ...ypi.tuna.tsinghua.edu.cn/simpl/dify-plugin/)
2: client error (Connect)
3: tcp connect error
4: Connection refused (os error 111)

处理env

PIP_MIRROR_URL=https://mirrors.aliyun.com/pypi/simple/

使用插件--现有

使用插件--自定义

2、实战-天气查询助手

1、公网穿透

安装localrunnel

复制代码
npm install -g localtunnel

然后开始开启穿透服务

测试

2、自定义工具

3、实战-电商问答助手

1、完成知识库构建

这里居然有坑

2、创建工作流

3、配置rag与闲聊大模型

3、总结:相较与coze更加正式和官方化

4、发布

4、实战-nnlp2sql数据库查询助手

1、创建数据表

复制代码
mysql -root root -密码
复制代码
CREATE DATABASE dify_test;

USE dify_test;

CREATE TABLE student_grades (
    id INT AUTO_INCREMENT PRIMARY KEY,
    student_id VARCHAR(20) NOT NULL,
    student_name VARCHAR(50) NOT NULL,
    class_name VARCHAR(50) NOT NULL,
    subject VARCHAR(50) NOT NULL,
    score DECIMAL(5,2) NOT NULL,
    exam_date DATE NOT NULL,
    semester VARCHAR(50) NOT NULL,
    grade VARCHAR(50) NOT NULL,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NOT NULL
);

INSERT INTO student_grades (student_id, student_name, class_name, subject, score, exam_date, semester, grade, created_at, updated_at) VALUES 
('2023001', '李一', '高一(1)班', '数学', 85.00, '2023-09-15', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023002', '王二', '高一(1)班', '英语', 92.50, '2023-09-20', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023003', '张三', '高一(2)班', '物理', 78.00, '2023-10-05', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023004', '赵四', '高一(2)班', '化学', 88.00, '2023-10-10', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023005', '孙五', '高一(3)班', '生物', 95.00, '2023-11-01', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023006', '周六', '高一(3)班', '历史', 82.00, '2023-11-05', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023007', '吴七', '高一(4)班', '地理', 90.00, '2023-12-01', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023008', '郑八', '高一(4)班', '政治', 87.00, '2023-12-05', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023009', '冯九', '高二(1)班', '数学', 76.00, '2024-01-10', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023010', '陈十', '高二(1)班', '英语', 94.00, '2024-01-15', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023011', '褚十一', '高二(2)班', '物理', 89.00, '2024-02-01', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023012', '卫十二', '高二(2)班', '化学', 81.00, '2024-02-05', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023013', '蒋十三', '高二(3)班', '生物', 93.00, '2024-03-01', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023014', '沈十四', '高二(3)班', '历史', 86.00, '2024-03-05', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023015', '韩十五', '高二(4)班', '地理', 91.00, '2024-04-01', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023016', '杨十六', '高二(4)班', '政治', 84.00, '2024-04-05', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023017', '朱十七', '高三(1)班', '数学', 79.00, '2024-05-10', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023018', '秦十八', '高三(1)班', '英语', 96.00, '2024-05-15', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023019', '尤十九', '高三(2)班', '物理', 88.00, '2024-06-01', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023020', '许二十', '高三(2)班', '化学', 83.00, '2024-06-05', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023021', '何二十一', '高三(3)班', '生物', 92.00, '2024-07-01', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023022', '吕二十二', '高三(3)班', '历史', 85.00, '2024-07-05', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023023', '施二十三', '高三(4)班', '地理', 90.00, '2024-08-01', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023024', '张二十四', '高三(4)班', '政治', 87.00, '2024-08-05', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023025', '孔二十五', '高一(1)班', '数学', 77.00, '2023-09-25', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023026', '曹二十六', '高一(1)班', '英语', 95.00, '2023-09-30', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023027', '严二十七', '高一(2)班', '物理', 89.00, '2023-10-15', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023028', '华二十八', '高一(2)班', '化学', 82.00, '2023-10-20', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023029', '金二十九', '高一(3)班', '生物', 94.00, '2023-11-10', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023030', '魏三十', '高一(3)班', '历史', 86.00, '2023-11-15', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023031', '陶三十一', '高一(4)班', '地理', 91.00, '2023-12-10', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023032', '姜三十二', '高一(4)班', '政治', 84.00, '2023-12-15', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023033', '戚三十三', '高二(1)班', '数学', 78.00, '2024-01-20', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023034', '谢三十四', '高二(1)班', '英语', 96.00, '2024-01-25', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023035', '邹三十五', '高二(2)班', '物理', 88.00, '2024-02-10', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023036', '喻三十六', '高二(2)班', '化学', 83.00, '2024-02-15', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023037', '吴三十七', '高二(3)班', '生物', 93.00, '2024-03-10', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023038', '柏三十八', '高二(3)班', '历史', 85.00, '2024-03-15', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023039', '水三十九', '高二(4)班', '地理', 90.00, '2024-04-10', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023040', '窦四十', '高二(4)班', '政治', 87.00, '2024-04-15', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023041', '章四十一', '高三(1)班', '数学', 79.00, '2024-05-20', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023042', '云四十二', '高三(1)班', '英语', 96.00, '2024-05-25', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023043', '苏四十三', '高三(2)班', '物理', 88.00, '2024-06-10', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023044', '潘四十四', '高三(2)班', '化学', 83.00, '2024-06-15', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023045', '葛四十五', '高三(3)班', '生物', 92.00, '2024-07-10', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023046', '奚四十六', '高三(3)班', '历史', 84.00, '2024-07-15', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023047', '范四十七', '高三(4)班', '地理', 90.00, '2024-08-10', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023048', '彭四十八', '高三(4)班', '政治', 87.00, '2024-08-15', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023049', '郎四十九', '高一(1)班', '数学', 77.00, '2023-10-01', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023050', '鲁五十', '高一(1)班', '英语', 95.00, '2023-10-05', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023051', '韦五十一', '高一(2)班', '物理', 88.00, '2023-10-25', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023052', '昌五十二', '高一(2)班', '化学', 82.00, '2023-10-30', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023053', '马五十三', '高一(3)班', '生物', 94.00, '2023-11-20', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023054', '苗五十四', '高一(3)班', '历史', 86.00, '2023-11-25', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023055', '凤五十五', '高一(4)班', '地理', 91.00, '2023-12-20', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023056', '花五十六', '高一(4)班', '政治', 83.00, '2023-12-25', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023057', '方五十七', '高二(1)班', '数学', 78.00, '2024-01-30', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023058', '俞五十八', '高二(1)班', '英语', 96.00, '2024-02-01', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023059', '任五十九', '高二(2)班', '物理', 88.00, '2024-02-20', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023060', '袁六十', '高二(2)班', '化学', 83.00, '2024-02-25', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023061', '柳六十一', '高二(3)班', '生物', 92.00, '2024-03-20', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023062', '酆六十二', '高二(3)班', '历史', 85.00, '2024-03-25', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023063', '鲍六十三', '高二(4)班', '地理', 90.00, '2024-04-20', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023064', '史六十四', '高二(4)班', '政治', 87.00, '2024-04-25', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023065', '唐六十五', '高三(1)班', '数学', 79.00, '2024-05-30', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023066', '费六十六', '高三(1)班', '英语', 95.00, '2024-06-01', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023067', '廉六十七', '高三(2)班', '物理', 88.00, '2024-06-20', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023068', '岑六十八', '高三(2)班', '化学', 82.00, '2024-06-25', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023069', '薛六十九', '高三(3)班', '生物', 94.00, '2024-07-20', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023070', '雷七十', '高三(3)班', '历史', 86.00, '2024-07-25', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023071', '贺七十一', '高三(4)班', '地理', 91.00, '2024-08-20', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023072', '倪七十二', '高三(4)班', '政治', 84.00, '2024-08-25', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023073', '汤七十三', '高一(1)班', '数学', 78.00, '2023-10-10', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023074', '滕七十四', '高一(1)班', '英语', 96.00, '2023-10-15', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023075', '殷七十五', '高一(2)班', '物理', 88.00, '2023-11-01', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023076', '罗七十六', '高一(2)班', '化学', 83.00, '2023-11-05', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023077', '毕七十七', '高一(3)班', '生物', 93.00, '2023-11-30', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023078', '郝七十八', '高一(3)班', '历史', 85.00, '2023-12-01', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023079', '邬七十九', '高一(4)班', '地理', 90.00, '2023-12-30', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023080', '安八十', '高一(4)班', '政治', 87.00, '2024-01-01', '2023-2024学年第二学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023081', '常八十一', '高二(1)班', '数学', 79.00, '2024-02-05', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023082', '乐八十二', '高二(1)班', '英语', 96.00, '2024-02-10', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023083', '于八十三', '高二(2)班', '物理', 88.00, '2024-03-01', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023084', '时八十四', '高二(2)班', '化学', 83.00, '2024-03-05', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023085', '傅八十五', '高二(3)班', '生物', 92.00, '2024-03-30', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023086', '皮八十六', '高二(3)班', '历史', 84.00, '2024-04-01', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023087', '卞八十七', '高二(4)班', '地理', 90.00, '2024-04-30', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023088', '齐八十八', '高二(4)班', '政治', 87.00, '2024-05-01', '2023-2024学年第二学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023089', '康八十九', '高三(1)班', '数学', 77.00, '2024-06-05', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023090', '伍九十', '高三(1)班', '英语', 95.00, '2024-06-10', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023091', '余九十一', '高三(2)班', '物理', 88.00, '2024-07-01', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023092', '元九十二', '高三(2)班', '化学', 82.00, '2024-07-05', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023093', '卜九十三', '高三(3)班', '生物', 94.00, '2024-07-30', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023094', '顾九十四', '高三(3)班', '历史', 86.00, '2024-08-01', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023095', '孟九十五', '高三(4)班', '地理', 91.00, '2024-08-30', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023096', '平九十六', '高三(4)班', '政治', 83.00, '2024-09-01', '2024-2025学年第一学期', '高三', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023097', '黄九十七', '高一(1)班', '数学', 78.00, '2023-10-20', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023098', '和九十八', '高一(1)班', '英语', 96.00, '2023-10-25', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023099', '穆九十九', '高一(2)班', '物理', 88.00, '2023-11-10', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023100', '萧一百', '高一(2)班', '化学', 83.00, '2023-11-15', '2023-2024学年第一学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023101', '李一', '高一(1)班', '数学', 90.00, '2024-03-15', '2023-2024学年第二学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023102', '王二', '高一(1)班', '英语', 88.00, '2024-03-20', '2023-2024学年第二学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023103', '张三', '高一(2)班', '物理', 85.00, '2024-04-05', '2023-2024学年第二学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023104', '赵四', '高一(2)班', '化学', 92.00, '2024-04-10', '2023-2024学年第二学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023105', '孙五', '高一(3)班', '生物', 55.00, '2024-05-01', '2023-2024学年第二学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023106', '周六', '高一(3)班', '历史', 70.00, '2024-05-05', '2023-2024学年第二学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023107', '吴七', '高一(4)班', '地理', 65.00, '2024-06-01', '2023-2024学年第二学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023108', '郑八', '高一(4)班', '政治', 95.00, '2024-06-05', '2023-2024学年第二学期', '高一', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023109', '冯九', '高二(1)班', '数学', 60.00, '2024-07-10', '2024-2025学年第一学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00'),
('2023110', '陈十', '高二(1)班', '英语', 75.00, '2024-07-15', '2024-2025学年第一学期', '高二', '2026-02-03 08:00:00', '2026-02-03 08:00:00');

2、智能体插件配置

database

复制代码
mysql+pymysql://root:***@host.docker.internal:3306/###
其中***代表的是你的mysql登陆密码
其中###代表的是你要操作mysql数据库名称
举例
mysql+pymysql://root:123456@host.docker.internal:3306/dify_test

3、配置智能体

5、发布

1、嵌入网站

复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数据库分析助手</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', Arial, sans-serif;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            min-height: 100vh;
            display: flex;
            flex-direction: column;
        }

        .header {
            background: rgba(255, 255, 255, 0.95);
            padding: 20px 0;
            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
        }

        .header-content {
            max-width: 1200px;
            margin: 0 auto;
            padding: 0 20px;
            display: flex;
            align-items: center;
            gap: 15px;
        }

        .logo {
            width: 40px;
            height: 40px;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            border-radius: 8px;
            display: flex;
            align-items: center;
            justify-content: center;
            color: white;
            font-weight: bold;
            font-size: 20px;
        }

        h1 {
            color: #333;
            font-size: 26px;
            font-weight: 500;
        }

        .container {
            flex: 1;
            max-width: 1200px;
            width: 100%;
            margin: 30px auto;
            padding: 0 20px;
            display: flex;
            flex-direction: column;
        }

        .chat-container {
            background: white;
            border-radius: 12px;
            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
            flex: 1;
            display: flex;
            flex-direction: column;
            overflow: hidden;
            min-height: 500px;
        }

        .chat-messages {
            flex: 1;
            padding: 30px;
            overflow-y: auto;
            display: flex;
            flex-direction: column;
            gap: 20px;
        }

        .message {
            display: flex;
            gap: 12px;
            animation: fadeIn 0.3s ease-in;
        }

        @keyframes fadeIn {
            from {
                opacity: 0;
                transform: translateY(10px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        .message.user {
            flex-direction: row-reverse;
        }

        .avatar {
            width: 40px;
            height: 40px;
            border-radius: 50%;
            flex-shrink: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            font-weight: bold;
            color: white;
        }

        .message.user .avatar {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
        }

        .message.assistant .avatar {
            background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
        }

        .message-content {
            max-width: 70%;
            padding: 12px 18px;
            border-radius: 18px;
            line-height: 1.6;
            word-wrap: break-word;
        }

        .message.user .message-content {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            border-bottom-right-radius: 4px;
        }

        .message.assistant .message-content {
            background: #f5f5f5;
            color: #333;
            border-bottom-left-radius: 4px;
        }

        .input-area {
            padding: 20px 30px;
            background: #fafafa;
            border-top: 1px solid #e0e0e0;
        }

        .input-container {
            display: flex;
            gap: 12px;
            align-items: flex-end;
        }

        #messageInput {
            flex: 1;
            padding: 12px 18px;
            border: 2px solid #e0e0e0;
            border-radius: 24px;
            font-size: 15px;
            font-family: inherit;
            resize: none;
            max-height: 120px;
            transition: border-color 0.3s;
        }

        #messageInput:focus {
            outline: none;
            border-color: #667eea;
        }

        #sendButton {
            padding: 12px 30px;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            border: none;
            border-radius: 24px;
            cursor: pointer;
            font-size: 15px;
            font-weight: 500;
            transition: transform 0.2s, box-shadow 0.2s;
        }

        #sendButton:hover {
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
        }

        #sendButton:active {
            transform: translateY(0);
        }

        #sendButton:disabled {
            opacity: 0.5;
            cursor: not-allowed;
            transform: none;
        }

        .welcome-message {
            text-align: center;
            padding: 60px 20px;
            color: #666;
        }

        .welcome-message h2 {
            font-size: 24px;
            margin-bottom: 10px;
            color: #333;
        }

        .welcome-message p {
            font-size: 16px;
        }

        .suggestions {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
            gap: 12px;
            margin-top: 30px;
        }

        .suggestion-card {
            background: white;
            padding: 16px;
            border-radius: 12px;
            cursor: pointer;
            transition: all 0.2s;
            border: 2px solid transparent;
        }

        .suggestion-card:hover {
            border-color: #667eea;
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(102, 126, 234, 0.2);
        }

        .suggestion-card h3 {
            font-size: 15px;
            color: #333;
            margin-bottom: 6px;
        }

        .suggestion-card p {
            font-size: 13px;
            color: #666;
        }

        ::-webkit-scrollbar {
            width: 8px;
        }

        ::-webkit-scrollbar-track {
            background: #f1f1f1;
        }

        ::-webkit-scrollbar-thumb {
            background: #ccc;
            border-radius: 4px;
        }

        ::-webkit-scrollbar-thumb:hover {
            background: #999;
        }
    </style>
</head>
<body>
    <div class="header">
        <div class="header-content">
            <div class="logo">DB</div>
            <h1>数据库分析助手</h1>
        </div>
    </div>

    <div class="container">
        <div class="chat-container">
            <div class="chat-messages" id="chatMessages">
                <div class="welcome-message">
                    <h2>👋 欢迎使用数据库分析助手</h2>
                    <p>我可以帮助您分析数据库性能、优化查询、设计数据结构等</p>
                    <div class="suggestions">
                        <div class="suggestion-card" onclick="sendSuggestion('如何优化慢查询?')">
                            <h3>🚀 查询优化</h3>
                            <p>如何优化慢查询?</p>
                        </div>
                        <div class="suggestion-card" onclick="sendSuggestion('数据库索引设计的最佳实践是什么?')">
                            <h3>📊 索引设计</h3>
                            <p>数据库索引设计的最佳实践是什么?</p>
                        </div>
                        <div class="suggestion-card" onclick="sendSuggestion('如何分析数据库性能瓶颈?')">
                            <h3>⚡ 性能分析</h3>
                            <p>如何分析数据库性能瓶颈?</p>
                        </div>
                    </div>
                </div>
            </div>
            <div class="input-area">
                <div class="input-container">
                    <textarea 
                        id="messageInput" 
                        placeholder="请输入您的问题..." 
                        rows="1"
                        onkeydown="handleKeyDown(event)"
                    ></textarea>
                    <button id="sendButton" onclick="sendMessage()">发送</button>
                </div>
            </div>
        </div>
    </div>
    <script>
        let isFirstMessage = true;

        function handleKeyDown(event) {
            if (event.key === 'Enter' && !event.shiftKey) {
                event.preventDefault();
                sendMessage();
            }
        }

        function sendSuggestion(text) {
            document.getElementById('messageInput').value = text;
            sendMessage();
        }

        function sendMessage() {
            const input = document.getElementById('messageInput');
            const message = input.value.trim();
            
            if (!message) return;

            // 如果是第一条消息,清除欢迎界面
            if (isFirstMessage) {
                document.getElementById('chatMessages').innerHTML = '';
                isFirstMessage = false;
            }

            // 添加用户消息
            addMessage(message, 'user');
            
            // 清空输入框
            input.value = '';
            input.style.height = 'auto';

            // 模拟助手回复
            setTimeout(() => {
                const responses = [
                    '我理解您的问题。针对数据库优化,我建议:\n\n1. 首先分析查询执行计划,找出性能瓶颈\n2. 合理创建索引,但避免过度索引\n3. 优化查询语句,避免SELECT *\n4. 考虑使用缓存机制减少数据库压力\n\n您需要针对哪个方面进行深入了解吗?',
                    '关于这个问题,让我为您详细分析:\n\n数据库性能优化是一个系统工程,需要从多个维度考虑。建议您从监控当前系统指标开始,识别出真正的性能瓶颈所在。',
                    '很好的问题!根据最佳实践,我建议您:\n\n• 定期进行数据库维护和优化\n• 监控关键性能指标\n• 建立合理的备份策略\n• 考虑读写分离和分库分表方案\n\n需要我详细讲解某个方面吗?'
                ];
                const randomResponse = responses[Math.floor(Math.random() * responses.length)];
                addMessage(randomResponse, 'assistant');
            }, 1000);
        }

        function addMessage(text, type) {
            const messagesContainer = document.getElementById('chatMessages');
            const messageDiv = document.createElement('div');
            messageDiv.className = `message ${type}`;
            
            const avatar = document.createElement('div');
            avatar.className = 'avatar';
            avatar.textContent = type === 'user' ? '我' : 'AI';
            
            const content = document.createElement('div');
            content.className = 'message-content';
            content.textContent = text;
            
            messageDiv.appendChild(avatar);
            messageDiv.appendChild(content);
            messagesContainer.appendChild(messageDiv);
            
            // 滚动到底部
            messagesContainer.scrollTop = messagesContainer.scrollHeight;
        }

        // 自动调整输入框高度
        document.getElementById('messageInput').addEventListener('input', function() {
            this.style.height = 'auto';
            this.style.height = Math.min(this.scrollHeight, 120) + 'px';
        });
    </script>
	
	<script>
	 window.difyChatbotConfig = {
	  token: 'Fc1gwDGi1Czz8niA',
	  baseUrl: 'http://localhost',
	  inputs: {
	    // You can define the inputs from the Start node here
	    // key is the variable name
	    // e.g.
	    // name: "NAME"
	  },
	  systemVariables: {
	    // user_id: 'YOU CAN DEFINE USER ID HERE',
	    // conversation_id: 'YOU CAN DEFINE CONVERSATION ID HERE, IT MUST BE A VALID UUID',
	  },
	  userVariables: {
	    // avatar_url: 'YOU CAN DEFINE USER AVATAR URL HERE',
	    // name: 'YOU CAN DEFINE USER NAME HERE',
	  },
	 }
	</script>
	<script
	 src="http://localhost/embed.min.js"
	 id="Fc1gwDGi1Czz8niA"
	 defer>
	</script>
	<style>
	  #dify-chatbot-bubble-button {
	    background-color: #1C64F2 !important;
	  }
	  #dify-chatbot-bubble-window {
	    width: 24rem !important;
	    height: 40rem !important;
	  }
	</style>
	
<style>
  #dify-chatbot-bubble-button {
    background-color: #1C64F2 !important;
  }
  #dify-chatbot-bubble-window {
    width: 24rem !important;
    height: 40rem !important;
  }
</style>
</body>
</html>

将其中粘贴进入即可

2、封装 api

相关推荐
fengyehongWorld1 小时前
Linux 根据端口进行的相关查询
linux
lihao lihao1 小时前
linux匿名管道
linux·运维·服务器
我是一颗柠檬1 小时前
【Java后端技术亮点】热Key探测与本地缓存二级防护:Redis热点问题的终极解决方案
java·redis·后端·缓存·中间件
うちは止水1 小时前
weston出图调试
linux·wayland·weston
STDD1 小时前
Farming Simulator 25(模拟农场 25) Linux 专服搭建完全指南
linux·运维·javascript
好好风格1 小时前
宝塔面板 HTTPS 端口证书不生效排查记录
linux·运维·nginx
Refrain_zc2 小时前
Android 音视频通话核心 —— 音频编码(AAC)完整解析
java
xiaoshuaishuai82 小时前
C# AvaloniaUI 资源找不到报错
java·服务器·前端·windows·c#