赞
踩
目录
2.3.3如果遇到导入junit不成功的话,可以看下面这个教程
3.2.1生成一个窗口(基本),可以支持用户的输入,并且旁边能够输出
3.2.2进一步的需求,一共需要设置七个部分,就是七个模块提供给用户选择
代码放在这里了
https://gitee.com/lylsalt/AI_Embark
MySQL :: MySQL Community Downloads
将下载好的压缩包进行解压
解压之后下图就是连接数据库所用到的jar包:
将jar包复制到IDEA所用的项目下,放置jar包的目录为lib,需要自己新建。
添加完之后,打开File,点击Project Structure
这样mysql的依赖就配好了。
这个下载安装会遇到很多问题
看这一篇就够了
https://www.cnblogs.com/sq1995liu/p/12671331.html
先进入官网注册一个账号智谱AI开放平台,注册账号实名后,会送token,token就是回答时字的数量。一般都是百万或者千万起送。
注意:我们常见的API_KEY和API_SECRET,这里采用了统一为API key,使用 . 这个符号进行划分。
举个栗子:yingzix688.xxxx。
那么,API_KEY:yingzix688
API_SECRET:xxxx
大家只需要看自己的API key进行分割出来即可。
智谱AIJava SDK 地址:MetaGLM/zhipuai-sdk-java-v4 (github.com)
如下方式,将SDK的依赖加入到Maven项目:
- <dependency>
- <groupId>cn.bigmodel.openapi</groupId>
- <artifactId>oapi-java-sdk</artifactId>
- <version>release-V4-2.0.0</version>
- </dependency>
到这边可能就会看不太懂,所以需要介绍一下Meaven。再继续添加依赖。
我这边简单的概括一些(内容由AI生成),需要深入了解的可以看这篇文章了解
Java之Maven【IDEA版】入门到精通(一篇文章精通系列)_ij maven java入门-CSDN博客
Maven是一个自动化构建工具,主要用于Java项目,但它也支持其他编程语言。Maven提供了用于构建、依赖管理、版本控制和项目信息管理的框架。它使用一个名为pom.xml
(Project Object Model)的配置文件来管理项目的构建生命周期、依赖关系和插件。
Maven的主要特点和功能包括:
依赖管理:Maven自动处理项目依赖的下载和版本冲突,确保项目使用正确版本的库。
构建生命周期:Maven定义了项目的构建生命周期,包括编译、测试、打包、部署等阶段。
项目构建标准化:Maven通过标准化的项目目录结构和生命周期阶段,使得不同项目之间的一致性更容易实现。
插件机制:Maven通过插件来执行构建过程中的具体任务,如编译代码、运行测试、生成文档等。
多模块项目支持:Maven可以轻松管理包含多个模块的大型项目。
仓库管理:Maven使用仓库来存储依赖库和项目构建的工件。它支持本地仓库和远程仓库,如中央仓库和私有仓库。
集成和自动化:Maven可以与持续集成工具(如Jenkins)集成,实现自动化测试和部署。
项目信息管理:Maven可以生成项目信息和报告,如依赖关系列表、变更日志、测试报告等。
Maven的构建配置文件pom.xml
位于项目的根目录中,它定义了项目的元数据、依赖关系、构建插件和构建配置。通过在pom.xml
中配置这些信息,Maven可以自动化项目的构建和依赖管理过程。
Maven的命令行工具允许开发人员执行各种构建命令,如mvn clean
(清理项目)、mvn compile
(编译源代码)、mvn test
(运行测试)和mvn package
(打包项目)等。
这两个步骤请看这个链接的第二和第四个部分Java之Maven【IDEA版】入门到精通(一篇文章精通系列)_ij maven java入门-CSDN博客
其中到创建Meaven时候需要注意下面一个点
关于archetype的说明可以参考这篇文章
Maven创建时archetype的选择说明_创建maven项目archetype选哪个-CSDN博客
这边建议使用这个模板maven-archetype-quickstart
这张图比较重要
- src/main/java —— 存放项目的.java 文件
- src/main/resources —— 存放项目资源文件,如数据库的配置文件
- src/test/java —— 存放所有单元测试.java 文件,如 JUnit 测试类
- target —— 项目输出位置,编译后的class 文件会输出到此目录
- pom.xml ——maven 项目核心配置文件
IDEA使用JUnit时@Test无效以及无法导入org.junit包的问题_idea junit包导入不生效-CSDN博客
IDEA2022.2版本(最新版)控制台输出中文乱码,四个方法的介绍 - 知乎 (zhihu.com)
- package com.zhipu.oapi.demo;
-
- import com.alibaba.fastjson.JSON;
- import com.fasterxml.jackson.annotation.JsonInclude;
- import com.fasterxml.jackson.core.JsonProcessingException;
- import com.fasterxml.jackson.core.type.TypeReference;
- import com.fasterxml.jackson.databind.DeserializationFeature;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.fasterxml.jackson.databind.PropertyNamingStrategy;
- import com.zhipu.oapi.ClientV4;
- import com.zhipu.oapi.Constants;
- import com.zhipu.oapi.service.v4.embedding.EmbeddingApiResponse;
- import com.zhipu.oapi.service.v4.embedding.EmbeddingRequest;
- import com.zhipu.oapi.service.v4.file.FileApiResponse;
- import com.zhipu.oapi.service.v4.file.QueryFileApiResponse;
- import com.zhipu.oapi.service.v4.file.QueryFilesRequest;
- import com.zhipu.oapi.service.v4.fine_turning.*;
- import com.zhipu.oapi.service.v4.image.CreateImageRequest;
- import com.zhipu.oapi.service.v4.image.ImageApiResponse;
- import com.zhipu.oapi.service.v4.model.*;
- import io.reactivex.Flowable;
-
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.concurrent.atomic.AtomicBoolean;
-
-
- public class V4OkHttpClientTest {
-
- private static final String API_KEY = "";
-
- private static final String API_SECRET = "";
-
- private static final ClientV4 client = new ClientV4.Builder(API_KEY,API_SECRET).build();
-
- private static final ObjectMapper mapper = defaultObjectMapper();
-
-
- public static ObjectMapper defaultObjectMapper() {
- ObjectMapper mapper = new ObjectMapper();
- mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
- mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
- mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
- mapper.addMixIn(ChatFunction.class, ChatFunctionMixIn.class);
- mapper.addMixIn(ChatCompletionRequest.class, ChatCompletionRequestMixIn.class);
- mapper.addMixIn(ChatFunctionCall.class, ChatFunctionCallMixIn.class);
- return mapper;
- }
-
- // 请自定义自己的业务id
- private static final String requestIdTemplate = "mycompany-%d";
-
- public static void main(String[] args) throws Exception {
- System.setProperty("org.slf4j.simpleLogger.logFile", "System.out");
- // 1. sse-invoke调用模型,使用标准Listener,直接返回结果
- testSseInvoke();
-
- // 2. invoke调用模型,直接返回结果
- // testInvoke();
-
- // 3. 异步调用
- // String taskId = testAsyncInvoke();
- // 4.异步查询
- // testQueryResult(taskId);
-
- // 5.文生图
- // testCreateImage();
-
- // 6. 图生文
- // testImageToWord();
-
- // 7. 向量模型
- // testEmbeddings();
-
- // 8.微调-上传微调数据集
- // testUploadFile();
-
- // 9.微调-查询上传文件列表
- // testQueryUploadFileList();
-
- // 10.微调-创建微调任务
- // testCreateFineTuningJob();
-
- // 11.微调-查询微调任务事件
- // testQueryFineTuningJobsEvents();
-
- // 12.微调-查询微调任务
- // testRetrieveFineTuningJobs();
-
- // 13.微调-查询个人微调任务
- // testQueryPersonalFineTuningJobs();
-
- // 14.微调-调用微调模型(参考模型调用接口,并替换成要调用模型的编码model)
- }
-
- private static void testQueryPersonalFineTuningJobs() {
- QueryPersonalFineTuningJobRequest queryPersonalFineTuningJobRequest = new QueryPersonalFineTuningJobRequest();
- queryPersonalFineTuningJobRequest.setLimit(1);
- QueryPersonalFineTuningJobApiResponse queryPersonalFineTuningJobApiResponse = client.queryPersonalFineTuningJobs(queryPersonalFineTuningJobRequest);
- System.out.println("model output:" + JSON.toJSONString(queryPersonalFineTuningJobApiResponse));
-
- }
-
- private static void testQueryFineTuningJobsEvents() {
- QueryFineTuningJobRequest queryFineTuningJobRequest = new QueryFineTuningJobRequest();
- queryFineTuningJobRequest.setJobId("ftjob-20240119114544390-zkgjb");
- // queryFineTuningJobRequest.setLimit(1);
- // queryFineTuningJobRequest.setAfter("1");
- QueryFineTuningEventApiResponse queryFineTuningEventApiResponse = client.queryFineTuningJobsEvents(queryFineTuningJobRequest);
- System.out.println("model output:" + JSON.toJSONString(queryFineTuningEventApiResponse));
- }
-
- /**
- * 查询微调任务
- */
- private static void testRetrieveFineTuningJobs() {
- QueryFineTuningJobRequest queryFineTuningJobRequest = new QueryFineTuningJobRequest();
- queryFineTuningJobRequest.setJobId("ftjob-20240119114544390-zkgjb");
- // queryFineTuningJobRequest.setLimit(1);
- // queryFineTuningJobRequest.setAfter("1");
- QueryFineTuningJobApiResponse queryFineTuningJobApiResponse = client.retrieveFineTuningJobs(queryFineTuningJobRequest);
- System.out.println("model output:" + JSON.toJSONString(queryFineTuningJobApiResponse));
- }
-
- /**
- * 创建微调任务
- */
- private static void testCreateFineTuningJob() {
- FineTuningJobRequest request = new FineTuningJobRequest();
- String requestId = String.format(requestIdTemplate, System.currentTimeMillis());
- request.setRequestId(requestId);
- request.setModel("chatglm3-6b");
- request.setTraining_file("file-20240118082608327-kp8qr");
- CreateFineTuningJobApiResponse createFineTuningJobApiResponse = client.createFineTuningJob(request);
- System.out.println("model output:" + JSON.toJSONString(createFineTuningJobApiResponse));
- }
-
- /**
- * 微调文件上传列表查询
- */
- private static void testQueryUploadFileList() {
- QueryFilesRequest queryFilesRequest = new QueryFilesRequest();
- QueryFileApiResponse queryFileApiResponse = client.queryFilesApi(queryFilesRequest);
- System.out.println("model output:" + JSON.toJSONString(queryFileApiResponse));
- }
-
-
- /**
- * 微调上传数据集
- */
- private static void testUploadFile() {
- String filePath = "/Users/wujianguo/Downloads/transaction-data.jsonl";
- String purpose = "fine-tune";
- FileApiResponse fileApiResponse = client.invokeUploadFileApi(purpose, filePath);
- System.out.println("model output:" + JSON.toJSONString(fileApiResponse));
- }
-
- private static void testEmbeddings() {
- EmbeddingRequest embeddingRequest = new EmbeddingRequest();
- embeddingRequest.setInput("hello world");
- embeddingRequest.setModel(Constants.ModelEmbedding2);
- EmbeddingApiResponse apiResponse = client.invokeEmbeddingsApi(embeddingRequest);
- System.out.println("model output:" + JSON.toJSONString(apiResponse));
- }
-
- /**
- * 图生文
- */
- private static void testImageToWord() {
- List<ChatMessage> messages = new ArrayList<>();
- List<Map<String, Object>> contentList = new ArrayList<>();
- Map<String, Object> textMap = new HashMap<>();
- textMap.put("type", "text");
- textMap.put("text", "图里有什么");
- Map<String, Object> typeMap = new HashMap<>();
- typeMap.put("type", "image_url");
- Map<String, Object> urlMap = new HashMap<>();
- urlMap.put("url", "https://cdn.bigmodel.cn/enterpriseAc/3f328152-e15c-420c-803d-6684a9f551df.jpeg?attname=24.jpeg");
- typeMap.put("image_url", urlMap);
- contentList.add(textMap);
- contentList.add(typeMap);
- ChatMessage chatMessage = new ChatMessage(ChatMessageRole.USER.value(), contentList);
- messages.add(chatMessage);
- String requestId = String.format(requestIdTemplate, System.currentTimeMillis());
-
-
- ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder()
- .model(Constants.ModelChatGLM4V)
- .stream(Boolean.FALSE)
- .invokeMethod(Constants.invokeMethod)
- .messages(messages)
- .requestId(requestId)
- .build();
- ModelApiResponse modelApiResponse = client.invokeModelApi(chatCompletionRequest);
- System.out.println("model output:" + JSON.toJSONString(modelApiResponse));
-
- }
-
- private static void testCreateImage() {
- CreateImageRequest createImageRequest = new CreateImageRequest();
- createImageRequest.setModel(Constants.ModelCogView);
- // createImageRequest.setPrompt("画一个温顺可爱的小狗");
- ImageApiResponse imageApiResponse = client.createImage(createImageRequest);
- System.out.println("imageApiResponse:" + JSON.toJSONString(imageApiResponse));
- }
-
-
- /**
- * sse调用
- */
- private static void testSseInvoke() {
- List<ChatMessage> messages = new ArrayList<>();
- ChatMessage chatMessage = new ChatMessage(ChatMessageRole.USER.value(), "ChatGLM和你哪个更强大");
- // ChatMessage chatMessage = new ChatMessage(ChatMessageRole.USER.value(), "你能帮我查询2024年1月1日从北京南站到上海的火车票吗?");
- messages.add(chatMessage);
- String requestId = String.format(requestIdTemplate, System.currentTimeMillis());
- // 函数调用参数构建部分
- List<ChatTool> chatToolList = new ArrayList<>();
- ChatTool chatTool = new ChatTool();
- chatTool.setType(ChatToolType.FUNCTION.value());
- ChatFunctionParameters chatFunctionParameters = new ChatFunctionParameters();
- chatFunctionParameters.setType("object");
- Map<String, Object> properties = new HashMap<>();
- properties.put("departure", new HashMap<String, Object>() {{
- put("type", "string");
- put("description", "出发城市或车站");
- }});
- properties.put("destination", new HashMap<String, Object>() {{
- put("type", "string");
- put("description", "目的地城市或车站");
- }});
- properties.put("date", new HashMap<String, Object>() {{
- put("type", "string");
- put("description", "要查询的车次日期");
- }});
- List<String> required = new ArrayList<>();
- required.add("departure");
- required.add("destination");
- required.add("date");
- chatFunctionParameters.setProperties(properties);
- ChatFunction chatFunction = ChatFunction.builder()
- .name("query_train_info")
- .description("根据用户提供的信息,查询对应的车次")
- .parameters(chatFunctionParameters)
- .required(required)
- .build();
- chatTool.setFunction(chatFunction);
- chatToolList.add(chatTool);
-
- ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder()
- .model(Constants.ModelChatGLM4)
- .stream(Boolean.TRUE)
- .messages(messages)
- .requestId(requestId)
- .tools(chatToolList)
- .toolChoice("auto")
- .build();
- ModelApiResponse sseModelApiResp = client.invokeModelApi(chatCompletionRequest);
- if (sseModelApiResp.isSuccess()) {
- AtomicBoolean isFirst = new AtomicBoolean(true);
- ChatMessageAccumulator chatMessageAccumulator = mapStreamToAccumulator(sseModelApiResp.getFlowable())
- .doOnNext(accumulator -> {
- {
- if (isFirst.getAndSet(false)) {
- System.out.print("Response: ");
- }
- if (accumulator.getDelta() != null && accumulator.getDelta().getTool_calls() != null) {
- String jsonString = mapper.writeValueAsString(accumulator.getDelta().getTool_calls());
- System.out.println("tool_calls: " + jsonString);
- }
- if (accumulator.getDelta() != null && accumulator.getDelta().getContent() != null) {
- System.out.print(accumulator.getDelta().getContent());
- }
- }
- })
- .doOnComplete(System.out::println)
- .lastElement()
- .blockingGet();
-
- Choice choice = new Choice(chatMessageAccumulator.getChoice().getFinishReason(), 0L, chatMessageAccumulator.getDelta());
- List<Choice> choices = new ArrayList<>();
- choices.add(choice);
- ModelData data = new ModelData();
- data.setChoices(choices);
- data.setUsage(chatMessageAccumulator.getUsage());
- data.setId(chatMessageAccumulator.getId());
- data.setCreated(chatMessageAccumulator.getCreated());
- data.setRequestId(chatCompletionRequest.getRequestId());
- sseModelApiResp.setFlowable(null);
- sseModelApiResp.setData(data);
- }
- System.out.println("model output:" + JSON.toJSONString(sseModelApiResp));
- }
-
- public static Flowable<ChatMessageAccumulator> mapStreamToAccumulator(Flowable<ModelData> flowable) {
- return flowable.map(chunk -> {
- return new ChatMessageAccumulator(chunk.getChoices().get(0).getDelta(), null, chunk.getChoices().get(0), chunk.getUsage(), chunk.getCreated(), chunk.getId());
- });
- }
-
- /**
- * 同步调用
- */
- private static void testInvoke() {
- List<ChatMessage> messages = new ArrayList<>();
- ChatMessage chatMessage = new ChatMessage(ChatMessageRole.USER.value(), "ChatGLM和你哪个更强大");
- messages.add(chatMessage);
- String requestId = String.format(requestIdTemplate, System.currentTimeMillis());
- // 函数调用参数构建部分
- List<ChatTool> chatToolList = new ArrayList<>();
- ChatTool chatTool = new ChatTool();
- chatTool.setType(ChatToolType.FUNCTION.value());
- ChatFunctionParameters chatFunctionParameters = new ChatFunctionParameters();
- chatFunctionParameters.setType("object");
- Map<String, Object> properties = new HashMap<>();
- properties.put("location", new HashMap<String, Object>() {{
- put("type", "string");
- put("description", "城市,如:北京");
- }});
- properties.put("unit", new HashMap<String, Object>() {{
- put("type", "string");
- put("enum", new ArrayList<String>() {{
- add("celsius");
- add("fahrenheit");
- }});
- }});
- chatFunctionParameters.setProperties(properties);
- ChatFunction chatFunction = ChatFunction.builder()
- .name("get_weather")
- .description("Get the current weather of a location")
- .parameters(chatFunctionParameters)
- .build();
- chatTool.setFunction(chatFunction);
- chatToolList.add(chatTool);
- ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder()
- .model(Constants.ModelChatGLM4)
- .stream(Boolean.FALSE)
- .invokeMethod(Constants.invokeMethod)
- .messages(messages)
- .requestId(requestId)
- .tools(chatToolList)
- .toolChoice("auto")
- .build();
- ModelApiResponse invokeModelApiResp = client.invokeModelApi(chatCompletionRequest);
- try {
- System.out.println("model output:" + mapper.writeValueAsString(invokeModelApiResp));
- } catch (JsonProcessingException e) {
- e.printStackTrace();
- }
- }
-
-
- /**
- * 异步调用
- */
- private static String testAsyncInvoke() {
- List<ChatMessage> messages = new ArrayList<>();
- ChatMessage chatMessage = new ChatMessage(ChatMessageRole.USER.value(), "ChatLM和你哪个更强大");
- messages.add(chatMessage);
- String requestId = String.format(requestIdTemplate, System.currentTimeMillis());
- // 函数调用参数构建部分
- List<ChatTool> chatToolList = new ArrayList<>();
- ChatTool chatTool = new ChatTool();
- chatTool.setType(ChatToolType.FUNCTION.value());
- ChatFunctionParameters chatFunctionParameters = new ChatFunctionParameters();
- chatFunctionParameters.setType("object");
- Map<String, Object> properties = new HashMap<>();
- properties.put("location", new HashMap<String, Object>() {{
- put("type", "string");
- put("description", "城市,如:北京");
- }});
- properties.put("unit", new HashMap<String, Object>() {{
- put("type", "string");
- put("enum", new ArrayList<String>() {{
- add("celsius");
- add("fahrenheit");
- }});
- }});
- chatFunctionParameters.setProperties(properties);
- ChatFunction chatFunction = ChatFunction.builder()
- .name("get_weather")
- .description("Get the current weather of a location")
- .parameters(chatFunctionParameters)
- .build();
- chatTool.setFunction(chatFunction);
- chatToolList.add(chatTool);
- ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder()
- .model(Constants.ModelChatGLM4)
- .stream(Boolean.FALSE)
- .invokeMethod(Constants.invokeMethodAsync)
- .messages(messages)
- .requestId(requestId)
- .tools(chatToolList)
- .toolChoice("auto")
- .build();
- ModelApiResponse invokeModelApiResp = client.invokeModelApi(chatCompletionRequest);
- System.out.println("model output:" + JSON.toJSONString(invokeModelApiResp));
- return invokeModelApiResp.getData().getTaskId();
- }
-
-
- /**
- * 查询异步结果
- *
- * @param taskId
- */
- private static void testQueryResult(String taskId) {
- QueryModelResultRequest request = new QueryModelResultRequest();
- request.setTaskId(taskId);
- QueryModelResultResponse queryResultResp = client.queryModelResult(request);
- try {
- System.out.println("model output:" + mapper.writeValueAsString(queryResultResp));
- } catch (JsonProcessingException e) {
- e.printStackTrace();
- }
- }
- }
下面这个是整体的目录信息,提供一个参考
成功输出
这里解释一下四个的区别
testSseInvoke 使用的是逐渐输出,AI回答的结果是一段一段的展示。
testInvoke 使用的是同步执行,当AI全部的回答都输出后才会展示出来。
testAsyncInvoke 与testQueryResult 搭配使用,先通过testAsyncInvoke 让AI去执行,直接返回一个成功或者失败,之后通过获得的taskId,再用testQueryResult去查询获得结果即可。
The soft rustle of leaves danced in the gentle breeze as the sun dipped below the horizon, casting hues of pink and gold across the sky
语言模型上基本上都大差不差,下面尝试一下多模态的图片理解功能
这个没有免费的token包可以用,所以要往自己的账户里面充值一点钱,不用特别多。
图片生成如下(通过链接进行展示)https://sfile.chatglm.cn/testpath/3278f28a-746e-5d10-ad8f-91e838bffa3c_0.png
这里的图片必须是一个链接(比如下面这个)
https://cdn.bigmodel.cn/enterpriseAc/3f328152-e15c-420c-803d-6684a9f551df.jpeg?attname=24.jpeg
- model output:{"code":200,"data":{"choices":[{"finishReason":"stop","index":0,"message":
- {"content":"图中是一张营业执照的副本。上面有统一社会信用代码91310000MA1FPFR44,
- 证照编号为0100002201908280013。该公司的名称为极易净水科技(上海)有限公司,
- 类型为有限责任公司(台港澳法人独资),成立日期是2019年08月28日,营业期限至2049年08月27日。
- 法定代表人是朱芮。经营范围包括水处理设备、环保产品及零部件、空气调节设备及其零部件、
- 家用电器、燃气器具、电热水器具、太阳能设备、医疗器械的研究、批发、进出口、
- 佣金代理(拍卖除外)并提供相关配套服务。住所位于上海市黄浦区新码头街55号4幢3楼。执照右下角有一个二维码,旁边写着“扫描二维码登录‘国家企业信用信息公示系统’了解更多登记、备案、许可、监管信息。
- ”并盖有上海市市场监督管理局和上海市黄浦区市场监督管理局的公章,时间为2019年08月28日。左下方还有国家企业信用信息公示系统的网址:http://www.gsxt.gov.cn。
其实啊,这张图片和文字输出的结果有点像提取文字,并不能代表说AI是否理解了这副图片,所以我换了一个输入
https://www.bing.com/images/search?view=detailV2&ccid=p41EIG2y&id=3D6E0D23D9749CB1CC85DF31C907D9EDC995B2D2&thid=OIP.p41EIG2yb0HU0sRxX7yZEgHaE7&mediaurl=https%3a%2f%2fpic.52112.com%2f180303%2f180303_54%2fkYqA49HIMB.jpg&exph=532&expw=800&q=%e5%b0%8f%e5%a5%b3%e5%ad%a9%e5%9d%90%e5%9c%a8%e8%8d%89%e5%9c%b0%e4%b8%8a&simid=608026494945680312&FORM=IRPRST&ck=044E02C2E870928F13BED7BA1395AE64&selectedIndex=2&itb=0
输入之后,报错,参数调用有误,请检查文档
其实猜测就是要用图片的地址链接
理解成功,经过实验,这些功能都是可以直接调用使用的,非常方便。
可以参考下面这个链接
Java使用IntelliJ IDEA创建一个基于Swing的GUI图形化程序,打包发布为jar_idea swing gui-CSDN博客
快速了解Swing组件,可以参考下面这个链接
GUI ——java的图形界面快速入门 - 知乎 (zhihu.com)
分别是人工智能问答,诗歌生成,问答知识库,语言翻译和自动修改文章错别字(这些统一调用一一个就可以了),就是下面这个,testSseInvoke,API都是一个,调用的模型不一样。
还有图片理解,图片理解分为文生图,和图生文。这两个模块需要调用两个
在数据库设计方面,需要实现以下两个功能
注册方面在数据库中添加用户的信息。登录的话用查找,对用户的输入进行查找和比对,如果正确,输出登录成功,如果查找或者比对不正确,输出用户名或者密码错误,请用户再次输入。
设计一个用户登录的界面,有用户名和密码两个。图形化界面要和数据库关联在一起。
用户登录后跳转到用户输入的页面。
Java连接mysql数据库及mysql驱动jar包下载和使用(详细记录)_mysql connnector jar包要导入几个-CSDN博客
Navicat Premium15安装与激活(完整激活版) - 小芒果测开笔记 - 博客园 (cnblogs.com)
Java | 智谱API调用实践_com.zhipu.oapi.demo-CSDN博客
Java之Maven【IDEA版】入门到精通(一篇文章精通系列)_ij maven java入门-CSDN博客
Maven创建时archetype的选择说明_创建maven项目archetype选哪个-CSDN博客
IDEA2022.2版本(最新版)控制台输出中文乱码,四个方法的介绍 - 知乎 (zhihu.com)
IDEA使用JUnit时@Test无效以及无法导入org.junit包的问题_idea junit包导入不生效-CSDN博客
zhipuai/zhipuai-sdk-java (github.com)
如何用Python调用智谱AI的API进行智能问答 - 知乎 (zhihu.com)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。