# 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);
}
}
```