spring boot 如何嵌入chatGPT
作者:程序员阿明
这篇文章主要介绍了spring boot 如何嵌入chatGPT,spring boot 嵌入chatGPT步骤,本文通过springboot配置文件结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
springboot+chatgpt+chatUI Pro开发智能聊天工具的实践
一、需要良好的网络
二、需要在OpenAI官网https://openai.com/注册用户,并获取一个api-key,sk开头的
验证是否可用网站:http://tools.lbbit.top/check_key_valid/
三、spring boot 配置文件
openai.proxyHost=127.0.0.1 openai.proxyPort=7890 openai.keys=sk-xxxxxxxxxx openai.proxy=https://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 { @Resource private AiServiceFactory aiServiceFactory; @PostMapping("/testChat") public String testChat(@RequestBody Map<String,String> params) throws UnsupportedEncodingException { OpenAiService service = aiServiceFactory.createService(); final List<ChatMessage> 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 chatCompletionResult=service.createChatCompletion(chatCompletionRequest); List<ChatCompletionChoice> compList=chatCompletionResult.getChoices(); StringBuilder sb = new StringBuilder(); for (ChatCompletionChoice comp : compList) { sb.append(comp.getMessage().getContent()); } return sb.toString(); } }
到此这篇关于spring boot 嵌入chatGPT步骤的文章就介绍到这了,更多相关spring boot 嵌入chatGPT内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!