Skip to content

Releases: spring-ai-community/spring-ai-typesafe

v0.4.0

Choose a tag to compare

@tzolov tzolov released this 03 Oct 17:51

What's Changed

  • Add a Spring Boot example and a docs page for Ollama's System One API by @tzolov in #20
  • Add a Testing with JevJudge section to the JevJudge docs by @tzolov in #23
  • Don't pad JevToolIndex results with tools Jev gave no probability by @tzolov in #25
  • Prepare the 0.4.0 release by @tzolov in #26

Full Changelog: v0.3.0...v0.4.0

v0.3.0

Choose a tag to compare

@tzolov tzolov released this 30 Sep 09:20

Spring AI TypeSafe 0.3.0

Requests now go out in the same order on every run, retries and RAG screening no longer fail silently, and the SDK runs against a local, open-source System One server. A few fixes change behaviour; see
Upgrading below.

<dependency>
    <groupId>org.springaicommunity</groupId>
    <artifactId>spring-ai-starter-typesafe</artifactId>
    <version>0.3.0</version>
</dependency>

Highlights

  • Deterministic requests. JevToolIndex, the RAG post-processors and JevChatModel built their state and instructions with Map.of, whose order changes with every JVM run, so identical code could get
    different answers. They now send a fixed order, and tools go out in the order they were indexed. Thanks to @jidechao for tracking this down in #11.
  • JsonContent.object(key, value, …). An ordered, one-line alternative to Map.of for your own state, structured instructions and criteria descriptions.
  • Run locally with Laya. Its laya-serve speaks the same POST /v1/systemone protocol, so the client works against it unchanged. The new Using
    Laya
    page covers setup, the protocol differences, and how its answers compare with Jev's. It is a stand-in for offline development,
    not a replacement.
  • Failures you can see.
    • The client warns when its timeout is at or above the retry budget, which meant nothing was ever retried.
    • JevDocumentFilter logs when passages could not be screened and were passed through.
    • JevDocumentReranker no longer fails the request on a response without the answer.

Upgrading from 0.2.0

Most applications need no code changes. Check these:

Change What to do
Fixed key order. Answers can shift slightly against 0.2.0. Re-check thresholds tuned on exact values. Build your own state with JsonContent.object.
Choice, Score and SystemOneRequest copy their collections, and their accessors are unmodifiable. Don't change a collection after passing it in; build a new question or request.
whenChosen follows the probability. A branch needs at least half of the choice's probability, and at least minConfidence, on its labels. Expect more NOT_APPLICABLE dependents on closely split
choices.
A guardrail refusal is final. JevSelfRefineAdvisor no longer judges or retries it. Nothing, unless you set a custom skipEvaluationPredicate; then add the JevGuardrailAdvisor.OUTCOME_CONTEXT_KEY
check.
JevToolIndex honours minimumRelevance. When no tool reaches it, none is returned. Lower it if you relied on always getting a tool.
An undeclared timeout is unknown, not 10 s, when you supply your own transport. Declare it with timeout(...).

Full details and migrations: Changes.

What's Changed

  • Defensively copy request collections by @xujiantop-crypto in #10
  • Let the live ITs follow TYPESAFE_BASE_URL and document using Laya by @tzolov in #9
  • Send request state, instructions and tools in a fixed order by @tzolov in #13
  • Point readers to Laya where they choose a backend or meet its differences by @tzolov in #14
  • Stop the retry budget from silently disabling retries by @tzolov in #15
  • Honour minimumRelevance and ignore a category that matches no tool by @tzolov in #17
  • Follow the probability on whenChosen and keep guardrail refusals final by @tzolov in #18
  • Make RAG screening failures visible and tolerate partial rerank responses by @tzolov in #16
  • Add the 0.3.0 changes and correct docs that contradicted the code by @tzolov in #19

New Contributors

Full Changelog: v0.2.0...v0.3.0

v0.2.0

Choose a tag to compare

@tzolov tzolov released this 23 Sep 13:05

What's Changed

  • Model-as-a-judge 0.2.0: code criteria, typed input, conditional criteria, self-refine fixes by @tzolov in #5
  • Experimental: JevChatModel, a Jev classifier behind Spring AI's ChatModel by @tzolov in #8
  • question: require instructions on Choice and Score builders by @Ashfaqbs in #2

New Contributors

Full Changelog: v0.1.0...v0.2.0

v0.1.0

Choose a tag to compare

@tzolov tzolov released this 20 Sep 14:20