ToolLoopLlmOperations

open class ToolLoopLlmOperations(modelProvider: ModelProvider, toolDecorator: ToolDecorator, validator: <Error class: unknown class>, validationPromptGenerator: ValidationPromptGenerator = DefaultValidationPromptGenerator(), dataBindingProperties: LlmDataBindingProperties = LlmDataBindingProperties(), autoLlmSelectionCriteriaResolver: AutoLlmSelectionCriteriaResolver = AutoLlmSelectionCriteriaResolver.DEFAULT, promptsProperties: LlmOperationsPromptsProperties = LlmOperationsPromptsProperties(), objectMapper: <Error class: unknown class> = jacksonObjectMapper().registerModule(JavaTimeModule()), observationRegistry: <Error class: unknown class> = ObservationRegistry.NOOP) : AbstractLlmOperations

LlmOperations implementation that uses Embabel's framework-agnostic tool loop.

This class provides the core tool loop orchestration logic without depending on any specific LLM framework (Spring AI, LangChain4j, etc.). Subclasses provide the framework-specific implementations for message sending and output conversion.

Parameters

modelProvider

ModelProvider to get the LLM model

toolDecorator

ToolDecorator to decorate tools

validator

Validator for bean validation

validationPromptGenerator

Generator for validation prompts

dataBindingProperties

Properties for data binding configuration

autoLlmSelectionCriteriaResolver

Resolver for auto LLM selection

promptsProperties

Properties for prompt configuration

objectMapper

ObjectMapper for JSON serialization

observationRegistry

Registry for distributed tracing observations

Constructors

Link copied to clipboard
constructor(modelProvider: ModelProvider, toolDecorator: ToolDecorator, validator: <Error class: unknown class>, validationPromptGenerator: ValidationPromptGenerator = DefaultValidationPromptGenerator(), dataBindingProperties: LlmDataBindingProperties = LlmDataBindingProperties(), autoLlmSelectionCriteriaResolver: AutoLlmSelectionCriteriaResolver = AutoLlmSelectionCriteriaResolver.DEFAULT, promptsProperties: LlmOperationsPromptsProperties = LlmOperationsPromptsProperties(), objectMapper: <Error class: unknown class> = jacksonObjectMapper().registerModule(JavaTimeModule()), observationRegistry: <Error class: unknown class> = ObservationRegistry.NOOP)

Functions

Link copied to clipboard
override fun <O> createObject(messages: List<Message>, interaction: LlmInteraction, outputClass: Class<O>, agentProcess: AgentProcess, action: Action?): O

Create an output object, in the context of an AgentProcess.

Link copied to clipboard
override fun <O> createObjectIfPossible(messages: List<Message>, interaction: LlmInteraction, outputClass: Class<O>, agentProcess: AgentProcess, action: Action?): <Error class: unknown class><O>

Try to create an output object in the context of an AgentProcess. Return a failure result if the LLM does not have enough information to create the object.

Link copied to clipboard
open fun <O> doTransform(prompt: String, interaction: LlmInteraction, outputClass: Class<O>, llmRequestEvent: LlmRequestEvent<O>?): O

Low level transform, not necessarily aware of platform This is a convenience overload that creates a UserMessage from a String prompt

open override fun <O> doTransform(messages: List<Message>, interaction: LlmInteraction, outputClass: Class<O>, llmRequestEvent: LlmRequestEvent<O>?): O

Low level transform, not necessarily aware of platform

Link copied to clipboard
open fun generate(prompt: String, interaction: LlmInteraction, agentProcess: AgentProcess, action: Action?): String

Generate text in the context of an AgentProcess.