• 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
  • 相关阅读:
    nacos在linux上单击部署
    Pytorch CUDA CPP简易教程,在Windows上操作
    入行3D建模,你和其他同行拼的是什么?
    esbuild中文文档-路径解析配置项(Path resolution - External、Main fields)
    【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享
    三数之和
    正则表达式 0.1v
    Failure [DELETE_FAILED_INTERNAL_ERROR]的解决办法
    云的灵魂是人工智能
    upload-labs靶场通关指南(16-17关)
  • 原文地址:https://blog.csdn.net/qq_57163366/article/details/132746866