Spring Boot Integration
The Arc Framework can easily be integrated into any Spring Boot application.
For this purpose, the arc-spring-boot-starter library is provided.
Also check out Spring Boot Init project here: https://github.com/eclipse-lmos/arc-spring-init
Getting Started
Add the following dependencies to your project to get started.
For example, in the build.gradle.kts file.
implementation("org.eclipse.lmos:arc-spring-boot-starter:$arcVersion")
// recommended, but not required
implementation("org.springframework.boot:spring-boot-starter-actuator")
implementation("io.micrometer:micrometer-registry-prometheus")
The arc-spring-boot-starter library will set up the necessary beans and configurations
to run the Arc Agents within the Spring Boot application.
To better understand what Arc Agents components are loaded see Manual Setup.
Agent Scripting
To load Arc Agents defined in script files, add the arc-scripting dependency to your project.
implementation("org.eclipse.lmos:arc-scripting:$arcVersion")
The following properties can be set in the application.yml file
to configure the Arc Agent Scripting.
arc:
  scripts:
    folder: ./agents // the folder to load the scripts from
    hotReload:
      enable: true
      delay: PT1S 
Now any Agent and Agent Functions defined in the ./agents folder will be loaded and run by the Arc Application.
Agents Beans
Agents can also be defined as Spring Beans, see the Spring Beans documentation for more information.
Adding the Azure OpenAI Client
To automatically add an AzureAIClient instance in your Spring Container,
simply add the arc-azure-client dependency to your project.
    implementation("org.eclipse.lmos:arc-azure-client:$arcVersion")
You may also want to add the Azure Identity library if you require a different authentication than an API-Key. See https://learn.microsoft.com/en-us/azure/developer/java/sdk/authentication/overview
implementation("com.azure:azure-identity:1.13.1")
Then configure the client in the application.yml file:
arc:
  ai:
    clients:
      # To connect to an OpenAI Model
      - id: GPT-4o
        model-name: gpt-4o
        api-key: ${OPENAI_API_KEY}
        client: openai
        
      # To connect to an Azure OpenAI Model (requires the Azure Identity library and "az login" to be setup)
      - id: GPT-4o-Azure
        model-name: gpt-4o
        url: ${AZURE_OPENAI_URL}
        client: azure      
        
      # To connect to an Azure OpenAI Model with an API Key
      - id: GPT-4o-Azure-ApiKey
        model-name: gpt-4o
        url: ${AZURE_OPENAI_URL}
        api-key: ${AZURE_API_KEY}
        client: azure
Adding LangChain4J Clients
The Arc Framework can also use LangChain4J clients to connect to different language models.
Simply add the langchain4j libraries that are required for your project.
Check LangChain4J for the list of available clients.
For example:
  implementation("dev.langchain4j:langchain4j-bedrock:$langchain4jVersion")
  implementation("dev.langchain4j:langchain4j-google-ai-gemini:$langchain4jVersion") 
  implementation("dev.langchain4j:langchain4j-ollama:$langchain4jVersion")
Then configure the client in the application.yml file. For example:
arc:
  ai:
    clients:
      # Ollama (models running locally)
      - id: llama3:8b
        modelName: llama3:8b
        client: ollama      
      
      # Models hosted on Amazon Bedrock
      - id: anthropic
        url: eu-central-1
        accessKey: $ACCESS_KEY
        accessSecret: $ACCESS_SECRET
        modelName: anthropic.claude-3-5-sonnet-20240620-v1:0
        client: bedrock 
        
      # Gemini 
      - id: gemini
        modelName: gemini-1.5-flash
        url: $GEMINI_URL
        apiKey: $GEMINI_API_KEY
        client: gemini
Interacting with Agents
Once the Arc Agents are running, you can interact with them through the AgentProvider bean.
@Bean
val agentProvider: AgentProvider
agentProvider.getAgents()
Alternatively, you can use the Agent GraphQL API. See the GraphQL API documentation for more information.