Skip to content

embabel/kotlin-agent-template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Generated Agent Project

Build

Kotlin Spring Apache Maven ChatGPT


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

Uses Spring Boot 3.5.9 and Embabel 0.3.1.

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 Java equivalent, see our Java 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.kt 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 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.kt 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.llmInvocations
val context = FakeOperationContext.create()
context.expectResponse(Story("Once upon a time..."))

val story = agent.craftStory(userInput, context.ai())

val prompt = context.llmInvocations.first().messages.first().content
assertTrue(prompt.contains("knight"))

Contributors

Embabel contributors

About

Kotlin agent template

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6