企业级大模型应用的Java-Python异构融合架构实践
一、后端语言相关技术生态
Python语言
Python在AI计算领域拥有全面的生态支持:
- 底层工具库: Pandas、NumPy、SciPy、Matplotlib
- 深度学习框架: PyTorch、TensorFlow
- 领域专用框架: HuggingFace Transformers(社区生态为主)
常见Python框架
项目名称 | 描述 | 特点 | 支持模型/技术 |
---|---|---|---|
Dify | 开源大模型开发平台,提供AI工作流、RAG管道、Agent等功能 | 1. 完整AI工作流 2. 模型管理与观测 3. 多模型集成 | GPT、Mistral、Llama3 |
LangChain | 集成多种大模型的开发框架,简化多模型协作 | 1. 统一接口调用 2. 多模型支持 3. NLP任务集成 | GPT、BERT、T5+第三方API |
Gradio | 快速构建模型交互界面 | 1. 快速部署 2. 多数据类型支持 3. 轻量级 | 机器学习/深度学习模型 |
DB-GPT | 企业级智能知识库与BI报告系统(蚂蚁开源) | 1. BI报告生成 2. 数据多元处理 3. 智能问答 | 企业数据分析系统 |
Java语言
Java在AI生态相对薄弱,但仍有关键框架支持企业级应用:
常用Java框架
框架名称 | 描述 | 主要特点 | 适用领域 |
---|---|---|---|
Deeplearning4j | 开源深度学习框架(Java/Scala) | 大规模数据集训练 | 企业级深度学习 |
DJL | AWS开源深度学习库 | 多框架支持(PyTorch/TF) | Java环境模型部署 |
Apache OpenNLP | 自然语言处理工具包 | 基础NLP功能 | 英文文本处理 |
Spring-AI | 基于Spring的大模型开发库 | Spring生态集成 | 业务系统集成 |
LangChain4j | Java版多模态AI开发框架 | LangChain设计理念 | 复杂AI应用 |
二、大模型与Java生态融合方案
2.1 远程API调用方案
技术细节
维度 | 说明 |
---|---|
认证方式 | Bearer Token (Authorization Header) |
请求格式 | 标准OpenAPI规范 |
性能优化 | 连接池管理+异步非阻塞 |
代码示例
// Spring WebClient 示例
WebClient.create("https://api.openai.com/v1")
.post()
.uri("/chat/completions")
.header("Authorization", "Bearer " + apiKey)
.bodyValue(new ChatRequest("gpt-4", "Hello!"))
.retrieve()
.bodyToMono(ChatResponse.class);
2.2 本地服务封装模式
工具对比
工具 | 核心能力 | 适用场景 | Java集成方式 |
---|---|---|---|
HuggingFace TGI | 多GPU并行推理 | 高吞吐场景 | HTTP/gRPC封装 |
vLLM | 显存优化(PagedAttention) | 长文本生成 | Spring Boot Starter |
Ollama | 本地化LLM运行 | 开发测试环境 | OpenAPI兼容调用 |
部署命令
# 启动 Ollama 本地服务,指定模型为 llama3:8b,监听端口为 11434
ollama serve --model llama3:8b --port 11434# 发送一个等效 OpenAI API 的请求到本地 Ollama 服务
curl -X POST http://localhost:11434/v1/chat/completions \-H "Content-Type: application/json" \-d '{"model": "llama3","messages": [{"role": "user","content": "Hello"}]
2.3 进程JNI集成方案
方案 | 性能特点 | 模型格式支持 | 硬件依赖 | 适用场景 |
---|---|---|---|---|
JNI+llama.cpp | CPU优化,支持INT4量化推理 | 官方GGUF格式(专为量化设计) | CPU / 部分GPU | 边缘计算、低资源环境部署 |
JNI+llama2.c | 极简C实现(代码量<500行) | 自定义二进制格式 | CPU | 教学演示/轻量级实验环境 |
AWS DJL | 统一接口支持PyTorch/TensorFlow | 原生框架格式(.pt/.h5等) | CPU/GPU | 企业多框架混合部署场景 |
ONNX Runtime | 工业级跨平台推理优化 | 标准ONNX格式 | CPU/GPU/VPU | 生产环境标准化部署 |
关键技术实现
- llama.cpp JNI 集成
public class LlamaJNI {// Native方法声明public native String generate(String modelPath, String prompt);static {System.loadLibrary("llama_jni"); // 加载C++编译的JNI库}
}
// C++ JNI实现(简化)
JNIEXPORT jstring JNICALL Java_LlamaJNI_generate(JNIEnv* env, jobject obj, jstring modelPath, jstring prompt) {llama_model* model = llama_load_model(env->GetStringUTFChars(modelPath, NULL));// ...执行推理逻辑return env->NewStringUTF(output);
}
模型格式支持
- GGUF优势:
- 2/4/8-bit量化支持
- 跨平台兼容性
- 元数据扩展能力
三、RAG工程实践
3.1 RAG概述
RAG(Retrieval-Augmented Generation)是一种结合信息检索与生成模型的深度学习方法,可基于JAVA进行处理;(目前火山引擎的知识库,就是一种典型的RAG应用)
3.2 RAG通用架构
3.2 Java实现代码
// RAG检索服务(Java层)
public class RagService {@Autowiredprivate VectorDBClient vectorDB; // 向量数据库客户端public String retrieveAndGenerate(String query) {// 1. 检索相关文档List<Document> contexts = vectorDB.semanticSearch(query, 3);// 2. 构建增强提示String augmentedPrompt = buildAugmentedPrompt(query, contexts);// 3. 调用JNI本地模型生成return llamaJNI.generate("llama3-8b.gguf", augmentedPrompt);}private String buildAugmentedPrompt(String query, List<Document> contexts) {StringBuilder prompt = new StringBuilder();prompt.append("基于以下知识:\n");contexts.forEach(doc -> prompt.append(doc.text()).append("\n"));prompt.append("问题:").append(query);return prompt.toString();}
}
四、性能对比
指标 | 远程API | JNI本地调用 |
---|---|---|
延迟 | 100ms~2s | 20ms~500ms |
数据隐私 | 需信任第三方 | 完全私有化 |
硬件成本 | 按API调用计费 | 前期GPU/CPU投入 |
适用场景 | 快速原型验证 | 高安全要求场景 |
相关文章:
企业级大模型应用的Java-Python异构融合架构实践
一、后端语言相关技术生态 Python语言 Python在AI计算领域拥有全面的生态支持: 底层工具库: Pandas、NumPy、SciPy、Matplotlib深度学习框架: PyTorch、TensorFlow领域专用框架: HuggingFace Transformers(社区生态为主) 常见Python框架 …...
深度剖析数据中台架构图,铸造数字文明的基石
🔥🔥 AllData大数据产品是可定义数据中台,以数据平台为底座,以数据中台为桥梁,以机器学习平台为中层框架,以大模型应用为上游产品,提供全链路数字化解决方案。 ✨奥零数据科技官网:http://www.aolingdata.com ✨AllData开源项目:https://github.com/alldatacenter/a…...
python实现基于文心一言大模型的sql小工具
一、准备工作 注册与登录: 登录百度智能云千帆控制台,注册并登录您的账号。 创建千帆应用: 根据实际需求创建千帆应用。创建成功后,获取AppID、API Key、Secret Key等信息。如果已有千帆应用,可以直接查看已有应用的AP…...
飞腾腾锐D2000 + OpenHarmony 4.1release部署deepseek大模型
简介 1.1 飞腾腾锐D2000 飞腾腾锐D2000是一款面向桌面应用的高性能通用处理,集成8个飞腾自主研发的高能效处理器核FTC663,兼 容64位ARMv8指令集并支持ARM64和ARM32两种执行模式,支持单精度、双精度浮点运算指令和ASIMD处理 指令,主…...
进程概念、PCB及进程查看
文章目录 一.进程的概念进程控制块(PCB) 二.进程查看通过指令查看进程通过proc目录查看进程的cwd和exe获取进程pid和ppid通过fork()创建子进程 一.进程的概念 进程是一个运行起来的程序,而程序是存放在磁盘的,cpu要想执行程序的指…...
Oracle 数据库基础入门(一):搭建数据管理基石
在当今数字化时代,数据库作为数据管理的核心工具,对于各类应用系统的开发至关重要。尤其是在 Java 全栈开发领域,掌握一款强大的数据库技术是必备技能。Oracle 数据库以其卓越的性能、高度的可靠性和丰富的功能,在企业级应用中广泛…...
selenium如何实现,开启浏览器的开发者工具模式,并且开启 toggle移动设备模拟模式
核心实现代码 pythonCopy Code from selenium import webdriver from selenium.webdriver.chrome.options import Options def enable_devtools_with_toggle(): options Options() # 强制开启开发者工具 options.add_argument("--auto-open-devtools-for-tabs&quo…...
分布式锁实现(数据库+Redis+Zookeeper)
1. 数据库分布式锁 实现原理 基于唯一索引: 创建一张锁表,通过唯一索引(如锁名称)保证互斥性。 加锁:插入一条记录,成功则获取锁,失败则重试。 解锁:删除对应记录。 乐观锁&…...
七、Spring Boot:初识与项目搭建
深入解析 Spring Boot:初识与项目搭建 Spring Boot 是基于 Spring Framework 的开源 Java 基础框架,旨在简化 Spring 应用的开发过程。它通过“约定优于配置”的理念,极大地减少了开发中的配置工作,同时提供了“开箱即用”的功能…...
记录一下用docker克隆某授权制定ip的环境恢复
#首先还是要看日志根据问题去进行调整 java web的老项目配置文件一般是 bin启动里边的脚本 还有conf中的 xml配置文件 再或者就是classes中的配置文件,再或者就是lib中的jar包中的配置文件 1.安装docker 2.创建docker网络 docker network create --driver bridge --subnet…...
【含文档+PPT+源码】基于微信小程序的健康饮食食谱推荐平台的设计与实现
项目介绍 本课程演示的是一款基于微信小程序的健康饮食食谱推荐平台的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本…...
主流虚拟化技术讲解
目录 VMware vSphere Microsoft Hyper-V KVM(Kernel-based Virtual Machine) OpenStack VMware vSphere 架构与组件:VMware vSphere 是基于裸金属虚拟化技术的平台,核心组件包括 ESXi 主机和 vCenter Server。ESXi 是虚拟化层…...
java开发——为什么要使用动态代理?
举个例子:假如有一个杀手专杀男的,不杀女的。代码如下: public interface Killer {void kill(String name, String sex);void watch(String name); }public class ManKiller implements Killer {Overridepublic void kill(String name, Stri…...
kotlin 知识点一 变量和函数
在Kotlin中定义变量的方式和Java 区别很大,在Java 中如果想要定义一个变 量,需要在变量前面声明这个变量的类型,比如说int a表示a是一个整型变量,String b表 示b是一个字符串变量。而Kotlin中定义一个变量,只允许在变量…...
将CUBE或3DL LUT转换为PNG图像
概述 在大部分情况下,LUT 文件通常为 CUBE 或 3DL 格式。但是我们在 OpenGL Shader 中使用的LUT,通常是图像格式的 LUT 文件。下面,我将教大家如何将这些文件转换为 PNG 图像格式。 条形LUT在线转换(不是8x8网络)&am…...
侯捷 C++ 课程学习笔记:类的声明与构造函数
目录 一、类的声明 二、内联函数 三、访问级别 四、构造函数 五、构造函数重载 六、实际应用案例 七、学习心得 一、类的声明 类的声明是定义类的基本结构,包括类的成员变量和成员函数。类的声明分为类头和类体两部分。 类头(class head…...
BGP状态和机制
BGP邻居优化 为了增加稳定性,通常建议实验回环口来建立邻居。更新源:建立邻居和邻居所学习到的路由的下一跳。多跳:EBGP邻居建立默认选哟直连,因为TTL=1,如果非直连,必须修改TTL。命令备注peer 2.2.2.2 connect-interface lo1配置更新源peer 2.2.2.2 ebgp-max-hop 2配置T…...
MongoDB 数据库简介
MongoDB 数据库简介 引言 随着互联网技术的飞速发展,数据已经成为企业的重要资产。为了高效地管理和处理这些数据,数据库技术应运而生。MongoDB作为一种流行的NoSQL数据库,因其灵活的数据模型和高效的数据处理能力,受到了广泛的关注。本文将为您详细介绍MongoDB的基本概念…...
浏览器下载vue.js.devtools,谷歌浏览器和edg浏览器
1、谷歌浏览器下载: 情况一:如果谷歌应用商店可以打开,那么就直接到谷歌应用商店下载,直接搜索vue.js.devtools添加扩展即可。 情况二:谷歌浏览器的谷歌应用商城打不开,那么就百度搜索极简插件找到vue.js.…...
Android AOSP系统裁记录
Android 系统裁剪是指根据需求移除不必要的组件和功能,以优化系统性能、减少存储占用或满足特定设备需求。以下是 Android 系统裁剪的基本步骤: 1. 准备环境 操作系统:推荐使用 Ubuntu 或 macOS。 工具: Android SDK Android N…...
Could not download npm for node v14.21.3(nvm无法下载节点v14.21.3的npm)
场景描述:之前的项目用的是node以前的版本,使用nvm没下载下来,npm命令执行不了 错误如下图,15版本的node同理,下载的都是.exe可执行文件的扩展名,使用npm命令终端无法识别 解决思路:去node官网…...
React进阶之React核心源码解析(三)
React核心源码解析 diff多节点比较diff两轮遍历比较第一轮比较第二轮比较Update 状态更新Concurrent Modediff 多节点比较diff isArray方法比较 节点更新// 更新前 <ul><li key="0" className="before">0<li><li key=...
2025吐槽季第一弹---腾讯云EO边缘安全加速平台服务
前言: 关于EO边缘安全加速平台服务 参照:产品概述,具体如下: 边缘安全加速平台 EO(Tencent Cloud EdgeOne,下文简称为 EdgeOne)是国内首款基于全新架构的真正一体化的边缘安全加速平台。提供全面的安全防…...
Dify自定义工作流集成指南:对接阿里云百炼文生图API的实现方案
dify工作流的应用基本解释 dify应用发布相关地址:应用发布 | Dify 根据官方教程,我们可以看到dify自定义的工作流可以发布为----工具 这个教程将介绍如何通过工作流建立一个使用阿里云百炼文生图模型。 工具则可以给其他功能使用,如agent…...
WebSocket简单介绍 并接入deepseek
目录 什么是 WebSocket?工作原理: 为什么需要 WebSocket?WebSocket 的优势HTTP 和 WebSocket 的区别WebSocket 的劣势WebSocket 的应用场景WebSocket 握手过程1. 客户端发起握手请求2. 服务器响应握手请求3. 建立连接 WebSocket 事件处理WebS…...
android 新增native binder service 方式(三)
书接上回,继续第三种方式,是手动生成 service binder 的方法,项目结构 1,编译aidl aidl 文件保持不变,如何生成Bn和Bp 文件呢。 aidl -I ./libserviceaidl/aidl -h ./ -o ./ --langcpp libserviceaidl/aidl/com/test/IService.a…...
linux--多进程开发(5)--进程
进程间通讯概念 每两个进程之间都是独立的资源分配单元,不同进程之间不能直接访问另一个进程的资源。 但不同的进程需要进行信息的交互和状态的传递等,因此需要进程间通信(IPC,inter processes cimmunication) 进程通信的目的: …...
分享httprunner 结合django实现平台接口自动化方案
说明,可以直接在某个视图集定义自定义接口来验证。 调试1:前端界面直接编写yaml文件. 新增要实现存数据到mysql,同时存文件到testcase下, 如test.yaml 更新yaml数据,同时做到更新 testcase下的文件,如test.yaml acti…...
前端面试题之HTML篇
1.src和href的区别 src用于替换当前元素,href用于在当前文档和引用资源之间确立联系。 src可用于img、input、style、script、iframe---同步加载执行 href可用于link、a---异步 1.用途不同 src 用于引入外部资源,通常是图像、视频、JavaScript 文件等&am…...
Selenium 调用模型接口实现功能测试
要使用 Selenium 调用模型接口实现功能测试,可按以下步骤进行: 1. 环境准备 安装 Selenium:使用 pip install selenium 安装 Selenium 库。安装浏览器驱动:根据使用的浏览器(如 Chrome、Firefox 等)下载对应的驱动,并将其添加到系统的环境变量中。例如,Chrome 浏览器需…...
java后端开发day18--学生管理系统
(以下内容全部来自上述课程) 1.业务分析并搭建主菜单 1.需求 采取控制台的方式去书写学生管理系统 2.分析 1.初始菜单 2.学生类 属性:id,姓名,年龄,家庭住址 3.添加功能 键盘录入每一个学生信息并…...
计算机毕业设计SpringBoot+Vue.jst0图书馆管理系统(源码+LW文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
【DeepSeek】【GPT-Academic】:DeepSeek集成到GPT-Academic(官方+第三方)
目录 1 官方deepseek 1.1 拉取学术GPT项目 1.2 安装依赖 1.3 修改配置文件中的DEEPSEEK_API_KEY 2 第三方API 2.1 修改DEEPSEEK_API_KEY 2.2 修改CUSTOM_API_KEY_PATTERM 2.3 地址重定向 2.4 修改模型参数 2.5 成功调用 2.6 尝试添加一个deepseek-r1参数 3 使用千帆…...
生成对抗网络(GAN):让机器学习“创造”新世界
目录 引言 什么是生成对抗网络(GAN)? GAN的核心原理 GAN的损失函数 GAN的变种 1. 条件生成对抗网络(Conditional GAN, cGAN) 2. 深度卷积生成对抗网络(DCGAN) 3. 生成对抗网络的 Wassers…...
JavaScript系列(87)--Webpack 高级配置详解
Webpack 高级配置详解 🛠️ Webpack 是前端工程化中最流行的构建工具之一,掌握其高级配置可以帮助我们构建更高效、更优化的应用。本文将深入探讨Webpack的高级配置技巧和最佳实践。 Webpack 核心概念回顾 🌟 💡 小知识…...
48.日常算法
1.面试题 03.06. 动物收容所 题目来源 动物收容所。有家动物收容所只收容狗与猫,且严格遵守“先进先出”的原则。在收养该收容所的动物时,收养人只能收养所有动物中“最老”(由其进入收容所的时间长短而定)的动物,或…...
MySql数据库运维学习笔记
数据库运维常识 DQL、DML、DCL 和 DDL 是 SQL(结构化查询语言)中的四个重要类别,它们分别用于不同类型的数据库操作,下面为你简单明了地解释这四类语句: 1. DQL(数据查询语言,Data Query Langu…...
Starlink卫星动力学系统仿真建模第十讲-基于SMC和四元数的卫星姿态控制示例及Python实现
基于四元数与滑模控制的卫星姿态控制 一、基本原理 1. 四元数姿态表示 四元数运动学方程: 3. 滑模控制设计 二、代码实现(Python) 1. 四元数运算工具 import numpy as npdef quat_mult(q1, q2):"""四元数乘法""…...
MongoDB学习
MongoDB 是一种流行的 NoSQL 数据库,以文档存储为核心,适用于高灵活性、高扩展性的场景。本文将从基础概念到实际应用,带你快速掌握 MongoDB 的核心操作。 1. MongoDB 简介 什么是 MongoDB? MongoDB 是一个基于分布式文件存储的…...
水利工程安全包括哪几个方面
水利工程安全培训的内容主要包括以下几个方面: 基础知识和技能培训 : 法律法规 :学习水利工程相关的安全生产法律法规,了解安全生产标准及规范。 事故案例 :通过分析事故案例,了解事故原因和教训&#x…...
九、数据治理架构流程
一、总体结构 《数据治理架构流程图》(Data Governance Architecture Flowchart) 水平结构:流程图采用水平组织,显示从数据源到数据应用的进程。 垂直结构:每个水平部分进一步划分为垂直列,代表数据治理的…...
Spring boot中的@ConfigurationProperties注解
Spring boot中的ConfigurationProperties注解 ConfigurationProperties 是 Spring Boot 提供的一个强大注解,用于将配置文件(如 application.properties 或 application.yml)中的配置绑定到一个 Java 对象中。它不仅简化了配置管理ÿ…...
04性能监控与调优篇(D2_JVM调优⼯具)
目录 学习前言 讲解一:理论篇(深入理解JVM第三版) 一、虚拟机性能监控、故障处理工具 1. 基本介绍 2. 基础故障处理工具 jps:虚拟机进程状况工具 jstat:虚拟机统计信息监视工具 jinfo:Java配置信息工…...
DeepSeek 提示词:基础结构
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
OkHttp、Retrofit、RxJava:一文讲清楚
一、okHttp的同步和异步请求 Call 是 OkHttp 的核心接口,代表一个已准备好执行的 HTTP 请求。它支持 同步 和 异步 两种模式: enqueue——>okHttp异步 OkHttpClient client new OkHttpClient();Request request new Request.Builder().url("…...
AI前端加速科学研究:ScriptEcho赋能科研新纪元
科学研究正面临前所未有的挑战。数据以前所未有的速度爆炸式增长,研究课题也变得日益复杂。如何高效地处理海量数据、构建复杂模型、并将其转化为有意义的结论,成为摆在科研人员面前的一道难题。传统的科研模式往往需要耗费大量的时间和精力在数据处理、…...
从零到一:如何用阿里云百炼和火山引擎搭建专属 AI 助手(DeepSeek)?
本文首发:从零到一:如何用阿里云百炼和火山引擎搭建专属 AI 助手(DeepSeek)? 阿里云百炼和火山引擎都推出了免费的 DeepSeek 模型体验额度,今天我和大家一起搭建一个本地的专属 AI 助手。 阿里云百炼为 …...
ChatGPT背后的理论基础:从预训练到微调的深度解析
友情提示:本文内容由银河易创(https://ai.eaigx.com)AI创作平台GPT-4o-mini模型生成,仅供参考。请根据具体情况和需求进行适当的调整和验证。 随着人工智能特别是自然语言处理技术的飞速发展,ChatGPT作为一种强大的对话…...
Java八股文(下)
Java八股文下篇 八、JVM高级篇1、JVM的内存模型以及分区介绍一下?2、四种引用方式有什么?3、判断是否为垃圾算法?4、垃圾回收算法介绍一下?5、类的生命周期以及类加载过程6、加载器种类有什么?7、什么是双亲委派模型以…...
软考高级【网络规划设计师】 综合知识
引言:软考高级【网络规划设计师】共分为3个部分,综合知识,案例分析,论文。这里主要讲诉综合知识的相关内容。综合知识一共75道单选,题目跟网工类似,稍难。 第1章 计算机网络基础 考点分析: 本…...