​维基框架 (Wiki Framework) 1.1.0 版本发布​ 提供多模型 AI 辅助开发


介绍

多模型AI辅助开发

维基框架1.1.0集成了主流AI引擎的统一接口,支持开发者按需调用不同模型的优势能力:

  • DeepSeek​:专注代码生成与重构,擅长复杂业务逻辑实现
  • ChatGPT​:多模态推理能力,适用于系统架构设计
  • Grok​:实时数据分析,优化生产环境问题诊断
  • DouBao​:中文语义深度理解,提升本土化文档质量
  • Qwen3​:强化数学推理,专精财务/统计模块开发,支持在线搜索功能

通过智能路由机制,系统根据代码特征自动选择最佳模型(可手动配置)。开发者可同时使用多个模型协同工作,例如用DeepSeek生成代码,Qwen3验证事务,DouBao编写文档。

使用

运行环境要求

最低JDK版本:17+(1.0.7及更早版本支持Java 8)

统一接口架构

public static void main(String[] args) {
CdkjApplication.run(AiApplication.class, args);
QwenConfig config = new QwenConfig();
config.setApiKey("sk-xxxx");
QwenService chatService = (QwenService) AiUtils.findAiService(config);
System.out.printf("AI回复" + chatService.chat("你好,请介绍一下你呢。"));

config.setModel(Qwen.QWEN_VL_MAX_LATEST.getModel());
QwenService service = AiUtils.findAiService(config, QwenService.class);
System.out.printf("AI回复" + service.chatVision(List.of("介绍这个图片。"), List.of("https://framewiki.com/logo.png")));
}

依赖引入


com.framewiki
wiki-all
1.1.0

模块介绍

模块目录

配置读取

package com.cdkjframework.ai.model.qwen;

import com.cdkjframework.ai.core.impl.BaseAiConfig;
import com.cdkjframework.ai.enums.ModelsName;
import com.cdkjframework.ai.enums.Openai;
import com.cdkjframework.ai.enums.Qwen;
import com.cdkjframework.util.tool.StringUtils;

/**
 * @ProjectName: wiki-framework
 * @Package: com.cdkjframework.ai.model.qwen
 * @ClassName: QwenConfig
 * @Description: java类作用描述
 * @Author: xiaLin
 * @Date: 2025/8/3 9:07
 * @Version: 1.0
 */
public class QwenConfig extends BaseAiConfig {
/**
 * 构造函数
 */
public QwenConfig() {
// API接口地址
super.setApiUrl("https://dashscope.aliyuncs.com/compatible-mode/v1");
if (StringUtils.isNullAndSpaceOrEmpty(super.getModel())) {
super.setModel(Qwen.QWEN_PLUS.getModel());
}
}

/**
 * 构造函数
 *
 * @param apiKey API密钥
 */
public QwenConfig(String apiKey) {
this();
super.setApiKey(apiKey);
}

/**
 * 获取模型(厂商)名称
 *
 * @return 返回模型(厂商)名称
 */
@Override
public String getModelName() {
return ModelsName.QWEN.getValue();
}
}

服务注入

package com.cdkjframework.ai.model.qwen;

import com.cdkjframework.ai.core.AiConfig;
import com.cdkjframework.ai.core.AiProvider;
import com.cdkjframework.ai.enums.ModelsName;
import com.cdkjframework.ai.model.qwen.impl.QwenServiceImpl;

/**
 * @ProjectName: wiki-framework
 * @Package: com.cdkjframework.ai.model.qwen
 * @ClassName: QwenProvider
 * @Description: java类作用描述
 * @Author: xiaLin
 * @Date: 2025/8/3 9:08
 * @Version: 1.0
 */
public class QwenProvider implements AiProvider {
/**
 * 获取服务名称
 *
 * @return 返回服务名称
 */
@Override
public String getServiceName() {
return ModelsName.QWEN.getValue();
}

/**
 * 创建服务
 *
 * @param config 配置信息
 */
@Override
public QwenService create(AiConfig config) {
return new QwenServiceImpl(config);
}
}

接口

服务接口

package com.cdkjframework.ai.model.qwen;

import java.util.List;
import java.util.function.Consumer;

import com.cdkjframework.ai.constant.AiCommon;
import com.cdkjframework.ai.core.AiService;
import com.cdkjframework.ai.core.Message;
import com.cdkjframework.builder.ResponseBuilder;

/**
 * @ProjectName: wiki-framework
 * @Package: com.cdkjframework.ai.model.qwen
 * @ClassName: QwenService
 * @Description: java类作用描述
 * @Author: xiaLin
 * @Date: 2025/8/3 9:08
 * @Version: 1.0
 */
public interface QwenService extends AiService {

/**
 * 搜索
 */
String EXTRA_BODY = "extra_body";

/**
 * 搜索值
 */
String EXTRA_BODY_VALUE = "{\\"enable_search\\": True\\"}";

/**
 * 流式参数
 */
String STREAM_OPTIONS = "stream_options";

/**
 * 流式参数值
 */
String STREAM_OPTIONS_VALUE = "{\\"include_usage\\": True}";

/**
 * 对话
 * messages 可以由当前对话组成的消息列表,可以设置role,content。详细参考官方文档
 *
 * @param messages 消息列表
 * @return 返回AI回复的消息
 */
String chatSearch(final List messages);

/**
 * 对话-SSE 流式输出
 * messages 可以由当前对话组成的消息列表,可以设置role,content。详细参考官方文档
 *
 * @param messages 消息列表
 * @param callback 流式数据回调函数
 */
void chatSearch(final List messages, final Consumer callback);

/**
 * 图像理解:模型会依据传入的图片信息以及问题,给出回复。
 *
 * @param prompts 提问
 * @param images 图片列表/或者图片Base64编码图片列表(URI形式)
 * @return AI回答内容
 */
String chatVision(List prompts, final List images);

/**
 * 图像理解-SSE流式输出
 *
 * @param prompts 提问
 * @param images 传入的图片列表地址/或者图片Base64编码图片列表(URI形式)
 * @param callback 流式数据回调函数
 */
void chatVision(List prompts, final List images, final Consumer callback);

/**
 * 图像理解:模型会依据传入的图片信息以及问题,给出回复。
 *
 * @param prompts 提问
 * @param videos 视频列表(URI形式)
 * @return AI回答内容
 */
String chatVideoVision(List prompts, final List> videos);

/**
 * 图像理解-SSE流式输出
 *
 * @param prompts 提问
 * @param videos 视频列表(URI形式)
 * @param callback 流式数据回调函数
 */
void chatVideoVision(List prompts, final List> videos, final Consumer callback);
}

服务接口实现

package com.cdkjframework.ai.model.qwen.impl;

import com.cdkjframework.ai.core.AiConfig;
import com.cdkjframework.ai.core.Message;
import com.cdkjframework.ai.core.impl.BaseAiService;
import com.cdkjframework.ai.model.qwen.QwenService;
import com.cdkjframework.builder.ResponseBuilder;
import com.cdkjframework.constant.IntegerConsts;
import com.cdkjframework.util.tool.JsonUtils;
import com.cdkjframework.util.tool.ThreadUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;

import static com.cdkjframework.ai.constant.AiConstant.*;
import static com.cdkjframework.ai.constant.AiConstant.Qwen.*;

/**
 * @ProjectName: wiki-framework
 * @Package: com.cdkjframework.ai.model.qwen.impl
 * @ClassName: QwenServiceImpl
 * @Description: Qwen AI 服务实现类
 * @Author: xiaLin
 * @Date: 2025/8/3 9:08
 * @Version: 1.0
 */
public class QwenServiceImpl extends BaseAiService implements QwenService {

/**
 * 构造函数
 *
 * @param config AI 服务接口
 */
public QwenServiceImpl(AiConfig config) {
super(config);
}

/**
 * 对话
 * messages 可以由当前对话组成的消息列表,可以设置role,content。详细参考官方文档
 *
 * @param messages 消息列表
 * @return 返回AI回复的消息
 */
@Override
public String chat(List messages) {
final String paramJson = buildChatRequestBody(messages, Boolean.FALSE);
// 发送POST请求
final StringBuilder response = post(CHAT_ENDPOINT, paramJson);
// 返回结果
return response.toString();
}

/**
 * 对话-检索增强
 * messages 可以由当前对话组成的消息列表,可以设置role,content。详细参考官方文档
 *
 * @param messages 消息列表
 * @return 返回AI回复的消息
 */
@Override
public String chatSearch(List messages) {
final String paramJson = buildChatRequestBody(messages, Boolean.TRUE);
// 发送POST请求
final StringBuilder response = post(CHAT_ENDPOINT, paramJson);
// 返回结果
return response.toString();
}

/**
 * 对话-SSE 流式输出
 * messages 可以由当前对话组成的消息列表,可以设置role,content。详细参考官方文档
 *
 * @param messages 消息列表
 * @param callback 流式数据回调函数
 */
@Override
public void chat(List messages, Consumer callback) {
Map paramMap = buildChatStreamRequestBody(messages, Boolean.FALSE);
ThreadUtils.newThread(() -> postStream(CHAT_ENDPOINT, paramMap, callback), QWEN_CHAT_SSE).start();
}

/**
 * 对话-SSE 流式输出
 * messages 可以由当前对话组成的消息列表,可以设置role,content。详细参考官方文档
 *
 * @param messages 消息列表
 * @param callback 流式数据回调函数
 */
@Override
public void chatSearch(List messages, Consumer callback) {
Map paramMap = buildChatStreamRequestBody(messages, Boolean.TRUE);
ThreadUtils.newThread(() -> postStream(CHAT_ENDPOINT, paramMap, callback), QWEN_CHAT_SSE).start();
}

/**
 * 对话-检索增强
 * messages 可以由当前对话组成的消息列表,可以设置role,content。详细参考官方文档
 *
 * @param prompts 消息列表
 * @return 返回AI回复的消息
 */

@Override
public String chatVision(List prompts, List images) {
// 构建请求体
String paramJson = buildChatVisionRequestBody(prompts, images);
return post(CHAT_ENDPOINT, paramJson).toString();
}

/**
 * 对话 VISION SSE 流式输出
 * messages 可以由当前对话组成的消息列表,可以设置role,content。详细参考官方文档
 *
 * @param prompts 提词
 * @param images 图片列表
 * @param callback 流式数据回调函数
 */
@Override
public void chatVision(List prompts, List images, Consumer callback) {
// 构建请求体
Map paramMap = buildChatVisionStreamRequestBody(prompts, images);
ThreadUtils.newThread(() -> postStream(CHAT_ENDPOINT, paramMap, callback), QWEN_CHAT_VISION_SSE).start();
}

/**
 * 图像理解:模型会依据传入的图片信息以及问题,给出回复。
 *
 * @param prompts 提问
 * @param videos视频列表(URI形式)
 * @return AI回答内容
 */
@Override
public String chatVideoVision(List prompts, List> videos) {
// 构建请求体
String paramJson = buildChatVideoRequestBody(prompts, videos);
return post(CHAT_ENDPOINT, paramJson).toString();
}

/**
 * 图像理解-SSE流式输出
 *
 * @param prompts提问
 * @param videos 视频列表(URI形式)
 * @param callback 流式数据回调函数
 */
@Override
public void chatVideoVision(List prompts, List> videos, Consumer callback) {
// 构建请求体
Map paramMap = buildChatVideoStreamRequestBody(prompts, videos);
ThreadUtils.newThread(() -> postStream(CHAT_ENDPOINT, paramMap, callback), QWEN_CHAT_VISION_SSE).start();
}

/**
 * 构建chat请求体
 *
 * @param messages 消息列表
 * @param search 是否搜索
 * @return 返回消息字符串
 */
private String buildChatRequestBody(final List messages, boolean search) {
final Map paramMap = new HashMap<>();
buildRequestBody(Boolean.FALSE, search, paramMap, messages);
// 合并其他参数
paramMap.putAll(config.getAddConfigMap());

// JSON 序列化
return JsonUtils.objectToJsonString(paramMap);
}

/**
 * 构建chatVision请求体
 *
 * @param prompts 提词
 * @param images 图片列表
 * @return 请求体字符串
 */
private String buildChatVisionRequestBody(List prompts, final List images) {
// 使用JSON工具
Map paramMap = buildRequestBody(Boolean.FALSE, prompts, images);
return JsonUtils.objectToJsonString(paramMap);
}

/**
 * 构建chatStream请求体
 *
 * @param messages 消息列表
 * @return 返回消息集合
 */
private Map buildChatStreamRequestBody(final List messages, boolean search) {
final Map paramMap = new HashMap<>();
buildRequestBody(Boolean.TRUE, search, paramMap, messages);
// 合并其他参数
paramMap.putAll(config.getAddConfigMap());

return paramMap;
}

/**
 * 构建图片生成请求体
 *
 * @param prompts 描述
 * @param images 图片
 * @return 请求体
 */
private Map buildChatVisionStreamRequestBody(List prompts, final List images) {
// 返回参数
return buildRequestBody(Boolean.TRUE, prompts, images);
}

/**
 * 构建视频生成请求体
 *
 * @param prompts 描述
 * @param videos 图片
 * @return 请求体
 */
private String buildChatVideoRequestBody(List prompts, final List> videos) {
// 使用JSON工具
Map paramMap = buildVideoRequestBody(Boolean.FALSE, prompts, videos);
return JsonUtils.objectToJsonString(paramMap);
}

/**
 * 构建视频生成请求体
 *
 * @param prompts 描述
 * @param videos 图片
 * @return 请求体
 */
private Map buildChatVideoStreamRequestBody(List prompts, final List> videos) {
// 返回参数
return buildVideoRequestBody(Boolean.TRUE, prompts, videos);
}

/**
 * 构建请求体
 *
 * @param stream 是否流式
 * @param prompts 提词
 * @param videos 图片列表
 * 
 * @return 请求体集合
 */
private Map buildVideoRequestBody(boolean stream, List prompts,
final List> videos) {
// 定义消息结构
final List messages = new ArrayList<>();
final List content = getVideoObjects(prompts, videos);

messages.add(new Message(USER, content));

// 使用JSON工具
final Map paramMap = new HashMap<>();
if (stream) {
paramMap.put(STREAM, Boolean.TRUE);
}
paramMap.put(MODEL, config.getModel());
paramMap.put(MESSAGES, messages);
// 合并其他参数
paramMap.putAll(config.getAddConfigMap());
return paramMap;
}

/**
 * 构建请求体
 *
 * @param stream是否流式
 * @param prompts 提词
 * @param images图片列表
 * 
 * @return 请求体集合
 */
private Map buildRequestBody(boolean stream, List prompts, final List images) {
// 定义消息结构
final List messages = new ArrayList<>();
final List content = getObjects(prompts, images);

messages.add(new Message(USER, content));

// 使用JSON工具
final Map paramMap = new HashMap<>();
if (stream) {
paramMap.put(STREAM, Boolean.TRUE);
}
paramMap.put(MODEL, config.getModel());
paramMap.put(MESSAGES, messages);
// 合并其他参数
paramMap.putAll(config.getAddConfigMap());
return paramMap;
}

/**
 * 获取图片内容
 *
 * @param prompts 提词
 * @param videos 图片列表
 * 
 * @return 图片内容
 */
private static List getVideoObjects(List prompts, List> videos) {
final List content = new ArrayList<>(videos.size());
for (List video : videos) {
int idx = videos.indexOf(video);
String prompt = prompts.get(idx);
// 构建视频内容
HashMap urlMap = new HashMap<>(IntegerConsts.TWO);
urlMap.put(TYPE, VIDEO);
urlMap.put(VIDEO, video);
content.add(urlMap);

// 构建文本内容
final Map contentMap = new HashMap<>(IntegerConsts.TWO);
contentMap.put(TYPE, TEXT);
contentMap.put(TEXT, prompt);
content.add(contentMap);
}
return content;
}

/**
 * 获取视频内容
 *
 * @param prompts 提词
 * @param images图片列表
 * 
 * @return 图片内容
 */
private static List getObjects(List prompts, List images) {
final List content = new ArrayList<>(IntegerConsts.ONE);
for (String img : images) {
int idx = img.indexOf(img);
String prompt = prompts.get(idx);

// 构建图片内容
HashMap imgUrlMap = new HashMap<>(IntegerConsts.ONE);
imgUrlMap.put(TYPE, IMAGE_URL);
HashMap imgMap = new HashMap<>(IntegerConsts.ONE);
imgMap.put(URL, img);

imgUrlMap.put(IMAGE_URL, imgMap);
content.add(imgUrlMap);

HashMap urlMap = new HashMap<>(IntegerConsts.TWO);
urlMap.put(TYPE, TEXT);
urlMap.put(TEXT, prompt);

content.add(urlMap);
}

return content;
}

/**
 * 构建请求体
 *
 * @param stream 是否流式
 * @param search 是否搜索
 * @param paramMap 参数集合
 * @param messages 聊天消息
 */
private void buildRequestBody(boolean stream, boolean search, final Map paramMap,
final List messages) {
paramMap.put(MODEL, config.getModel());
paramMap.put(MESSAGES, messages);
if (stream) {
paramMap.put(STREAM, Boolean.TRUE);
paramMap.put(STREAM_OPTIONS, STREAM_OPTIONS_VALUE);
}
if (search) {
paramMap.put(EXTRA_BODY, EXTRA_BODY_VALUE);
}
}

}

AI工厂

package com.cdkjframework.ai;

import com.cdkjframework.ai.core.AiConfig;
import com.cdkjframework.ai.core.AiProvider;
import com.cdkjframework.ai.core.AiService;
import com.cdkjframework.exceptions.GlobalRuntimeException;

import java.util.Map;
import java.util.ServiceLoader;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 创建 AiFactory 工厂类
 *
 * @ProjectName: wiki-framework
 * @Package: com.cdkjframework.ai
 * @ClassName: AiFactory
 * @Description: 创建 AiFactory 工厂类
 * @Author: xiaLin
 * @Version: 1.0
 */
public class AiFactory {
/**
 * 创建 AiFactory 工厂类
 */
private static final Map PROVIDERS = new ConcurrentHashMap<>();

// 加载所有 AiProvider 实现类
static {
final ServiceLoader loader = ServiceLoader.load(AiProvider.class);
for (final AiProvider provider : loader) {
PROVIDERS.put(provider.getServiceName().toLowerCase(), provider);
}
}


/**
 * 获取AI服务
 *
 * @param config AI 配置
 * @return AI服务实例
 */
public static AiService findAiService(final AiConfig config) {
return findAiService(config, AiService.class);
}

/**
 * 获取AI服务
 *
 * @param config Ai 配置
 * @param clazzAI服务类
 * @param AI服务类
 * @return clazz对应的AI服务类实例
 */
@SuppressWarnings("unchecked")
public staticT findAiService(final AiConfig config, final Class clazz) {
final AiProvider provider = PROVIDERS.get(config.getModelName().toLowerCase());
if (provider == null) {
throw new IllegalArgumentException("不支持的模型: " + config.getModelName());
}

final AiService service = provider.create(config);
if (!clazz.isInstance(service)) {
throw new GlobalRuntimeException("模型服务不属于指定类型: " + clazz.getSimpleName());
}

// 返回服务
return (T) service;
}
}

AI工具

package com.cdkjframework.ai;

import com.cdkjframework.ai.core.AiConfig;
import com.cdkjframework.ai.core.AiService;
import com.cdkjframework.ai.core.Message;
import com.cdkjframework.ai.model.deepseek.DeepSeekService;
import com.cdkjframework.ai.model.doubao.DouBaoService;
import com.cdkjframework.ai.model.grok.GrokService;
import com.cdkjframework.ai.model.openai.OpenaiService;
import com.cdkjframework.ai.model.qwen.QwenService;

import java.util.List;

/**
 * AI 工具类
 *
 * @ProjectName: wiki-framework
 * @Package: com.cdkjframework.ai
 * @ClassName: AiUtils
 * @Description: AI 工具类
 * @Author: xiaLin
 * @Version: 1.0
 */
public class AiUtils {


/**
 * 获取AI模型服务,每个大模型提供的功能会不一样,可以调用此方法指定不同AI服务类,调用不同的功能
 *
 * @param config 创建的AI服务模型的配置
 * @param clazzAI模型服务类
 * @param AiService实现类
 * @return 返回 AI 模型服务类 的实现类实例
 */
public staticT findAiService(final AiConfig config, final Class clazz) {
return AiFactory.findAiService(config, clazz);
}

/**
 * 获取AI模型服务
 *
 * @param config 创建的AI服务模型的配置
 * @return 返回 AI 服务模型 其中只有公共方法
 */
public static AiService findAiService(final AiConfig config) {
return findAiService(config, AiService.class);
}

/**
 * 获取DeepSeek模型服务
 *
 * @param config 创建的AI服务模型的配置
 * @return DeepSeekService
 */
public static DeepSeekService findDeepSeekService(final AiConfig config) {
return findAiService(config, DeepSeekService.class);
}

/**
 * 获取DouBao模型服务
 *
 * @param config 创建的AI服务模型的配置
 * @return DouBaoService
 */
public static DouBaoService findDouBaoService(final AiConfig config) {
return findAiService(config, DouBaoService.class);
}

/**
 * 获取Grok模型服务
 *
 * @param config 创建的AI服务模型的配置
 * @return GrokService
 */
public static GrokService findGrokService(final AiConfig config) {
return findAiService(config, GrokService.class);
}

/**
 * 获取Openai模型服务
 *
 * @param config 创建的AI服务模型的配置
 * @return OpenAiService
 */
public static OpenaiService findOpenAiService(final AiConfig config) {
return findAiService(config, OpenaiService.class);
}

/**
 * 获取Qwen模型服务
 *
 * @param config 创建的AI服务模型的配置
 * @return QwenService
 */
public static QwenService findQwenService(final AiConfig config) {
return findAiService(config, QwenService.class);
}

/**
 * AI大模型对话功能(公共)
 *
 * @param config 创建的AI服务模型的配置
 * @param prompt 需要对话的内容
 * @return 返回 AI模型返回消息内容
 */
public static String chat(final AiConfig config, final String prompt) {
return findAiService(config).chat(prompt);
}

/**
 * AI大模型对话功能(公共)
 *
 * @param config 创建的AI服务模型的配置
 * @param messages 由目前为止的对话组成的消息列表,可以设置role,content。详细参考官方文档
 * @return 返回 AI模型返回消息内容
 */
public static String chat(final AiConfig config, final List messages) {
return findAiService(config).chat(messages);
}
}

总结

以上只是博主自己在实际项目中和参考其它文章总结出来,然后在将其实封成工具分享给大家。

相关源码在:维基框架

Gitee: https://gitee.com/cdkjframework/wiki-framework

Github:https://github.com/cdkjframework/wiki-framework

如果喜欢博主的分享记得给博主点点小星星


相關推薦

2025-08-24

宣布,面向全场景Java企业级应用开发的 ​维基框架 (Wiki Framework) 1.1.0 版本​ 正式发布!此版本标志着框架在技术栈、开发效率和智能化支持上的重大飞跃,为开发者带来更强大、更现代、更智能的微服务开发体验。 核心升级

2025-07-16

:维基框架1.0.11正式入驻中央仓库​ ​维基框架(Wiki-Framework)​​ 作为国产全场景Java企业级开发框架,于7月9日正式发布 ​v1.0.11版本​ 至中央软件仓库(Maven Central),标志着其正式纳入全球主流开发工具生态。本次发布聚

2025-06-06

文档、技术文档、FAQ、博客系统,借助大模型的力量为你提供 AI 创作、AI 问答、AI 搜索 等能力。 PandaWiki 除了是一款 Wiki 程序,除了是一款 AI 知识库以外,还有一些独属于自己的特色能力: AI 驱动智能化:AI 辅

2022-06-21

新的应用 Pigsty新增了两个 Docker 应用:开箱即用的本地维基百科,以及为Postgres提供MongoDB API 能力的 FerretDB(原名叫 MangoDB,碰瓷 MongoDB 被呲了才改名的) WIKI.js 你自己的维基百科,数据使用Postgres存储,与Markdown互通。 https:

2024-08-02

根据维基百科的 2023 年社区调查报告,支持“深色模式”(Dark Mode)是用户呼声最高的功能。 https://meta.wikimedia.org/wiki/Community_Wishlist_Survey_2023/Results/zh 现在在社区的努力之下,维基百科终于实现了对深色模式的支持,该支持

2022-07-08

20 万美元的资助,以便将 NLLB-200 应用于他们的业务。 维基媒体基金会目前已在 Content Translation 工具中引入了 NLLB-200 模型背后的技术,维基百科的编辑们可以使用该技术更有效地翻译和编辑源自其他代表性不足的语言的文章,

2022-09-06

xiv.org/abs/2112.01047 [ACL 2021] Meta-KD: A Meta Knowledge Distillation Framework for Language Model Compression across Domains.https://arxiv.org/abs/2012.01266 [arXiv] Making Pre-trained Language Models End-to-end Few-shot Learners with Contrastive Prompt Tuning: https://arxiv.org/pdf/220

2025-03-25

带地理坐标的标注数据集 模型训练层:基于 Ultralytics 框架微调 YOLOv11,模型体积仅 78MB(Hugging Face 仓库) 推理验证层:SAM 模型生成像素级掩膜后,通过 GeoJSON 坐标转换确保多边形拓扑正确性 工作流创新 人工选定兴趣

2025-08-05

景共创与标准制定。作为“灵掘”技术基石的端到端训练框架——“机械智心”,已支撑“灵掘”在矿山场景的成功实践,并快速向港口清舱、混凝土拌合站、地销煤等十余个场景迁移,未来将延伸至农业、智能制造等领域。

2025-04-04

维基媒体基金会是维基百科和十几个其他众包知识项目的管理组织,该基金会周三表示,自 2024 年 1 月以来,从维基共享资源下载多媒体的带宽消耗激增了 50%。 该公司在周二的一篇博客文章中写道,其原因并非源于渴求

2022-10-19

Ash Framework 2.0 已正式发布。 Ash Framework 是用于构建 Elixir 应用程序的声明式、面向资源和可扩展的框架。在 Ash 中,资源可以对任何东西提供模型,如数据库表、外部 API,甚至是自定义代码。 Ash 提供了丰富而广泛的工具集,用

2025-07-05

p;   4. 新增人员创建用户功能 软件简介 Nebula Framework 是一款适合初始 DDD 领域设计的用户使用的框架,本框架基于我自己开发的第一代 CDP 开发框架全新重构的一款开发框架。在第一代 CDP 开发框架中,虽然引入了 DDD

2025-08-01

高效视觉模型,已入选 ICIC 2025) 新论文:EvRWKV: A RWKV Framework for Effective Event-guided Low-Light Image Enhancement(基于 RWKV 低光增强) 新论文:Scaling Context Requires Rethinking Attention(基于 RWKV 的架构优化方案) 新论文:DRWKV: Focusing on

2024-07-12

asource,新增动态数据源支持,druid 监控自动配置 loveqq-framework 的前世今生 loveqq-framework 前身是 kfyty-framework 而 kfyty-framework 前身是 kfyty-utils 而 kfyty-utils 前身是 mybatis-demo &ensp;&ensp;&ensp;&ensp;是的,刚开始