Skip to content

Commit b6e40ad

Browse files
committed
add RequestMetaInfo and clock dependency to UserContentBuilder, update user message handling
1 parent 00f1a22 commit b6e40ad

File tree

5 files changed

+37
-13
lines changed

5 files changed

+37
-13
lines changed

prompt/prompt-executor/prompt-executor-clients/prompt-executor-ollama-client/src/commonMain/kotlin/ai/koog/prompt/executor/ollama/client/dto/OllamaManagementConverters.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ private fun List<OllamaShowModelResponseDTO.Capability>.toLLMCapabilities(): Lis
3333
OllamaShowModelResponseDTO.Capability.COMPLETION -> listOf(LLMCapability.Completion)
3434
OllamaShowModelResponseDTO.Capability.EMBEDDING -> listOf(LLMCapability.Embed)
3535
OllamaShowModelResponseDTO.Capability.INSERT -> listOf()
36-
OllamaShowModelResponseDTO.Capability.VISION -> listOf(LLMCapability.Vision)
36+
OllamaShowModelResponseDTO.Capability.VISION -> listOf(LLMCapability.Vision.Image)
3737
OllamaShowModelResponseDTO.Capability.TOOLS -> listOf(LLMCapability.Tools)
3838
}
3939
} + listOf(

prompt/prompt-executor/prompt-executor-clients/prompt-executor-openai-client/src/commonMain/kotlin/ai/koog/prompt/executor/clients/openai/OpenAILLMClient.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import kotlinx.coroutines.Dispatchers
4040
import kotlinx.coroutines.flow.Flow
4141
import kotlinx.coroutines.flow.flow
4242
import kotlinx.coroutines.withContext
43+
import kotlinx.datetime.Clock
4344
import kotlinx.serialization.json.ClassDiscriminatorMode
4445
import kotlinx.serialization.json.Json
4546
import kotlinx.serialization.json.JsonElement
@@ -50,9 +51,6 @@ import kotlinx.serialization.json.JsonPrimitive
5051
import kotlinx.serialization.json.buildJsonArray
5152
import kotlinx.serialization.json.buildJsonObject
5253
import kotlinx.serialization.json.put
53-
import kotlin.io.encoding.ExperimentalEncodingApi
54-
import kotlinx.datetime.Clock
55-
import kotlinx.serialization.json.*
5654
import kotlin.uuid.ExperimentalUuidApi
5755
import kotlin.uuid.Uuid
5856

prompt/prompt-model/src/commonMain/kotlin/ai/koog/prompt/dsl/PromptBuilder.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ public class PromptBuilder internal constructor(
112112
* @param body The initialization block for the UserContentBuilder.
113113
*/
114114
public fun user(body: UserContentBuilder.() -> Unit) {
115-
messages.addAll(UserContentBuilder().apply(body).build())
115+
messages.addAll(UserContentBuilder(clock).apply(body).build())
116116
}
117117

118118
/**

prompt/prompt-model/src/commonMain/kotlin/ai/koog/prompt/dsl/UserContentBuilder.kt

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ package ai.koog.prompt.dsl
22

33
import ai.koog.prompt.message.MediaContent
44
import ai.koog.prompt.message.Message
5+
import ai.koog.prompt.message.RequestMetaInfo
56
import ai.koog.prompt.text.TextContentBuilder
7+
import kotlinx.datetime.Clock
68

79
/**
810
* A builder for constructing user messages with support for text and media content.
@@ -11,7 +13,7 @@ import ai.koog.prompt.text.TextContentBuilder
1113
* and document attachments. The builder pattern enables convenient construction of complex
1214
* message content with multiple components.
1315
*/
14-
public class UserContentBuilder {
16+
public class UserContentBuilder(private val clock: Clock = Clock.System) {
1517
/**
1618
* Internal collection to accumulate user messages during the building process.
1719
*
@@ -26,7 +28,7 @@ public class UserContentBuilder {
2628
* @param text The text content to be included in the user message.
2729
*/
2830
public fun text(text: String) {
29-
messages.add(Message.User(text))
31+
messages.add(Message.User(text, metaInfo = RequestMetaInfo.create(clock)))
3032
}
3133

3234
/**
@@ -38,7 +40,7 @@ public class UserContentBuilder {
3840
* @param body A lambda function applied to a [TextContentBuilder] instance for constructing formatted text.
3941
*/
4042
public fun text(body: TextContentBuilder.() -> Unit) {
41-
messages.add(Message.User(TextContentBuilder().apply(body).build()))
43+
text(TextContentBuilder().apply(body).build())
4244
}
4345

4446
/**
@@ -50,7 +52,13 @@ public class UserContentBuilder {
5052
* @param source The path to the local image file or URL of the image.
5153
*/
5254
public fun image(source: String) {
53-
messages.add(Message.User("", mediaContent = MediaContent.Image(source)))
55+
messages.add(
56+
Message.User(
57+
"",
58+
metaInfo = RequestMetaInfo.create(clock),
59+
mediaContent = MediaContent.Image(source)
60+
)
61+
)
5462
}
5563

5664
/**
@@ -63,7 +71,13 @@ public class UserContentBuilder {
6371
* @param format The audio file format (e.g., "mp3", "wav").
6472
*/
6573
public fun audio(data: ByteArray, format: String) {
66-
messages.add(Message.User("", mediaContent = MediaContent.Audio(data = data, format = format)))
74+
messages.add(
75+
Message.User(
76+
"",
77+
metaInfo = RequestMetaInfo.create(clock),
78+
mediaContent = MediaContent.Audio(data = data, format = format)
79+
)
80+
)
6781
}
6882

6983
/**
@@ -75,7 +89,13 @@ public class UserContentBuilder {
7589
* @param source The local file path to the document.
7690
*/
7791
public fun document(source: String) {
78-
messages.add(Message.User("", mediaContent = MediaContent.File(source)))
92+
messages.add(
93+
Message.User(
94+
"",
95+
metaInfo = RequestMetaInfo.create(clock),
96+
mediaContent = MediaContent.File(source)
97+
)
98+
)
7999
}
80100

81101
/**

prompt/prompt-model/src/jvmTest/kotlin/ai/koog/prompt/PromptTest.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,13 @@ class PromptTest {
5959
val basicPrompt = Prompt.build("test", clock = testClock) {
6060
system(systemMessage)
6161
user(userMessage)
62-
message(Message.Assistant(assistantMessage, testRespMetaInfo, finishReason))
62+
message(
63+
Message.Assistant(
64+
content = assistantMessage,
65+
metaInfo = testRespMetaInfo,
66+
finishReason = finishReason
67+
)
68+
)
6369
tool {
6470
call(toolCallId, toolName, toolCallContent)
6571
result(toolCallId, toolName, toolResultContent)
@@ -104,7 +110,7 @@ class PromptTest {
104110
user(userMessage)
105111
assistant(assistantMessage)
106112
tool {
107-
call(toolCallId, toolName, toolContent,)
113+
call(toolCallId, toolName, toolContent)
108114
result(toolCallId, toolName, toolResult)
109115
}
110116
}

0 commit comments

Comments
 (0)