From aa3b761f42b3df4bfde7ce848b6074892c0eb7d5 Mon Sep 17 00:00:00 2001 From: Javi Pacheco Date: Mon, 25 Mar 2024 08:47:00 +0100 Subject: [PATCH] Removing var in TestSuite and adding messsages in console --- .../functional/xef/evaluator/SuiteBuilder.kt | 5 ++++- .../functional/xef/evaluator/TestItemBuilder.kt | 9 +-------- .../functional/xef/evaluator/models/TestModels.kt | 2 -- .../xebia/functional/xef/evaluator/TestExample.kt | 15 ++++++++------- 4 files changed, 13 insertions(+), 18 deletions(-) diff --git a/evaluator/src/main/kotlin/com/xebia/functional/xef/evaluator/SuiteBuilder.kt b/evaluator/src/main/kotlin/com/xebia/functional/xef/evaluator/SuiteBuilder.kt index 532bfa393..48cec980f 100644 --- a/evaluator/src/main/kotlin/com/xebia/functional/xef/evaluator/SuiteBuilder.kt +++ b/evaluator/src/main/kotlin/com/xebia/functional/xef/evaluator/SuiteBuilder.kt @@ -40,10 +40,12 @@ data class SuiteSpec( E : Enum { val items = items.map { item -> + println("Evaluating item: ${item.input}") val outputResults = item.outputs.map { output -> val classification = AI.classify(item.input, item.context, output.value, model = model) + println(" |_ ${output.description.value} = classification $classification") OutputResult(output.description.value, item.context, output.value, classification) } ItemResult(item.input, outputResults) @@ -107,7 +109,8 @@ data class ItemSpec( @JvmSynthetic suspend operator fun invoke( input: String, + context: String, block: suspend TestItemBuilder.() -> Unit - ): ItemSpec = TestItemBuilder(input).apply { block() }.build() + ): ItemSpec = TestItemBuilder(input, context).apply { block() }.build() } } diff --git a/evaluator/src/main/kotlin/com/xebia/functional/xef/evaluator/TestItemBuilder.kt b/evaluator/src/main/kotlin/com/xebia/functional/xef/evaluator/TestItemBuilder.kt index ec238ea0b..e9283705f 100644 --- a/evaluator/src/main/kotlin/com/xebia/functional/xef/evaluator/TestItemBuilder.kt +++ b/evaluator/src/main/kotlin/com/xebia/functional/xef/evaluator/TestItemBuilder.kt @@ -1,18 +1,11 @@ package com.xebia.functional.xef.evaluator -import com.xebia.functional.xef.evaluator.models.ContextDescription import com.xebia.functional.xef.evaluator.models.OutputResponse -class TestItemBuilder(val input: String) { - - private lateinit var context: String +class TestItemBuilder(val input: String, val context: String) { private val outputs = mutableListOf() - operator fun ContextDescription.unaryPlus() { - context = value - } - operator fun OutputResponse.unaryPlus() { outputs.add(this) } diff --git a/evaluator/src/main/kotlin/com/xebia/functional/xef/evaluator/models/TestModels.kt b/evaluator/src/main/kotlin/com/xebia/functional/xef/evaluator/models/TestModels.kt index c967b675e..77f6157bb 100644 --- a/evaluator/src/main/kotlin/com/xebia/functional/xef/evaluator/models/TestModels.kt +++ b/evaluator/src/main/kotlin/com/xebia/functional/xef/evaluator/models/TestModels.kt @@ -15,5 +15,3 @@ data class OutputResponse(val description: OutputDescription, val value: String) ): OutputResponse = OutputResponse(description, block()) } } - -@Serializable data class ContextDescription(val value: String) diff --git a/examples/src/main/kotlin/com/xebia/functional/xef/evaluator/TestExample.kt b/examples/src/main/kotlin/com/xebia/functional/xef/evaluator/TestExample.kt index 0ab277aa9..eabdfbb6d 100644 --- a/examples/src/main/kotlin/com/xebia/functional/xef/evaluator/TestExample.kt +++ b/examples/src/main/kotlin/com/xebia/functional/xef/evaluator/TestExample.kt @@ -5,7 +5,6 @@ import arrow.continuations.SuspendApp import com.xebia.functional.openai.models.CreateChatCompletionRequestModel import com.xebia.functional.xef.conversation.Conversation import com.xebia.functional.xef.evaluator.metrics.AnswerAccuracy -import com.xebia.functional.xef.evaluator.models.ContextDescription import com.xebia.functional.xef.evaluator.models.OutputDescription import com.xebia.functional.xef.evaluator.models.OutputResponse import com.xebia.functional.xef.prompt.Prompt @@ -25,9 +24,10 @@ object TestExample { val gpt35Description = OutputDescription("Using GPT3.5") val fakeOutputs = OutputDescription("Fake outputs with errors") - +ItemSpec("Please provide a movie title, genre and director") { - +ContextDescription("Contains information about a movie") - + +ItemSpec( + input = "Please provide a movie title, genre and director", + context = "Contains information about a movie" + ) { +OutputResponse(gpt35Description) { Conversation { promptMessage(Prompt(model) { +user(input) }) } } @@ -35,9 +35,10 @@ object TestExample { +OutputResponse(description = fakeOutputs, value = "I don't know") } - +ItemSpec("Recipe for a chocolate cake") { - +ContextDescription("Contains instructions for making a cake") - + +ItemSpec( + input = "Recipe for a chocolate cake", + context = "Contains instructions for making a cake" + ) { +OutputResponse(gpt35Description) { Conversation { promptMessage(Prompt(model) { +user(input) }) } }