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) 以更低的成本处…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
