v1.2.8.1 premium diet generation modif

This commit is contained in:
bossanyit 2023-05-18 08:18:57 +02:00
parent e3182c210c
commit 8b0e6fe6c3
9 changed files with 41 additions and 17 deletions

1
src/deploy/diet4you/build_api Executable file
View File

@ -0,0 +1 @@
docker buildx build --platform linux/amd64 --no-cache -t diet4you_api -f Dockerfile .

View File

@ -75,9 +75,27 @@ class DietController(private val dietRepository: DietRepository) {
@OptIn(BetaOpenAI::class, DelicateCoroutinesApi::class)
@PostMapping("/diet/generate_premium/{dietUserId}", produces = [MediaType.APPLICATION_JSON_VALUE + ";charset=UTF-8"])
fun generatePremiumDiet(@PathVariable dietUserId: Long, @RequestBody input: String, @Value("\${openai.key}") openaiKey: String): ResponseEntity<*> {
val now = LocalDateTime.now()
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
val todayString = now.format(formatter)
var diet: Diet? = dietRepository.findTheLastEmptyDiet(dietUserId)
if ( diet == null ) {
diet = Diet(
dietUserId = dietUserId,
dietText = "",
startDate = todayString,
premium = 0
)
diet = dietRepository.save(diet)
}
val systemMsg = ChatMessage(
role = ChatRole.System,
content = "Te egy táplálkozási szakértő vagy"
content = "Te egy táplálkozási szakértő vagy. A feladat mindig egy étrend elkészítése ebben a 3 lépésben:\n" +
"\n" +
"1. Vizsgáld meg az input adatokat, és készítsd el az étrendet\n" +
"2. Ellenőrizd az ételeket, hogy tényleg létezik-e olyan, és megfelel az input adatok feltételeinek\n" +
"3. Ellenőrizd a kimeneti formátumot. Csak a megadott kimeneti formátumban válaszolj"
)
val userMsg = ChatMessage(
role = ChatRole.User,
@ -91,6 +109,7 @@ class DietController(private val dietRepository: DietRepository) {
val openai = OpenAIChat(
messages = messages,
//modelName = "gpt-3.5-turbo",
modelName = "gpt-4",
temperature = 0.9
)
@ -112,15 +131,10 @@ class DietController(private val dietRepository: DietRepository) {
if ( result == null ) {
return ResponseEntity.badRequest().build<String>()
}
val now = LocalDateTime.now()
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
val todayString = now.format(formatter)
val diet: Diet = Diet(
dietUserId = dietUserId,
dietText = result!!,
startDate = todayString,
premium = 1
)
diet.dietText = result!!
diet.startDate = todayString
diet.premium = 1
return ResponseEntity.ok().body(dietRepository.save(diet))
}
}

View File

@ -10,9 +10,9 @@ import org.jetbrains.annotations.NotNull
data class Diet (
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Expose val dietId: Long = 0,
@Expose @get: NotNull val dietUserId: Long = 0,
@Expose @get: NotNull val dietText: String = "",
@Expose @get: NotNull var dietText: String = "",
@Expose @get: NotNull var startDate: String = "",
@Expose @get: NotNull val premium: Int = 0,
@Expose @get: NotNull var premium: Int = 0,
) {
@OneToMany(cascade = [(CascadeType.ALL)], fetch = FetchType.EAGER, mappedBy = "diet")
@Fetch(value = FetchMode.SUBSELECT)

View File

@ -19,6 +19,8 @@ import org.springframework.test.web.servlet.MvcResult
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.*
import kotlin.test.assertEquals
import kotlin.test.assertNotNull
@ExtendWith(SpringExtension::class)
@ -164,6 +166,13 @@ class DietTest {
dietRepository.delete(newDiet2)
}
@Test
fun `find the last empty diet successfully`() {
val diet: Diet? = dietRepository.findTheLastEmptyDiet(2)
assertNotNull(diet)
assertEquals(diet.premium, 1)
}
//@Test
fun `generate premium diet successfully`() {
@ -173,7 +182,7 @@ class DietTest {
"- Allergiák: olajos magvak\n" +
"- Preferált ételek: magyar konyha\n" +
"- Ezek az ételek nem szerepelhetnek az étrendben: főzelékek\n" +
"- napi kalóriacél: 2100 kCal\n" +
//"- napi kalóriacél: 2100 kCal\n" +
"- Étel frekvencia: reggeli, ebéd, uzsonna, vacsora\n" +
"- Ebéd és vacsora megegyezik. \n" +
"- ne legyen ismétlődés az ételeknél\n" +
@ -181,11 +190,11 @@ class DietTest {
"A választ ebben a formátumban add meg:\n" +
"{ \"DIET\": [\n" +
"{\"nameDay\": enum<monday, tuesday, wednesday...>\n" +
"\"mealTime\":enum<breakfast, lunch+dinner, snack>\n" +
"\"mealTime\":enum<breakfast, lunch, snack, dinner>\n" +
"\"meals\":[<mealNames in Hungarian>],\n" +
"\"quantities\":[<quantities for each mealName in gramms>],\n" +
"\"calories\":[<calorie values for each mealName>],\n" +
"}, \"sumCal\":double\n" +
//"\"quantities\":[<quantities for each mealName in gramms>],\n" +
//"\"calories\":[<calorie values for each mealName>],\n" +
"}" +
"]}"
mockMvc.perform(