GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - embabel/java-agent-template: Java agent template

BranchesTags
Open more actions menu

Latest commit

 

History

117 Commits
117 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
.idea
.idea
 
 
.mvn/wrapper
.mvn/wrapper
 
 
.vscode
.vscode
 
 
docs
docs
 
 
images
images
 
 
scripts
scripts
 
 
src
src
 
 
.gitignore
.gitignore
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
mvnw
mvnw
 
 
mvnw.cmd
mvnw.cmd
 
 
pom.xml
pom.xml
 
 

Repository files navigation

Generated Agent Project

Build

Java Spring Apache Maven ChatGPT


Starting point for your own agent development using the Embabel framework.

Uses Spring Boot 4.x.x.

Add your magic here!

Illustrates:

  • An injected demo showing how any Spring component can be injected with an Embabel Ai instance to enable it to perform LLM operations.
  • A simple agent
  • Unit tests for an agent verifying prompts and hyperparameters

For the Kotlin equivalent, see our Kotlin agent template.

Running

Run the shell script to start Embabel under Spring Shell:

./scripts/shell.sh

There is a single example agent, WriteAndReviewAgent. It uses one LLM with a high temperature and creative persona to write a story based on your input, then another LLM with a low temperature and different persona to review the story.

When the Embabel shell comes up, invoke the story agent like this:

x "Tell me a story about...[your topic]"

Try the following other shell commands:

  • demo: Runs the same agent, invoked programmatically, instead of dynamically based on user input. See DemoCommands.java for the implementation.
  • animal: Runs a simple demo using an Embabel injected Ai instance to call an LLM. See InjectedDemo.

Suggested Next Steps

To get a feel for working with Embabel, try the following:

  • Modify the prompts in WriteAndReviewAgent and InjectedDemo.
  • Experiment with different models and hyperparameters by modifying withLlm calls.
  • Integrate your own services, injecting them with Spring. All Embabel @Agent classes are Spring beans.
  • Run the tests with mvn test and modify them to experiment with prompt verification.

To see tool support, check out the more complex Embabel Agent API Examples repository.

Model support

Embabel integrates with any LLM supported by Spring AI.

See LLM integration guide (work in progress).

Also see Spring AI models.

Testing

This repository includes unit tests and integration tests demonstrating how to test Embabel agents.

Running Tests

mvn test

Unit Tests

Unit tests use Embabel's FakeOperationContext and FakePromptRunner to test agent actions in isolation without calling actual LLMs.

See WriteAndReviewAgentTest.java for examples of:

  • Creating a fake context with FakeOperationContext.create()
  • Setting up expected responses with context.expectResponse()
  • Verifying prompt content contains expected values
  • Inspecting LLM invocations via promptRunner.getLlmInvocations()
var context = FakeOperationContext.create();
context.expectResponse(new Story("Once upon a time..."));

var story = agent.craftStory(userInput, context.ai());

var prompt = context.getLlmInvocations().getFirst().getMessages().getFirst().getContent();
assertTrue(prompt.contains("knight"));

Integration Tests

Integration tests extend EmbabelMockitoIntegrationTest to test complete agent workflows under Spring Boot with a fully configured AgentPlatform.

See WriteAndReviewAgentIntegrationTest.java for examples of:

  • Mocking LLM responses with whenCreateObject() and whenGenerateText()
  • Running complete agent workflows via AgentInvocation
  • Verifying LLM calls and hyperparameters with verifyCreateObjectMatching() and verifyGenerateTextMatching()
whenCreateObject(prompt -> prompt.contains("Craft a short story"), Story.class)
    .thenReturn(new Story("AI will transform our world..."));

var invocation = AgentInvocation.create(agentPlatform, ReviewedStory.class);
var result = invocation.invoke(input);

verifyCreateObjectMatching(
    prompt -> prompt.contains("Craft a short story"),
    Story.class,
    llm -> llm.getLlm().getTemperature() == 0.7
);

Contributors

Embabel contributors

About

Java agent template

Resources

Readme
Apache-2.0 license

Code of conduct

Code of conduct
Activity
Custom properties

Stars

149 stars

Watchers

10 watching

Forks

41 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.