2.5k的ChatGPT-Java版SDK升级1.1.2-beta0支持GPT-4V、Dall-e-3模型、ToolCalls、微调Job、TTS...
1、项目简介
Chatgpt-Java是OpenAI官方Api的Java SDK,可以快速接入项目使用。支持OpenAI官方全部接口。
目前收获将2500+star🌟。
- 开源地址:https://github.com/Grt1228/chatgpt-java
- 官方文档:https://chatgpt-java.unfbx.com/
- 最新版本:1.1.2-beta0
<dependency><groupId>com.unfbx</groupId><artifactId>chatgpt-java</artifactId><version>1.1.2-beta0</version>
</dependency>
目前支持的功能:
| Dall-e-3 | FineTuneJob | TTS | ChatCompletionWithPicture |
|---|---|---|---|
| AI生成图片 | 微调job | 文本转语音 | 附加图片的ChatCompletion |
| TikToken | Chat | Completions | Images | Speech To Text | 余额查询 |
|---|---|---|---|---|---|
| Token计算 | GPT-3.5、4.0对话模型 | GPT-3.0对话 | 图片模型 | 语音转文字,语音翻译 | 余额查询 |
| Embeddings | Files | Moderations | Fine-tune | Models |
|---|---|---|---|---|
| 嵌入 | 自定义训练模型 | 文本审核,敏感词鉴别 | 微调 | 模型检索相关 |
OpenAi在上周更新了新的版本,发布了很多新的功能,包括GPT-4V、附加图片的ChatCompletion、指定返回数据格式、Tool Call、Dall-e-3生成图片、FineTuneJob、文本转语音TTS等等功能。
本周Chatgpt-Java同步更新,支持最新的Api。
2、新版本更新
所以的新版本Api更新基于原有的OpenAiClient和OpenAiStreamClient,所以构建客户端的当时是没有变化的。
创建Client如下:
@Slf4j
public class OpenAiClientTest {private OpenAiClient client;private OpenAiStreamClient streamClient;@Beforepublic void before() {HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(new OpenAILogger());//!!!!千万别再生产或者测试环境打开BODY级别日志!!!!//!!!生产或者测试环境建议设置为这三种级别:NONE,BASIC,HEADERS,!!!httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS);OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(httpLoggingInterceptor).addInterceptor(new OpenAiResponseInterceptor()).connectTimeout(10, TimeUnit.SECONDS).writeTimeout(30, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS).build();client = OpenAiClient.builder().apiKey(Arrays.asList("*********************")).okHttpClient(okHttpClient)//自己做了代理就传代理地址,没有可不不传,(关注公众号回复:openai ,获取免费的测试代理地址).apiHost("https://*******/").build();streamClient = OpenAiStreamClient.builder()//支持多key传入,请求时候随机选择.apiKey(Arrays.asList("*********************")).okHttpClient(okHttpClient)//自己做了代理就传代理地址,没有可不不传,(关注公众号回复:openai ,获取免费的测试代理地址).apiHost("https://*******/").build();}
}
2.1、附加图片的chatCompletion示例
2.1.1、阻塞请求
/*** 聊天模型支持图片流式示例*/
@Test
public void pictureChat() {Content textContent = Content.builder().text("What’s in this image?").type(Content.Type.TEXT.getName()).build();ImageUrl imageUrl = ImageUrl.builder().url("https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg").build();Content imageContent = Content.builder().imageUrl(imageUrl).type(Content.Type.IMAGE_URL.getName()).build();List<Content> contentList = new ArrayList<>();contentList.add(textContent);contentList.add(imageContent);MessagePicture message = MessagePicture.builder().role(Message.Role.USER).content(contentList).build();//#####请求参数使用ChatCompletionWithPicture类ChatCompletionWithPicture chatCompletion = ChatCompletionWithPicture.builder().messages(Collections.singletonList(message)).model(ChatCompletion.Model.GPT_4_VISION_PREVIEW.getName()).build();ChatCompletionResponse chatCompletionResponse = client.chatCompletion(chatCompletion);chatCompletionResponse.getChoices().forEach(e -> System.out.println(e.getMessage()));
}
2.1.2、流式请求
/*** 聊天模型支持图片流式示例*/
@Test
public void pictureChatV2() {Content textContent = Content.builder().text("What’s in this image?").type(Content.Type.TEXT.getName()).build();ImageUrl imageUrl = ImageUrl.builder().url("https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg").build();Content imageContent = Content.builder().imageUrl(imageUrl).type(Content.Type.IMAGE_URL.getName()).build();List<Content> contentList = new ArrayList<>();contentList.add(textContent);contentList.add(imageContent);MessagePicture message = MessagePicture.builder().role(Message.Role.USER).content(contentList).build();ChatCompletionWithPicture chatCompletion = ChatCompletionWithPicture.builder().messages(Collections.singletonList(message)).model(ChatCompletion.Model.GPT_4_VISION_PREVIEW.getName()).build();ChatCompletionResponse chatCompletionResponse = client.chatCompletion(chatCompletion);chatCompletionResponse.getChoices().forEach(e -> System.out.println(e.getMessage()));
}
2.1.3、注意事项
附加图片的chatCompletion暂时不支持以下简易接口请求
- public void streamChatCompletion(List messages, EventSourceListener el)
- public ChatCompletionResponse chatCompletion(List messages)
2.2、ChatGPT指定返回Json格式
最新版的OpenAi接口支持执行数据返回格式。以下仅举例阻塞输出的方案,流式输出一样的使用方法不再举例。
指定数据格式目前支持:
- json_object
- text
参考源码:com/unfbx/chatgpt/entity/chat/ResponseFormat.java
2.2.1、请求
/*** 自定义返回数据格式*/
@Test
public void diyReturnDataModelChat() {Message message = Message.builder().role(Message.Role.USER).content("随机输出10个单词,使用json输出").build();ChatCompletion chatCompletion = ChatCompletion.builder().messages(Collections.singletonList(message)).responseFormat(ResponseFormat.builder().type(ResponseFormat.Type.JSON_OBJECT.getName()).build()).model(ChatCompletion.Model.GPT_4_1106_PREVIEW.getName()).build();ChatCompletionResponse chatCompletionResponse = client.chatCompletion(chatCompletion);chatCompletionResponse.getChoices().forEach(e -> System.out.println(e.getMessage()));
}
{"words": ["aberration","nostalgia","quintessential","harmony","serendipity","benevolent","ephemeral","labyrinth","zenith","vivacious"]
}
2.3、Dall-e-3生成图片(AI绘画)
最新版的OpenAi接口支持Dall-e-3模型生成图片,功能更加强大。
2.3.1、请求
/*** 新版图片生成模型使用示例*/
@Test
public void generateImageByDall_e_3() {Image image = Image.builder().responseFormat(com.unfbx.chatgpt.entity.images.ResponseFormat.URL.getName()).model(Image.Model.DALL_E_3.getName()).prompt("一个咖啡杯,上面印刷Unfbx四个字母。").n(1).quality(Image.Quality.HD.getName()).size(SizeEnum.size_1024_1792.getName()).style(Image.Style.NATURAL.getName()).build();ImageResponse imageResponse = client.genImages(image);
// ImageResponse imageResponse = client.genImages("一个咖啡杯,上面印刷Unfbx四个字母。");System.out.println(imageResponse.getData().get(0).getUrl());}
2.4、FineTuneJob微调job
OpenAi支持自定义训练专属模型,通过FineTuneJob进行模型微调训练。
FineTuneJob支持的模型有:
- gpt-3.5-turbo-1106
- gpt-3.5-turbo-0613
- babbage-002
- gpt-4-0613
- davinci-002
更多详细参考源码:com/unfbx/chatgpt/entity/fineTune/job/FineTuneJob.java
2.4.1、创建训练数据文件
创建文件格式为json1下面是一个示例文件:fine_tune_test_file.json1
文件在github源码根目录,文件内容;
{"messages": [{"role": "system", "content": "OnBot是一个聊天机器人。"}, {"role": "user", "content": "chagpt-java好用么?"}, {"role": "assistant", "content": "还行吧。"}]}
{"messages": [{"role": "system", "content": "OnBot是一个聊天机器人。"}, {"role": "user", "content": "chagpt-java最新版本是什么?"}, {"role": "assistant", "content": "1.1.2版本"}]}
{"messages": [{"role": "system", "content": "OnBot是一个聊天机器人。"}, {"role": "user", "content": "chagpt-java支持流式输出么?"}, {"role": "assistant", "content": "最新版支持流式输出"}]}
{"messages": [{"role": "system", "content": "OnBot是一个聊天机器人。"}, {"role": "user", "content": "chagpt-java的作者是谁?"}, {"role": "assistant", "content": "作者是Unfbx,个人网站:https://www.unfbx.com"}]}
{"messages": [{"role": "system", "content": "OnBot是一个聊天机器人。"}, {"role": "user", "content": "Unfbx是chagpt-java的作者,微信公众号是什么?"}, {"role": "assistant", "content": "程序员的黑洞。"}]}
{"messages": [{"role": "system", "content": "OnBot是一个聊天机器人。"}, {"role": "user", "content": "Unfbx是chagpt-java的作者,个人博客地址是什么?"}, {"role": "assistant", "content": "https://www.unfbx.com"}]}
{"messages": [{"role": "system", "content": "OnBot是一个聊天机器人。"}, {"role": "user", "content": "Unfbx是chagpt-java的作者,chagpt-java官方地址是什么?"}, {"role": "assistant", "content": "https://chatgpt-java.unfbx.com"}]}
{"messages": [{"role": "system", "content": "OnBot是一个聊天机器人。"}, {"role": "user", "content": "Unfbx是chagpt-java的作者,chagpt-java的github地址是什么?"}, {"role": "assistant", "content": "https://github.com/Grt1228/chatgpt-java"}]}
{"messages": [{"role": "system", "content": "OnBot是一个聊天机器人。"}, {"role": "user", "content": "Unfbx是chagpt-java的作者,chagpt-java的简单介绍。"}, {"role": "assistant", "content": "OpenAI官方Api的Java SDK,可以快速接入项目使用。目前支持OpenAI官方全部接口,**同时支持Tokens计算。参考文档:[Tokens_README.md](https://github.com/Grt1228/chatgpt-java/blob/main/Tokens_README.md)**"}]}
{"messages": [{"role": "system", "content": "OnBot是一个聊天机器人。"}, {"role": "user", "content": "OpenAi的官方Java Sdk 是什么?"}, {"role": "assistant", "content": "chagpt-java,github地址:https://github.com/Grt1228/chatgpt-java"}]}
2.4.2、上传文件
/*** fineTuneJob使用示例*/
@Test
public void uploadFile() {UploadFileResponse uploadFileResponse = client.uploadFile(new java.io.File("fine_tune_test_file.json1"));//返回文件的id:file-6KaBdtVlaassk9Y2P5ZjTqICSystem.out.println(uploadFileResponse.getId());
}
2.4.3、创建微调job
@Test
public void fineTuneJob() {//file-KaNQn5V9YHlLqVQzo8CUMdIr是文件上传返回的文件idFineTuneJobResponse fineTuneJobResponse = client.fineTuneJob("file-KaNQn5V9YHlLqVQzo8CUMdIr");//返回job id = ftjob-5WQr0bZ7grvjnY3Or2sqiixlSystem.out.println(fineTuneJobResponse.toString());
}
2.4.4、查看微调job
2.4.4.1、详细信息
- FineTuneJobResponse的fineTunedModel属性就是微调的模型id,也是后续使用的模型id
需要主义只有FineTuneJob执行完成fineTunedModel属性才会有值,job失败或者未执行完成此属性为null。
结合第4.0章节可以看到job的执行信息。
@Test
public void retrieveFineTuneJob() {//传入job idFineTuneJobResponse fineTuneJobResponse = client.retrieveFineTuneJob("ftjob-5WQr0bZ7grvjnY3Or2sqiixl");System.out.println(fineTuneJobResponse);
}
2.4.4.2、job列表
支持分页查询
@Test
public void retrieveFineTuneJob() {// FineTuneJobListResponse<FineTuneJobResponse> jobListResponse = client.fineTuneJobs("ftjob-cG7zIraBhAkq5Ybs7311lH7t", 5);FineTuneJobListResponse<FineTuneJobResponse> jobListResponse = client.fineTuneJobs(null, 20);System.out.println(jobListResponse);
}
2.4.5、微调job执行进度查询
支持分页查询,支持分页
@Test
public void fineTuneJobEvents() {FineTuneJobListResponse<FineTuneJobEvent> listResponse = client.fineTuneJobEvents("ftjob-5WQr0bZ7grvjnY3Or2sqiixl", null, 20);
// FineTuneJobListResponse<FineTuneJobEvent> listResponse = client.fineTuneJobEvents("ftjob-5WQr0bZ7grvjnY3Or2sqiixl", "ftevent-WwB8lpWxhjgUJX9DYdb47zJe", 20);listResponse.getData().forEach(e -> System.out.println(e.getMessage()));
}
输出信息,输出信息会返回创建的模型id,这个就是后续使用的模型id。
The job has successfully completedNew fine-tuned model created: ft:gpt-3.5-turbo-1106:personal::8K5KwJTUStep 91/100: training loss=0.45Step 81/100: training loss=0.00Step 71/100: training loss=0.00Step 61/100: training loss=0.94Step 51/100: training loss=0.19Step 41/100: training loss=0.06Step 31/100: training loss=0.95Step 21/100: training loss=1.99Step 11/100: training loss=2.50Step 1/100: training loss=5.42Fine-tuning job startedFiles validated, moving job to queued stateValidating training file: file-KaNQn5V9YHlLqVQzo8CUMdIrCreated fine-tuning job: ftjob-5WQr0bZ7grvjnY3Or2sqiixl
2.4.6、微调模型使用
注意model参数为自定义的模型id。此id会在fineTuneJobEvents完成后返回。
此id的获取有几种方式:
- 1、fineTuneJobEvents接口完成后返回。
- 2、通过3.1章节查询job详细信息可以获取模型id:fineTunedModel属性。
- 3、models接口返回,参考第5章
@Test
public void fineTuneJobModelChat() {Message message1 = Message.builder().role(Message.Role.SYSTEM).content("OnBot是一个聊天机器人。").build();Message message2 = Message.builder().role(Message.Role.USER).content("OnBot请问:Chatgpt-java的作者是谁?").build();List<Message> messages = new ArrayList<>(2);messages.add(message1);messages.add(message2);ChatCompletion chatCompletion = ChatCompletion.builder().messages(messages).model("ft:gpt-3.5-turbo-1106:personal::8K5KwJTU").build();ChatCompletionResponse chatCompletionResponse = client.chatCompletion(chatCompletion);chatCompletionResponse.getChoices().forEach(e -> {System.out.println(e.getMessage());});
}
输出信息
作者是Unfbx,个人网站:https://www.unfbx.com
2.5、文本转语音TTS
OpenAi最新接口支持TTS,支持高清语音,支持六种人声。
2.5.1、文本转语音
/*** tts使用示例*/
@Test
public void textToSpeed() {TextToSpeech textToSpeech = TextToSpeech.builder().model(TextToSpeech.Model.TTS_1_HD.getName()).input("OpenAI官方Api的Java SDK,可以快速接入项目使用。目前支持OpenAI官方全部接口,同时支持Tokens计算。官方github地址:https://github.com/Grt1228/chatgpt-java。欢迎star。").voice(TtsVoice.NOVA.getName()).responseFormat(TtsFormat.MP3.getName()).build();File file = new File("C:\\Users\\***\\Desktop\\test.mp3");client.textToSpeech(textToSpeech, new Callback<ResponseBody>() {@SneakyThrows@Overridepublic void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {InputStream inputStream = response.body().byteStream();//创建文件if (!file.exists()) {if (!file.getParentFile().exists())file.getParentFile().mkdir();try {file.createNewFile();} catch (IOException e) {e.printStackTrace();log.error("createNewFile IOException");}}OutputStream os = null;try {os = new BufferedOutputStream(new FileOutputStream(file));byte data[] = new byte[8192];int len;while ((len = inputStream.read(data, 0, 8192)) != -1) {os.write(data, 0, len);}} catch (IOException e) {e.printStackTrace();} finally {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}try {if (os != null) {os.close();}} catch (IOException e) {e.printStackTrace();}}}@Overridepublic void onFailure(Call<ResponseBody> call, Throwable t) {}});CountDownLatch countDownLatch = new CountDownLatch(1);try {countDownLatch.await();} catch (InterruptedException e) {e.printStackTrace();}
}
3、更多
访问项目开源地址:https://github.com/Grt1228/chatgpt-java
点一点免费的star
获取更多SDK功能
相关文章:
2.5k的ChatGPT-Java版SDK升级1.1.2-beta0支持GPT-4V、Dall-e-3模型、ToolCalls、微调Job、TTS...
1、项目简介 Chatgpt-Java是OpenAI官方Api的Java SDK,可以快速接入项目使用。支持OpenAI官方全部接口。 目前收获将2500star🌟。 开源地址:https://github.com/Grt1228/chatgpt-java官方文档:https://chatgpt-java.unfbx.com/最…...
k8s二进制(ETCD的部署安装)
角色ip组件k8s-master192.168.11.169kube-apiserver,kube-controller-manager,kube-scheduler,etcdk8s-node1192.168.11.164kubelet,kube-proxy,docker,etcdk8s-node2192.168.11.166kubelet,kube-proxy,docker,etcd 1、为etcd签发证书 1、证书的下载(任意机器上执行都可以) …...
【rl-agents代码学习】02——DQN算法
文章目录 Highway-env Intersectionrl-agents之DQN*Implemented variants*:*References*:Query agent for actions sequence探索策略神经网络实现小结1 Record the experienceReplaybuffercompute_bellman_residualstep_optimizerupdate_target_network小结2 exploration_polic…...
关于使用 Java 反射技术来实现解耦?
关于使用 Java 反射技术来实现解耦? 文章目录 关于使用 Java 反射技术来实现解耦?一、基本说明二、代码示例三、注意 一、基本说明 Java 反射技术允许程序在运行时加载、探索和使用类和对象。通过反射,我们可以在程序运行期间动态地创建对象…...
使用清华智谱ChatGLM2大模型搭建本地私有知识库
首先放上该方案项目的git地址:https://github.com/chatchat-space/Langchain-Chatchat 以下是我的搭建和踩坑经验记录 一、环境准备 1、python安装 在环境中安装python,我安装的是3.9版本的python,官方要求的是Python 3.8 - 3.10 版本。不知…...
MES系统如何赋能制造企业实现4M防错追溯?
生产过程4M管理和MES系统的结合是现代制造业中关键的质量管理实践,它有助于提高生产效率、降低生产成本并保证产品质量。本文将深入探讨4M管理的概念,以及MES系统如何赋能制造企业实现4M防错追溯。 一、4M管理的概念 4M管理是指在制造过程中管理和控制四…...
Mybatis保存时参数携带了逗号和空格导致SQL保存异常
起初发现这个问题是因为导入文件时,用户输入的导入参数不规范,在字段中有逗号和空格一起出现,就会导致mybatis保存时发生sql异常。 异常数据张这样: INSERT INTO enterprise_stratification (id,create_date,create_by,update_da…...
vscode launch.json
有时新的服务器进行调试时,需要设置调试的launch.json的结果 然后就可以打开一个launch.json 其内容如下 {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid83…...
绿盟远程安全评估系统 RSAS 使用体验-难用
最近领导让我用公司采购的RSAS对产品进行漏洞扫描,学习并使用了这个软件,体验就是真的很难用。使用遇到问题时,咨询售后服务,机器人需要有公司认证,不能随便问问题,也是无语了。咨询客服,客服回…...
【Linux】 mdir命令使用
mdir 为mtools工具指令,模拟MS-DOS的dir指令,可显示MS-DOS文件系统中的目录内容。 语法 mdir [参数][目录] mdir命令 -Linux手册页 命令选项及作用 执行令 mdir--help 执行命令结果 参数 -a 显示隐藏文件。-f 不显示磁盘所剩余的可用空间。-w…...
解压游戏资源,导出游戏模型
游戏中有很多好看的角色,地图等等资源。 你有没有想过,把他们导出到自己的游戏中进行魔改又或则玩换肤等操作呢? 相信很多同学都喜欢拳皇中的角色, 那么我们今天就拿拳皇15举例子,导出他的资源。 首先要先安装好这个…...
【科研新手指南2】「NLP+网安」相关顶级会议期刊 投稿注意事项+会议等级+DDL+提交格式
「NLP网安」相关顶级会议&期刊投稿注意事项 写在最前面一、会议ACL (The Annual Meeting of the Association for Computational Linguistics)IH&MMSec (The ACM Workshop on Information Hiding, Multimedia and Security)CCS (The ACM Conference on Computer and Co…...
220kV环形网络的动态无功补偿方案初步设计
摘 要 动态无功补偿系统应用广泛,比如电子设备、发电系统、输电线路等方面,都会运用到动态无功补偿系统或工具。更高效率和更高稳定性的动态无功补偿系统一直是研究的热点。在电力系统中,动态无功补偿系统随处可见,因为运行稳…...
关于值传递和引用传递的问题记录
目录 1. 问题概述 1.1 测试 1.2 结果 2. ArrayList和Arrays.ArrayList 1. 问题概述 最近忙着写论文很久没更新了,趁现在有时间简单记录一下最近遇到的一个坑。 对于Java中的List<>类型的对象,按我以前理解是引用传递,但有一点要注…...
律师咨询小程序搭建流程
一、需求分析 在律师咨询小程序的开发过程中,需求分析是至关重要的一步。首先,我们需要明确小程序的定位和目标用户,了解用户的需求和痛点。在此基础上,我们需要细化功能需求,如在线咨询、案件查询、文书生成等。同时…...
怎么在uni-app中使用Vuex 深度解刨
本文深入研究Vuex,一个Vue.js状态管理库。我们将介绍创建它是为了解决的问题、其背后的核心概念、如何设置它,当然,还将在每一步中使用代码示例。 Vuex是一个由Vue团队构建的状态管理库,用于管理Vue.js应用程序中的数据。它提供了一种集中管理跨应用程序使用的数据的方式,…...
兼容iphone(ios)圆角(border-radius)不起作用的问题
一、出现场景:使用mosowe-swiper:适用于uni-app的轮播图插件,圆弧无效 ios手机会在transform的时候导致border-radius失效解决方法:在使用动画效果带transform的元素的上一级div元素的css加上下面语句: transform: rot…...
车间部署MES管理系统后有哪些变化
随着智能制造技术的飞速发展,工厂车间正经历着一场由数字化管理和智能化协调优化驱动的变革。这场变革的核心便是MES管理系统。实施MES管理系统在提升生产效率、降低成本、提高产品质量和优化资源投入方面发挥着重要作用,助力工厂实现整体运作的协作管理…...
19C进入数据库出现问号
问题情况如图所示: 解决方法: su - oracle echo "NLS_LANGAMERICAN_AMERICA.ZHS16GBK;export NLS_LANG" >> ~/.bash_profilesource ~/.bash_profileofile...
Mistral 7B 比Llama 2更好的开源大模型 (一)
Mistral 7B 简介 Mistral 7B Mistral 7B 是一个 7.3B 参数模型: 在所有基准测试中优于 Llama 2 13B在许多基准测试中优于 Llama 1 34B接近 CodeLlama 7B 的代码性能,同时保持擅长英语任务使用分组查询注意力 (GQA) 加快推理速度使用滑动窗口注意力 (SWA) 以更低的成本处…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
