Skip to content

Commit

Permalink
Merge pull request #9 from Team-Clody/Feat/#8
Browse files Browse the repository at this point in the history
Feat : GPT 4 모델을 연결합니다.
  • Loading branch information
hyunw9 authored Jul 19, 2024
2 parents 0fdb715 + a2a70b2 commit e07dd56
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 32 deletions.
9 changes: 4 additions & 5 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ dependencies {
implementation 'org.postgresql:postgresql'

// Spring Data JPA
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

// Lombok
compileOnly 'org.projectlombok:lombok'
Expand All @@ -61,10 +61,9 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-webflux'

implementation "com.github.jasync-sql:jasync-r2dbc-mysql:2.2.0"
}



tasks.named('test') {
useJUnitPlatform()
tasks.named('test') {
useJUnitPlatform()
}
}
40 changes: 19 additions & 21 deletions src/main/java/org/sopt/gptapi/config/AsyncChatgptServiceImpl.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package org.sopt.gptapi.config;

import io.github.flashvayne.chatgpt.dto.ChatRequest;
import io.github.flashvayne.chatgpt.dto.ChatResponse;
import io.github.flashvayne.chatgpt.dto.chat.MultiChatMessage;
import io.github.flashvayne.chatgpt.dto.chat.MultiChatRequest;
import io.github.flashvayne.chatgpt.dto.chat.MultiChatResponse;
Expand All @@ -10,24 +8,22 @@
import io.github.flashvayne.chatgpt.dto.image.ImageResponse;
import io.github.flashvayne.chatgpt.dto.image.ImageSize;
import io.github.flashvayne.chatgpt.property.ChatgptProperties;
import java.util.ArrayList;
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.sopt.gptapi.service.AsyncChatgptService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sopt.gptapi.service.AsyncChatgptService;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;

import java.util.ArrayList;
import java.util.List;
@Service
public class AsyncChatgptServiceImpl implements AsyncChatgptService {
private static final Logger log = LoggerFactory.getLogger(AsyncChatgptServiceImpl.class);
private final ChatgptProperties chatgptProperties;
protected final ChatgptProperties chatgptProperties;
private final WebClient webClient;

public AsyncChatgptServiceImpl(ChatgptProperties chatgptProperties) {
Expand All @@ -41,36 +37,38 @@ public AsyncChatgptServiceImpl(ChatgptProperties chatgptProperties) {

@Override
public Mono<String> sendMessage(String message) {
ChatRequest chatRequest = new ChatRequest(
List<MultiChatMessage> messages = new ArrayList<>();
messages.add(new MultiChatMessage("user", message));

MultiChatRequest multiChatRequest = new MultiChatRequest(
this.chatgptProperties.getModel(),
message,
messages,
this.chatgptProperties.getMaxTokens(),
this.chatgptProperties.getTemperature(),
this.chatgptProperties.getTopP()
);
log.info("Sending chat message : {}", message);
return sendChatRequest(chatRequest)
.map(chatResponse -> chatResponse.getChoices().get(0).getText());
return sendChatRequest(multiChatRequest)
.map(multiChatResponse -> multiChatResponse.getChoices().get(0).getMessage().getContent());
}

@Override
public Mono<ChatResponse> sendChatRequest(ChatRequest chatRequest) {
public Mono<MultiChatResponse> sendChatRequest(MultiChatRequest multiChatRequest) {
return webClient.post()
.uri(chatgptProperties.getUrl())
.body(BodyInserters.fromValue(chatRequest))
.body(BodyInserters.fromValue(multiChatRequest))
.retrieve()
.bodyToMono(ChatResponse.class)
.bodyToMono(MultiChatResponse.class)
.doOnError(e -> log.error("Error during chat request", e));
}

@Override
public Mono<String> multiChat(List<MultiChatMessage> messages) {
MultiChatRequest multiChatRequest = new MultiChatRequest(
this.chatgptProperties.getMulti().getModel(),
this.chatgptProperties.getModel(),
messages,
this.chatgptProperties.getMulti().getMaxTokens(),
this.chatgptProperties.getMulti().getTemperature(),
this.chatgptProperties.getMulti().getTopP()
this.chatgptProperties.getMaxTokens(),
this.chatgptProperties.getTemperature(),
this.chatgptProperties.getTopP()
);
return multiChatRequest(multiChatRequest)
.map(multiChatResponse -> multiChatResponse.getChoices().get(0).getMessage().getContent());
Expand All @@ -79,7 +77,7 @@ public Mono<String> multiChat(List<MultiChatMessage> messages) {
@Override
public Mono<MultiChatResponse> multiChatRequest(MultiChatRequest multiChatRequest) {
return webClient.post()
.uri(chatgptProperties.getMulti().getUrl())
.uri(chatgptProperties.getUrl())
.body(BodyInserters.fromValue(multiChatRequest))
.retrieve()
.bodyToMono(MultiChatResponse.class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.sopt.gptapi.dto.UserRequest;
import org.sopt.gptapi.service.ChatService;
import org.sopt.gptapi.service.chat.ChatService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
package org.sopt.gptapi.service;

import io.github.flashvayne.chatgpt.dto.ChatRequest;
import io.github.flashvayne.chatgpt.dto.ChatResponse;
import io.github.flashvayne.chatgpt.dto.chat.MultiChatMessage;
import io.github.flashvayne.chatgpt.dto.chat.MultiChatRequest;
import io.github.flashvayne.chatgpt.dto.chat.MultiChatResponse;
import io.github.flashvayne.chatgpt.dto.image.ImageFormat;
import io.github.flashvayne.chatgpt.dto.image.ImageRequest;
import io.github.flashvayne.chatgpt.dto.image.ImageResponse;
import io.github.flashvayne.chatgpt.dto.image.ImageSize;
import java.util.List;
import reactor.core.publisher.Mono;

import java.util.List;

public interface AsyncChatgptService {
Mono<String> sendMessage(String message);
Mono<ChatResponse> sendChatRequest(ChatRequest chatRequest);
Mono<MultiChatResponse> sendChatRequest(MultiChatRequest multiChatRequest);
Mono<String> multiChat(List<MultiChatMessage> messages);
Mono<MultiChatResponse> multiChatRequest(MultiChatRequest multiChatRequest);
Mono<String> imageGenerate(String prompt);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package org.sopt.gptapi.service;
package org.sopt.gptapi.service.chat;

import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.sopt.gptapi.config.PromptProperty;
import org.sopt.gptapi.service.AsyncChatgptService;
import org.sopt.gptapi.service.reply.ReplyService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
Expand Down

0 comments on commit e07dd56

Please sign in to comment.