# chat4j **Repository Path**: tian-haoran/chat4j ## Basic Information - **Project Name**: chat4j - **Description**: 轻松解决ChatGPT等模型的API调用,未来将会支持多种模型(仿照Sms4j工层结构) - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-11 - **Last Updated**: 2024-02-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

AI Chat v1.0

一款综合接入AI的平台

# AI-Chat 未来将会集成多个AI模型,目前只完成了ChatGpt的对接。 sdk部分仿照sms4j工程结构设计 ## 1. SDK 使用方法 ### 1.1 配置(application.yml) ```yaml chat: read-timeout: 4300 write-timeout: 4300 connect-timeout: 4300 retry-count: 0 provider: chatgpt: key: sk-LIoETxxxxxxxxxxxxxxxxxxxxxxx # 如果使用代理则需要配置如下 isProxy: true proxyUrl: https://proxy.openai.com/ ``` ### 1.2 引入依赖 ```xml io.gitee.tian-haoran chat-sdk-spring-boot-starter 1.0 ``` ### 1.3 编码 ```java @RestController public class TestController { @PostMapping("/api/chatgpt/completion/not") public Response chatgpt_completion_not_stream() { ChatBlender chatBlender = ChatFactory.acquireChatBlender(SupplierType.CHATGPT); Message message = new Message("user", "讲个笑话吧"); List messages = new ArrayList<>(); messages.add(message); CompletionRequest request = CompletionRequest.builder() .messages(messages) .build(); Response response = chatBlender.completions(request); System.out.println("response = " + response); return response; } @GetMapping("/api/chatgpt/completion/sse") public ResponseBodyEmitter sseEmitter(String question, HttpServletResponse response) { // 1. 准备请求 response.setContentType("text/event-stream"); response.setCharacterEncoding("UTF-8"); response.setHeader("Cache-Control", "no-cache"); Message message = Message.of(question); List messages = new ArrayList<>(); messages.add(message); CompletionRequest request = CompletionRequest.builder() .messages(messages) .stream(true) .build(); // 2. sse ResponseBodyEmitter emitter = new ResponseBodyEmitter(3 * 60 * 1000L); DefaultChatgptEventSourceListener listener = new DefaultChatgptEventSourceListener(emitter); //ConsoleChatgptEventSourceListener listener = new ConsoleChatgptEventSourceListener(); // 3. sdk ChatBlender chatBlender = ChatFactory.acquireChatBlender(SupplierType.CHATGPT); chatBlender.completions(request, listener); return emitter; } @GetMapping("/api/chatgpt/image") public Response image(String prompt) { ChatBlender chatBlender = ChatFactory.acquireChatBlender(SupplierType.CHATGPT); ImageRequest request = ImageRequest.builder() .prompt(prompt) .build(); return chatBlender.generateImage(request); } } ```