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

步骤1:配置代理

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


步骤2:添加依赖

在pom.xml文件中添加:

<dependency>
	<groupId>com.theokanning.openai-gpt3-java</groupId>
	<artifactId>client</artifactId>
	<version>0.8.1</version>
</dependency>

步骤3:编写Constants类

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

其中,查看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);
	}
}

步骤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"));
		}
	}
}

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

<dependency>
	<groupId>org.jsoup</groupId>
	<artifactId>jsoup</artifactId>
	<version>1.14.3</version>
</dependency>
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.76</version>
</dependency>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
ChatGPT是由OpenAI公司开发的,目前没有Java版本的API。不过,你可以通过使用Python的机器学习库来集成ChatGPT,并使用Java调用Python代码来实现对话功能。 具体步骤如下: 1. 安装Python和PyTorch库 首先,你需要安装Python和PyTorch库。可以从官网下载并安装Python,然后使用pip命令安装PyTorch库。 2. 下载ChatGPT模型 你可以从OpenAI的GitHub仓库下载预训练的ChatGPT模型,该模型基于PyTorch实现。下载后,将其保存在本地。 3. 使用Python编写对话接口 接下来,你需要编写一个Python脚本,使用PyTorch加载ChatGPT模型,并编写一个函数,该函数接收一个字符串作为输入,并返回一个字符串作为回复。 示例代码如下: ```python import torch from transformers import GPT2Tokenizer, GPT2LMHeadModel tokenizer = GPT2Tokenizer.from_pretrained('gpt2') model = GPT2LMHeadModel.from_pretrained('gpt2') def generate_response(input_text): input_ids = tokenizer.encode(input_text, return_tensors='pt') sample_output = model.generate(input_ids, do_sample=True, max_length=50, top_k=50) response_text = tokenizer.decode(sample_output[0], skip_special_tokens=True) return response_text ``` 此代码使用PyTorch加载ChatGPT模型,然后定义了一个名为generate_response的函数,该函数接收一个字符串作为输入,并返回一个字符串作为回复。该函数使用模型生成回复文本。 4. 使用Java调用Python脚本 最后,你可以使用Java调用Python脚本,从而实现对话功能。可以使用Java的ProcessBuilder类,该类提供了一个start方法,可以启动一个新进程,并在该进程中执行Python脚本。 示例代码如下: ```java import java.io.BufferedReader; import java.io.InputStreamReader; public class Chatbot { public static void main(String[] args) throws Exception { String pythonScriptPath = "path/to/python/script.py"; ProcessBuilder pb = new ProcessBuilder("python", pythonScriptPath); Process p = pb.start(); BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); BufferedReader err = new BufferedReader(new InputStreamReader(p.getErrorStream())); String inputText = ""; String outputText = ""; // Loop for reading input and generating response while (true) { // Read user input BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("You: "); inputText = br.readLine(); // Send input to Python script p.getOutputStream().write((inputText + "\n").getBytes()); p.getOutputStream().flush(); // Read response from Python script outputText = in.readLine(); // Print response System.out.println("Bot: " + outputText); } } } ``` 此代码创建了一个Java进程,该进程调用Python脚本,从而实现对话功能。该代码使用Java的System.in类获取用户输入,并将其发送到Python脚本中。然后,该代码使用Java的Process类读取Python脚本生成的回复,并将其打印到控制台中。 注意:在使用Java调用Python脚本时,需要确保Python环境变量已正确设置,并且需要安装Python库,如PyTorch、transformers等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值