最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

java

运维笔记admin53浏览0评论

java

java

1.

/p/46dda2b38716

package com.demo.chatgpt.test;import cn.hutool.core.collection.CollectionUtil;import com.fasterxml.jackson.annotation.JsonProperty;import com.googlemon.collect.Maps;import lombok.Data;import lombok.extern.slf4j.Slf4j;import org.apachemons.lang3.StringUtils;import org.springframework.http.HttpHeaders;import org.springframework.http.HttpMethod;import org.springframework.http.RequestEntity;import org.springframework.http.ResponseEntity;import org.springframework.util.MultiValueMap;import org.springframework.web.client.RestTemplate;import java.URI;import java.util.List;import java.util.Map;import java.util.Objects;@Slf4jpublic class ChatGptApiTest { //通过spring 的resttemplate调用chatgpt api private static final RestTemplate restTemplate = new RestTemplate(); //openai的api key,可以写死或从配置文件读取,这里读取的环境变量 private static final String apiKey = System.getenv("OPENAI_API_KEY"); public static void main(String[] args) { final String question = "google和openai比,哪个公司更有潜力"; final StringBuilder sb = new StringBuilder(); while (true){ //循环调用,将返回的内容附加到问题里,解决返回的答案被截断的问题 AIResponse response = getAiResponse(question+"\n A:"+sb); if(response!= null ){// 如果返回不为null,提取返回内容 sb.append(CollectionUtil.getFirst(response.getChoices()).getText()); } if(response == null || CollectionUtil.getFirst(response.getChoices()).finish()){ //返回null,或者回答结束,退出循环 break; } } log.info("result:{}",sb); } private static AIResponse getAiResponse(final String question){ final Map<String,Object> data = Maps.newHashMap(); data.put("model","text-davinci-003"); data.put("prompt",question); data.put("temperature",0); data.put("max_tokens",50); log.info("apikey:{}",apiKey); if(StringUtils.isBlank(apiKey)){ log.error("apikey is empty"); }else { final URI uri = URI.create("/v1/completions"); MultiValueMap<String,String> headers = new HttpHeaders(); headers.add("Content-Type","application/json"); headers.add("Authorization","Bearer "+apiKey); final RequestEntity<String> request = new RequestEntity<>(JsonUtils.toJson(data),headers,HttpMethod.POST, uri); final ResponseEntity<AIResponse> responseEntity = restTemplate.exchange(request, AIResponse.class); AIResponse responseEntityBody = responseEntity.getBody(); log.info("{}",responseEntity); if(!Objects.isNull(responseEntityBody)){ final AIResponseChoice first = CollectionUtil.getFirst(responseEntityBody.getChoices()); if(!Objects.isNull(first)){ return responseEntityBody; } }else { log.info("{}",responseEntity); } } return null; } @Data public static class AIResponse{ private List<AIResponseChoice> choices; } @Data public static class AIResponseChoice{ private String text; @JsonProperty("finish_reason") private String finishReason; public boolean finish(){ return !Objects.equals("length",finishReason); } }} 2.

/p/612460401

<dependency> <groupId>com.theokanning.openai-gpt3-java</groupId> <artifactId>client</artifactId><version>0.11.0</version></dependency> public void sendMsg() {// 消息列表List<ChatMessage> list = new ArrayList<>();// 给chatGPT定义一个身份,是一个助手ChatMessage chatMessage = new ChatMessage();chatMessage.setRole("system");chatMessage.setContent("You are a helpful assistant.");list.add(chatMessage);// 定义一个用户身份,content是用户写的内容ChatMessage userMessage = new ChatMessage();userMessage.setRole("user");userMessage.setContent("hello");list.add(userMessage);ChatCompletionRequest request = ChatCompletionRequest.builder() .messages(list) .model("gpt-3.5-turbo") .build();OpenAiService service = new OpenAiService("your token");// chatCompletion 对象就是chatGPT响应的数据了ChatCompletionResult chatCompletion = service.createChatCompletion(request);} 3.

/4608la

import java.io.IOException;import java.util.Arrays;import org.apache.http.HttpEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.util.EntityUtils;import com.fasterxml.jackson.databind.JsonNode;import com.fasterxml.jackson.databind.ObjectMapper;public class ChatGPTExample { private static final String API_ENDPOINT = "/v1/engines/davinci-codex/completions"; private static final String ACCESS_TOKEN = "<your-access-token>"; public static void main(String[] args) throws IOException { // Create a new HTTP client CloseableHttpClient httpClient = HttpClients.createDefault(); // Set the API request parameters String prompt = "Hello, how are you today?"; int maxTokens = 60; double temperature = 0.7; double topP = 1.0; double frequencyPenalty = 0.5; double presencePenalty = 0.0; // Create a new HTTP POST request HttpPost httpPost = new HttpPost(API_ENDPOINT); httpPost.addHeader("Content-Type", "application/json"); httpPost.addHeader("Authorization", "Bearer " + ACCESS_TOKEN); // Set the request body as a JSON string ObjectMapper objectMapper = new ObjectMapper(); String requestBody = objectMapper.writeValueAsString( new ChatGPTRequest(prompt, maxTokens, temperature, topP, frequencyPenalty, presencePenalty)); httpPost.setEntity(new StringEntity(requestBody)); // Send the API request and parse the response CloseableHttpResponse response = httpClient.execute(httpPost); HttpEntity entity = response.getEntity(); String responseBody = EntityUtils.toString(entity); EntityUtils.consume(entity); response.close(); JsonNode responseJson = objectMapper.readTree(responseBody); String responseText = responseJson.get("choices").get(0).get("text").asText(); // Print the response text to the console System.out.println("ChatGPT response: " + responseText); // Close the HTTP client httpClient.close(); } static class ChatGPTRequest { public String prompt; public int max_tokens; public double temperature; public double top_p; public double frequency_penalty; public double presence_penalty; public ChatGPTRequest(String prompt, int maxTokens, double temperature, double topP, double frequencyPenalty, double presencePenalty) { this.prompt = prompt; this.max_tokens = maxTokens; this.temperature = temperature; this.top_p = topP; this.frequency_penalty = frequencyPenalty; this.presence_penalty = presencePenalty; } }}

首先创建了一个HTTP客户端,然后设置了API的访问端点和访问密钥。接着,我们设置了对话的文本和一些生成对话的参数,并使用Jackson库将请求参数转换为JSON字符串。然后,我们创建了一个HTTP POST请求,并将JSON字符串设置为请求体。接着,我们使用HTTP客户端发送请求,并解析了响应。最后,我们使用Jackson库从响应JSON中提取生成的对话文本,并将其打印到控制台上。

4.

https://betheme/yidongkaifa/76935.html?action=onClick

java-chatgpt

发布评论

评论列表(0)

  1. 暂无评论