feat(core:inference): add ResponseFormat, ToolDefinition, ToolCallRequest; extend InferenceRequest with tools and responseFormat

This commit is contained in:
2026-05-18 21:38:50 +04:00
parent 325810934a
commit c2267a58a0
7 changed files with 52 additions and 0 deletions
+1
View File
@@ -7,4 +7,5 @@ plugins {
dependencies { dependencies {
implementation(project(":core:events")) implementation(project(":core:events"))
implementation(project(":core:context")) implementation(project(":core:context"))
implementation(project(":core:artifacts"))
} }
@@ -9,6 +9,8 @@ sealed class FinishReason {
@Serializable @Serializable
object Length : FinishReason() object Length : FinishReason()
@Serializable @Serializable
object ToolCall : FinishReason()
@Serializable
object Timeout : FinishReason() object Timeout : FinishReason()
@Serializable @Serializable
object Cancelled : FinishReason() object Cancelled : FinishReason()
@@ -14,4 +14,6 @@ data class InferenceRequest(
val contextPack: ContextPack, val contextPack: ContextPack,
val generationConfig: GenerationConfig, val generationConfig: GenerationConfig,
val timeout: InferenceTimeout? = null, val timeout: InferenceTimeout? = null,
val responseFormat: ResponseFormat = ResponseFormat.Text,
val tools: List<ToolDefinition> = emptyList(),
) )
@@ -10,4 +10,5 @@ data class InferenceResponse(
val finishReason: FinishReason, val finishReason: FinishReason,
val tokensUsed: TokenUsage, val tokensUsed: TokenUsage,
val latencyMs: Long, val latencyMs: Long,
val toolCalls: List<ToolCallRequest> = emptyList(),
) )
@@ -0,0 +1,13 @@
package com.correx.core.inference
import com.correx.core.artifacts.kind.JsonSchema
import kotlinx.serialization.Serializable
@Serializable
sealed interface ResponseFormat {
@Serializable
object Text : ResponseFormat
@Serializable
data class Json(val schema: JsonSchema) : ResponseFormat
}
@@ -0,0 +1,16 @@
package com.correx.core.inference
import kotlinx.serialization.Serializable
@Serializable
data class ToolCallRequest(
val id: String? = null,
val type: String = "function",
val function: ToolCallFunction,
)
@Serializable
data class ToolCallFunction(
val name: String,
val arguments: String,
)
@@ -0,0 +1,17 @@
package com.correx.core.inference
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonObject
@Serializable
data class ToolDefinition(
val type: String = "function",
val function: ToolFunction,
)
@Serializable
data class ToolFunction(
val name: String,
val description: String,
val parameters: JsonObject,
)