亚马逊官方网站的建设,综合网站系统,企业建站公司怎么创业,老牛影视传媒有限公司一、需要良好的网络 二、需要在OpenAI官网https://openai.com/注册用户#xff0c;并获取一个api-key#xff0c;sk开头的 验证是否可用网站#xff1a;http://tools.lbbit.top/check_key_valid/ 三、spring boot 配置文件
openai.proxyHost127.0.0.1
openai.proxyPort7890…一、需要良好的网络 二、需要在OpenAI官网https://openai.com/注册用户并获取一个api-keysk开头的 验证是否可用网站http://tools.lbbit.top/check_key_valid/ 三、spring boot 配置文件
openai.proxyHost127.0.0.1
openai.proxyPort7890
openai.keyssk-xxxxxxxxxx
openai.proxyhttps://xxxxxxx/四、新建配置类AiServiceFactory
import com.fasterxml.jackson.databind.ObjectMapper;
import com.theokanning.openai.client.OpenAiApi;
import com.theokanning.openai.service.OpenAiService;
import okhttp3.OkHttpClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import retrofit2.Retrofit;import java.net.InetSocketAddress;
import java.net.Proxy;
import java.time.Duration;Component
public class AiServiceFactory {Value(${openai.proxyHost})private String proxyHost;/*** 代理端口*/Value(${openai.proxyPort})private Integer proxyPort;/*** openai apikey*/Value(${openai.keys})private String token;Value(${openai.proxy})private String proxyIp;private static final Duration DEFAULT_TIMEOUT Duration.ofSeconds(10L);public OpenAiService createService() {ObjectMapper mapper OpenAiService.defaultObjectMapper();// 设置代理Proxy proxy new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));OkHttpClient client OpenAiService.defaultClient(token, DEFAULT_TIMEOUT).newBuilder().proxy(proxy).build();Retrofit retrofit OpenAiService.defaultRetrofit(client, mapper).newBuilder().baseUrl(proxyIp).build();return new OpenAiService(retrofit.create(OpenAiApi.class), client.dispatcher().executorService());}
}
如果需要中转站代理的话该类里面的方法如下
public OpenAiService createService() {ObjectMapper mapper OpenAiService.defaultObjectMapper();// 设置代理
// Proxy proxy new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
// Proxy proxy new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyIp, 8080));OkHttpClient client OpenAiService.defaultClient(token, DEFAULT_TIMEOUT).newBuilder()
// .proxy(proxy).build();Retrofit retrofit OpenAiService.defaultRetrofit(client, mapper).newBuilder().baseUrl(proxyIp).build();//代理服务器中转站return new OpenAiService(retrofit.create(OpenAiApi.class), client.dispatcher().executorService());}五、测试控制器当然也可以写进service层
package com.example.springbootest3_2.controller;import com.example.springbootest3_2.config.AiServiceFactory;
import com.theokanning.openai.completion.chat.*;
import com.theokanning.openai.service.OpenAiService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;RestController
public class OpenAiController {Resourceprivate AiServiceFactory aiServiceFactory;PostMapping(/testChat)public String testChat(RequestBody MapString,String params) throws UnsupportedEncodingException {OpenAiService service aiServiceFactory.createService();final ListChatMessage messages new ArrayList();final ChatMessage systemMessage new ChatMessage(ChatMessageRole.USER.value(),URLDecoder.decode(params.get(contents),UTF-8));messages.add(systemMessage);ChatCompletionRequest chatCompletionRequest ChatCompletionRequest.builder().model(gpt-3.5-turbo).messages(messages).temperature(0.5)
// .n(1)
// .maxTokens(50)
// .logitBias(new HashMap()).build();ChatCompletionResult chatCompletionResultservice.createChatCompletion(chatCompletionRequest);ListChatCompletionChoice compListchatCompletionResult.getChoices();StringBuilder sb new StringBuilder();for (ChatCompletionChoice comp : compList) {sb.append(comp.getMessage().getContent());}return sb.toString();}}