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

Win10环境使用ChatBox集成Deep Seek解锁更多玩法

Win10环境使用ChatBox集成Deep Seek解锁更多玩法

前言

之前部署了14b的Deep Seek小模型,已经验证了命令行及接口方式的可行性。但是纯命令行或者PostMan方式调用接口显然不是那么友好:

https://lizhiyong.blog.csdn.net/article/details/145505686

纯命令行能实现的也就一个简单的聊天机器人。接口方式开发一个后端应用系统也不是一时半会儿就能完成的事情。。。

但实际上Deep Seek能做的远不止这些【可以实现长对话、文件识别等好玩惊奇的功能】。故笔者要集成更多组件!!!

参照官网:

https://github.com/deepseek-ai/awesome-deepseek-integration/blob/main/README_cn.md

显然Deep Seek可以不限于集成如下组件:

在这里插入图片描述

故笔者先集成Chatbox试试。别人可能集成的是Open WebUI

https://www.openwebui.com/

这个需要python或者docker环境。Chatbox有C/S的客户端版本,也有B/S的网页版本:

https://chatboxai.app/zh

在这里插入图片描述

笔者选用客户端版本,后续对外暴露服务租给别人使用也方便!!!

OLLAMA配置

参考官方文档:

https://github.com/ollama/ollama/blob/main/docs/faq.md#how-do-i-configure-ollama-server

需要配置的环境变量有:

环境变量说明
OLLAMA_ORIGINS*允许所有IP访问
OLLAMA_HOST0.0.0.0:11434或0.0.0.0访问的IP+端口,没有改默认端口就可以只配置ip
OLLAMA_MODELSC:\Users%username%.ollama\modelsmac:~/.ollama/models,Linux:/usr/share/ollama/.ollama/models,Windows:C:\Users%username%.ollama\models 没有改默认模型存放位置的可以不配

配置完成后需要重启电脑来生效:

在这里插入图片描述

重启后就可以配置Chatbox!!!

配置Chatbox

参考官网文档:

https://chatboxai.app/zh/help-center/connect-chatbox-remote-ollama-service-guide

客户端和网页版大同小异:
在这里插入图片描述

在这里插入图片描述

在设置中选择使用自己的API Key或本地模型,然后当然是选择Ollama API

在这里插入图片描述

就会非常智能地判断出本地已经部署了2个模型。因为是一个OLLAMA部署的2个模型,后续可以自由切换!!!

在这里插入图片描述

还可以配置语言等信息!!!

验证

随便提问一下:

在这里插入图片描述

可以看到Chatbox已经自动拉起了OLLAMA的1.5b小模型!!!至此可以不需要命令,直接在界面操作了!!!

使用Deep Seek模型写代码

选择一个搭档:

在这里插入图片描述

可以看到这里有很多搭档,笔者选个IT专家试试:

在这里插入图片描述

这种情况一定要选择稍微大一点的小模型!!!否则会答非所问。。。模型越大,结果越接近真相!!!

提问

以一个常见的数据集成案例:

使用Java写代码,把主集群hive表数据同步到另一个租户集群

word count: 24, token count: 33, time: 22:32

可以看出由于显卡的CUDA性能不好,速度很慢!!!

推理

Thinking
<think>
好的,我现在需要帮用户解决如何用Java编写代码,将主集群的Hive表数据同步到另一个租户集群的问题。之前已经给出了一步步的解决方案,现在用户直接要求写代码。

首先,我得回顾一下之前的对话。上一次,用户询问了整体步骤,我给出了10个大步骤,包括建立连接、导出数据、传输数据等。这次用户更具体,想要Java代码实现这些步骤。

那我应该怎么做呢?首先,我需要明确每个步骤对应的代码部分。比如,如何在Java中使用JDBC连接Hive,这可能涉及到加载驱动和获取数据库连接。然后是执行SQL语句导出数据到本地文件,接着传输这个文件到目标集群的存储位置,最后再导入到目标Hive表中。

我还需要考虑用户可能对代码的具体实现不太熟悉,所以要详细写出每个部分的代码示例。比如,如何处理ResultSet,如何写数据到本地文件,以及如何使用scp上传文件。

另外,用户可能需要自动化脚本,所以我会建议将这些步骤整合到一个Java程序中,并添加日志记录和异常处理机制。这部分很重要,因为可以确保在出现问题时能够及时发现并解决。

还有,权限问题也不能忽视,虽然代码部分可能不直接处理ACL设置,但可以在注释或说明中提到需要手动配置或后续脚本处理。

最后,测试与验证是关键步骤,应该提醒用户在生产环境部署前进行充分的测试,并考虑监控和维护措施。

总的来说,我需要用简单易懂的语言,分点解释每个部分的代码实现,同时结合之前提供的整体步骤,帮助用户顺利完成数据同步的任务。
</think>

看起来头头是道。。。

代码生成

以下是使用 Java 实现将主集群 Hive 表数据同步到另一个租户集群的代码示例。这个代码基于 JDBC 连接 Hive,并完成数据导出和导入。

1. 添加依赖

pom.xml 中添加以下依赖(如果使用 Maven):

XML<dependency>
    <groupId>org.apache.hive</groupId>
    <artifactId>hive-jdbc</artifactId>
    <version>2.3.7</version>
</dependency>

2. 导出数据到本地文件

JAVAimport java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class HiveDataSynchronizer {

    public static void main(String[] args) {
        try {
            // 连接到源集群(主集群)
            String sourceHiveJdbcUrl = "jdbc:hive2://source_cluster_ip:10000/default";
            String sourceUsername = "admin";
            String sourcePassword = "password";

            Connection sourceConnection = DriverManager.getConnection(sourceHiveJdbcUrl, sourceUsername, sourcePassword);

            // 连接到目标集群(租户集群)
            String targetHiveJdbcUrl = "jdbc:hive2://target_cluster_ip:10000/default";
            String targetUsername = "admin";
            String targetPassword = "password";

            Connection targetConnection = DriverManager.getConnection(targetHiveJdbcUrl, targetUsername, targetPassword);

            // 导出数据到本地文件
            String exportQuery = "INSERT OVERWRITE LOCAL DIRECTORY '/tmp/exported_data' SELECT * FROM your_table_name;";
            Statement sourceStmt = sourceConnection.createStatement();
            sourceStmt.execute(exportQuery);
            sourceStmt.close();

            System.out.println("Data exported to local directory: /tmp/exported_data");

            // 关闭连接
            sourceConnection.close();
            targetConnection.close();

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private static void uploadFilesToTargetCluster(String filePath, String remotePath) {
        try {
            // 使用 SCP 或 SFTP 上传文件到目标集群的存储路径
            // 示例:使用 java-nio-sftp 库或其他工具
            System.out.println("Uploading files to target cluster...");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void importDataToTargetHive(String filePath, Connection targetConnection) {
        try {
            String importQuery = "LOAD DATA INPATH '" + filePath + "' INTO TABLE your_target_table_name;";
            Statement targetStmt = targetConnection.createStatement();
            targetStmt.execute(importQuery);
            targetStmt.close();

            System.out.println("Data imported to target Hive table successfully");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

}

3. 使用工具上传文件到目标集群

在实际项目中,可以使用 scp 或其他工具将导出的文件传输到目标集群。以下是上传文件到目标集群的代码示例:

JAVAimport com.jcraft.jsch.Channel;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

public class FileUploader {

    public static void uploadFile(String localFilePath, String remoteFilePath, String host, String username, String password) {
        try {
            JSch jsch = new JSch();
            Session session = jsch.getSession(username, host);
            session.setPassword(password);
            session.setConfig("StrictHostKeyChecking", "no");
            session.connect();

            Channel channel = session.openChannel("sftp");
            channel.connect();

            // 建立 SFTP 通道
            com.jcraft.jsch.ChannelSftp cschannel = (com.jcraft.jsch.ChannelSftp) channel;
            cschannel.put(localFilePath, remoteFilePath);

            System.out.println("File uploaded successfully!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

4. 整合所有步骤到一个主程序

JAVAimport java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class HiveDataSynchronizer {

    public static void main(String[] args) {
        try {
            // 连接到源集群(主集群)
            String sourceHiveJdbcUrl = "jdbc:hive2://source_cluster_ip:10000/default";
            String sourceUsername = "admin";
            String sourcePassword = "password";

            Connection sourceConnection = DriverManager.getConnection(sourceHiveJdbcUrl, sourceUsername, sourcePassword);

            // 导出数据到本地文件
            String exportQuery = "INSERT OVERWRITE LOCAL DIRECTORY '/tmp/exported_data' SELECT * FROM your_table_name;";
            Statement sourceStmt = sourceConnection.createStatement();
            sourceStmt.execute(exportQuery);
            sourceStmt.close();

            System.out.println("Data exported to local directory: /tmp/exported_data");

            // 上传文件到目标集群
            String filePath = "/tmp/exported_data";
            String remoteFilePath = "/path/to/remote/directory";
            uploadFilesToTargetCluster(filePath, remoteFilePath);

            // 连接到目标集群(租户集群)
            String targetHiveJdbcUrl = "jdbc:hive2://target_cluster_ip:10000/default";
            String targetUsername = "admin";
            String targetPassword = "password";

            Connection targetConnection = DriverManager.getConnection(targetHiveJdbcUrl, targetUsername, targetPassword);

            // 导入数据到目标 Hive 表
            importDataToTargetHive(remoteFilePath, targetConnection);

            System.out.println("Synchronization completed successfully!");

            // 关闭连接
            sourceConnection.close();
            targetConnection.close();

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private static void uploadFilesToTargetCluster(String filePath, String remotePath) {
        try {
            // 示例:使用 SCP 上传文件到目标集群
            FileUploader.uploadFile(filePath + "/*", remotePath, "target_cluster_ip", "admin", "password");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void importDataToTargetHive(String filePath, Connection targetConnection) {
        try {
            String importQuery = "LOAD DATA INPATH '" + filePath + "' INTO TABLE your_target_table_name;";
            Statement targetStmt = targetConnection.createStatement();
            targetStmt.execute(importQuery);
            targetStmt.close();

            System.out.println("Data imported to target Hive table successfully");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

}

说明

  1. 连接到源集群和目标集群:使用 JDBC 连接到 Hive 集群。
  2. 导出数据到本地文件:使用 INSERT OVERWRITE LOCAL DIRECTORY 将数据导出到本地目录。
  3. 上传文件到目标集群:使用 SFTP 或其他工具将文件上传到目标集群的存储路径。
  4. 导入数据到目标 Hive 表:使用 LOAD DATA INPATH 将文件导入到目标 Hive 表中。

注意事项

  1. 需要确保目标集群的安全性,避免敏感信息泄露。
  2. 根据实际需求调整上传工具和路径。
  3. 确保 Hive 表结构与源表一致或进行适当的转换。

word count: 927, token count: 1681, tokens used: 2473, model: Ollama (deepseek-r1:14b), time: 22:34

结论

虽然给出的答案并不优雅,但是离线方式使用不知今夕是何年用了古老的依赖包也情有可原,逻辑基本正确。。。总体来看,已经相当于一个大数据学徒工该有的水平了。。。如果显存大一些跑671b可能结果要满意很多。。。

目前来看,本地部署的14b小模型如果部署在内网,对开发人员和运维人员的生产力会有不小的帮助。。。

但是外网开发的场景,显然使用可联网搜索、已特异化训练过的大模型Agent辅助编程要更合适。

转载请注明出处:https://lizhiyong.blog.csdn.net/article/details/145524481

在这里插入图片描述


http://www.kler.cn/a/538487.html

相关文章:

  • 使用Docker + Ollama在Ubuntu中部署deepseek
  • 【MQ】Spring3 中 RabbitMQ 的使用与常见场景
  • 如何在Vscode中接入Deepseek
  • 力扣-字符串-28 找出字符串中第一个匹配项的下标
  • Mac本地体验LM studio
  • 【starrocks学习】之将starrocks表同步到hive
  • MFC 基础
  • ubuntu 22.04 安装 cuda sdk 11.8
  • Go 语言环境安装指南
  • directx12 3d开发过程中出现的报错 五
  • Kotlin 2.1.0 入门教程(十)if、when
  • 基于生成式语言模型的就业指导
  • 常见string库中的函数(C语言超详细)
  • ProxySQL实现mysql8主从同步读写分离
  • 全面支持DeepSeek接入,聚铭网络以「AI+安全」重新定义网络防御新范式
  • 【ffmpeg 到Qt的图片格式转换】精彩的像素:深入解析 AVFrame 到 QImage 的转换
  • C++:类和对象初识
  • 没有 DevOps 团队
  • MYSQL索引与视图
  • 开源项目介绍-词云生成
  • 如何在C++ QT 程序中集成cef3开源浏览器组件去显示网页?
  • Java爬虫:打造高效的数据抓取利器——详解详情接口设计与实现
  • The First项目报告:从NFT到动漫文化,ANIME的原创衍生IP
  • 如何清理浏览器一段时间以前的缓存
  • Git 冲突解决技巧与实践
  • FPGA高端项目:图像采集+UltraScale GTH光编码+UDP图传架构,高速接口转网络视频传输,提供工程源码和技术支持