Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,16 @@ sourceSets {
}
}

ext {
set('springCloudVersion', "2023.0.1")
}

dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-validation'
Expand All @@ -45,15 +55,20 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-mail'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'

implementation 'io.jsonwebtoken:jjwt-api:0.12.3'
implementation 'io.jsonwebtoken:jjwt-impl:0.12.3'
implementation 'io.jsonwebtoken:jjwt-jackson:0.12.3'

implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.4.0'

compileOnly 'org.projectlombok:lombok'

runtimeOnly 'org.postgresql:postgresql'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation 'com.googlecode.json-simple:json-simple:1.1.1'
implementation 'org.springframework.boot:spring-boot-starter-aop'
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.space.server.common.config;

import feign.RequestInterceptor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableFeignClients
public class OpenAiFeignConfig {
@Value("${gpt.api.key}")
private String apiKey;

@Bean
public RequestInterceptor requestInterceptor() {
return requestTemplate -> {
requestTemplate.header("Content-Type", "application/json");
requestTemplate.header("Authorization", "Bearer " + apiKey);
requestTemplate.header("OpenAI-Beta", "assistants=v2");
};
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.space.server.domain.ai.infra.feign;

import com.space.server.common.config.OpenAiFeignConfig;
import com.space.server.domain.ai.service.dto.request.internal.AiChat;
import com.space.server.domain.ai.service.dto.request.internal.AiRunsRequest;
import com.space.server.domain.ai.service.dto.response.internal.AiAllMessagesResponse;
import com.space.server.domain.ai.service.dto.response.internal.AiMessagesResponse;
import com.space.server.domain.ai.service.dto.response.internal.AiRunsResponse;
import com.space.server.domain.ai.service.dto.response.internal.AiThreadResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

@FeignClient(
name = "OpenAiFeign",
url = "https://api.openai.com/v1/threads",
configuration = OpenAiFeignConfig.class
)
public interface OpenAiFeignClient {

@PostMapping
AiThreadResponse createThread();

@PostMapping("/{threadId}/messages")
AiMessagesResponse createMessage(@PathVariable("threadId") String threadId,
@RequestBody AiChat aiChat);

@GetMapping("/{threadId}/messages")
AiAllMessagesResponse getAllMessages(@PathVariable("threadId") String threadId);

@GetMapping("/{threadId}/messages/{messageId}")
AiMessagesResponse getMessage(@PathVariable("threadId") String threadId,
@PathVariable("messageId") String messageId);

@PostMapping("/{threadId}/runs")
AiRunsResponse createRun(@PathVariable("threadId") String threadId,
@RequestBody AiRunsRequest request);

@GetMapping("/{threadId}/runs/{runId}")
AiRunsResponse getRun(@PathVariable("threadId") String threadId,
@PathVariable("runId") String runId);
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.space.server.domain.ai.service.dto.request.gpt;
package com.space.server.domain.ai.service.dto.request.internal;

public record AiChat (
String role,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.space.server.domain.ai.service.dto.request.internal;

public record AiRunsRequest(
String assistant_id
) {}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.space.server.domain.ai.service.dto.request.gpt;
package com.space.server.domain.ai.service.dto.request.internal;

import java.util.List;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.space.server.domain.ai.service.dto.response;

import java.util.Map;

public record AiResponse (
Boolean isSuccess,
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.space.server.domain.ai.service.dto.response.internal;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public record AiAllMessagesResponse(
String first_id
) {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.space.server.domain.ai.service.dto.response.internal;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import java.util.List;

@JsonIgnoreProperties(ignoreUnknown = true)
public record AiMessagesResponse(
List<MessagesContent> content
) {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.space.server.domain.ai.service.dto.response.internal;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public record AiRunsResponse(
String id,
String status
) {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.space.server.domain.ai.service.dto.response.internal;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public record AiThreadResponse(
String id
) {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.space.server.domain.ai.service.dto.response.internal;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public record MessagesContent(
MessagesText text
) {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.space.server.domain.ai.service.dto.response.internal;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public record MessagesText(
String value
) {}
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.space.server.domain.ai.service.implementation;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.space.server.domain.ai.service.dto.request.gpt.AiChat;
import com.space.server.domain.ai.service.dto.request.gpt.AiRunsRequest;
import com.space.server.domain.ai.service.dto.request.gpt.AiThreadRequest;
import com.space.server.domain.ai.service.dto.response.gpt.AiAllMessagesResponse;
import com.space.server.domain.ai.service.dto.response.gpt.AiMessagesResponse;
import com.space.server.domain.ai.service.dto.response.gpt.AiRunsResponse;
import com.space.server.domain.ai.service.dto.response.gpt.AiThreadResponse;
import com.space.server.domain.ai.service.dto.request.internal.AiChat;
import com.space.server.domain.ai.service.dto.request.internal.AiRunsRequest;
import com.space.server.domain.ai.service.dto.request.internal.AiThreadRequest;
import com.space.server.domain.ai.service.dto.response.internal.AiAllMessagesResponse;
import com.space.server.domain.ai.service.dto.response.internal.AiMessagesResponse;
import com.space.server.domain.ai.service.dto.response.internal.AiRunsResponse;
import com.space.server.domain.ai.service.dto.response.internal.AiThreadResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.space.server.domain.ai.service.implementation;

public class MessageCreator {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.space.server.domain.ai.service.implementation;

public class MessageReader {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.space.server.domain.ai.service.implementation;

public class RunsCreator {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.space.server.domain.ai.service.implementation;

public class RunsReader {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.space.server.domain.ai.service.implementation;

public class ThreadCreator {
}
Loading