Agent Beans
The Arc Agent Framework has first-class support for Spring Boot applications. Therefore, the Arc Agents DSL can also be used to define Spring Boot beans. This may be a better approach than using Kotlin Scripting if there are any security concerns for production applications or if the application is to be complied to a native image using GraalVM.
The Arc Agent DSL can be directly used in Spring Boot @Configuration and @SpringBootApplication classes.
info
The name of the bean and the name of the Agent may not be the same.
For example,
import io.github.lmos.arc.spring.Agents
import io.github.lmos.arc.spring.Functions
@Configuration
class Configuration {
    
   @Bean
   fun myAgent(agent: Agents) = agent {
     name = "My Agent"
     prompt { "you are a helpful weather agent." }
     tools = listOf("get_weather")
   }
  @Bean
  fun myFunction(function: Functions) = function(
    name = "get_weather",
    description = "Returns real-time weather information for any location",
  ) {
    """
        The weather is good in Berlin. It is 20 degrees celsius.
    """
  }
  
}
Once declared as beans, the Agents can either be injected into other components or
retrieved from the AgentProvider (provided the arc-spring-boot-starter is used).
@Bean
val agentProvider: AgentProvider
agentProvider.getAgentByName("My Agent")