• Java调用ChatGPT的API接口实现对话与图片生成


    步骤1:配置代理

    有些魔法是需要做配置的。否则无法正确实现代码测试。这里以我使用的工具为例说明。


    步骤2:添加依赖

    在pom.xml文件中添加:

    <dependency>
    	<groupId>com.theokanning.openai-gpt3-javagroupId>
    	<artifactId>clientartifactId>
    	<version>0.8.1version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    步骤3:编写Constants类

    • Constants类中,声明自己的API Key
    public class Constants {
    //大家填写自己的key,这个是瞎写的,没有用的
    public static final String OPENAPI_TOKEN = "sk-JPPwaelHv5QwdN3CL97UKLMbo7XIJDRy";
    }
    
    • 1
    • 2
    • 3
    • 4

    其中,查看API Key的位置:
    https://platform.openai.com/account/api-keys
    余额查询:
    https://platform.openai.com/account/usage


    步骤4:实现问答交互

    package com.atguigu.demo;
    import com.atguigu.Constants;
    import com.theokanning.openai.OpenAiService;
    import com.theokanning.openai.completion.CompletionRequest;
    
    public class Demo1 {
    public static void main(String[] args) {
    	String info1 = "Q: 能不能我写一封简短的情话,使用诗经的语言风格?A:";
    	info(info1);
    }
    public static void info(String promptInfo){
    	//注意:参数2用于设置超时时间
    	OpenAiService service = new OpenAiService(Constants.OPENAPI_TOKEN,5000);
    	CompletionRequest completionRequest = CompletionRequest.builder()
    	.model("text-davinci-003") //使用的模型
    	.prompt(promptInfo) //生成提示
    	.temperature(0D) //创新采样
    	.maxTokens(1000) //Token大小设置
    	.topP(1D) //情绪采样。[0,1]:从悲观到乐观
    	.frequencyPenalty(0D) //频率处罚系数。用来设置文本中出现重复词汇时的处罚参数
    	.presencePenalty(0D) //重复处罚系数
    	.build();
    	service.createCompletion(completionRequest)
    	.getChoices()
    	.forEach(System.out::println);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    步骤5:实现图片生成

    package com.atguigu.demo;
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    import com.atguigu.Constants;
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import java.io.IOException;
    
    public class Demo2 {
    public static void main(String[] args) throws IOException {
    	String json = "{" +
    		"\"prompt\":\"古装将军\"," +
    		"\"n\":1," +
    		"\"size\":\"1024x1024\"," +
    		"\"response_format\":\"url\"" +
    		"}";
    		show(json);
    		}
    		public static void show(String json) throws IOException{
    		Document document =
    		Jsoup.connect("https://api.openai.com/v1/images/generations")
    		.header("Authorization", "Bearer " + Constants.OPENAPI_TOKEN)
    		.header("Content-Type", "application/json")
    		.ignoreHttpErrors(true)
    		.ignoreContentType(true)
    		.requestBody(json)
    		.post();
    		JSONObject jsonObject = JSON.parseObject(document.body().text());
    		JSONArray data = jsonObject.getJSONArray("data");
    		for (int i = 0; i < data.size(); i++) {
    		JSONObject temp = data.getJSONObject(i);
    		System.out.println(temp.get("url"));
    		}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    pom.xml文件中需要增加依赖:

    <dependency>
    	<groupId>org.jsoupgroupId>
    	<artifactId>jsoupartifactId>
    	<version>1.14.3version>
    dependency>
    <dependency>
    	<groupId>com.alibabagroupId>
    	<artifactId>fastjsonartifactId>
    	<version>1.2.76version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    《开箱元宇宙》:《福布斯》如何通过 Web3 改进讲故事的方式
    练习41,[SCOI2010] 序列操作【线段树】
    Golang | Leetcode Golang题解之第123题买卖股票的最佳时机III
    快收藏!最全GO语言实现设计模式【下】
    邦芒攻略:面试迟到该如何补救
    【视频流上传播放功能】前后端分离用springboot-vue简单实现视频流上传和播放功能【详细注释版本,包含前后端代码】
    猿创征文|【Typescript】搭建TS的编译环境
    GPT-4 及更高版本:大型语言模型的力量
    全球与中国隔离式接口市场现状及未来发展趋势(简版)
    【好文鉴赏】面试官说你回答的不够深入,怎么办?
  • 原文地址:https://blog.csdn.net/qq_57163366/article/details/132746866