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

工农区网站建设做网站需要什么域名

工农区网站建设,做网站需要什么域名,企业不想做网站的原因,哪个公司的室内设计公司1、项目简介 Chatgpt-Java是OpenAI官方Api的Java SDK,可以快速接入项目使用。支持OpenAI官方全部接口。 目前收获将2500star🌟。 开源地址:https://github.com/Grt1228/chatgpt-java官方文档:https://chatgpt-java.unfbx.com/最…

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-3FineTuneJobTTSChatCompletionWithPicture
AI生成图片微调job文本转语音附加图片的ChatCompletion
TikTokenChatCompletionsImagesSpeech To Text余额查询
Token计算GPT-3.5、4.0对话模型GPT-3.0对话图片模型语音转文字,语音翻译余额查询
EmbeddingsFilesModerationsFine-tuneModels
嵌入自定义训练模型文本审核,敏感词鉴别微调模型检索相关

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功能

http://www.dtcms.com/wzjs/536877.html

相关文章:

  • 济南网站运营wordpress 知乎模版
  • 制作网站设计的技术有地方网站域名选择
  • 上海网站空间续费怎样做一个网站
  • 网站模板大全 优帮云法律网站开发
  • 专业提供深圳网站设计公司建设一个网站思路
  • 网站建设 江苏开发公司成本费用比例
  • 典当行网站源码网站空间购买多钱
  • 企业网站seo推广方案百度收录的网站结构
  • 如何做flash游戏下载网站沈阳做机床的公司网站
  • 有趣的网站名移动端关键词排名如何优化
  • 大站wordpress如何在网上推广二维码
  • 使用php做网站百度电脑版下载官网
  • 做网站的需求清单有什么好网站做浏览器主页
  • 百度经验网站建设谷歌浏览器下载电脑版
  • 服务器吗放几个网站网站维护工程师工资
  • 免费的个人网站wordpress中文标题转换拼音插件
  • htm5移动网站开发wordpress 评论楼层
  • wordpress网站阿里云备案号杭州建网站
  • 糖果果屋网站建设规划书网站集约化建设工作讲话
  • 外贸网站批量收录合肥装修公司哪家口碑最好
  • 淘宝网站建设没法上传怎么办湛江做网站苏州厂商
  • 北京做手机网站的公司名称网络推广哪个网站好
  • 网站域名的管理密码如何索取手机视频播放器app哪个最好用
  • 网站asp文件只读郏县建设局网站
  • 卢松松网站怎么做个人做网站用哪个主机好
  • 本地服务器域名解析网站建设做律师网站推广优化哪家好
  • 网站需求分析是在建站的什么阶段做的_为什么要做?电商 网站模板
  • 成都市网站建设下载的软件乱码怎么解决
  • 比较著名的seo网站找生产厂家
  • 找事情做的网站wordpress分类目录没有内容