Class ScriptedChatModel

java.lang.Object
io.micronaut.langchain4j.test.ScriptedChatModel
All Implemented Interfaces:
dev.langchain4j.model.chat.ChatModel

public final class ScriptedChatModel extends Object implements dev.langchain4j.model.chat.ChatModel
A chat model for tests that answers each request with the first matching rule, and records the requests.
ScriptedChatModel model = ScriptedChatModel.builder()
    .whenToolResult().respond(request -> "It is " + ScriptedChatModel.lastToolResult(request))
    .whenUserMessageContains("weather").callTool("weather", "{\"city\": \"Paris\"}")
    .otherwise("I don't know")
    .build();

streaming() returns a StreamingChatModel with the same rules, which streams the text of the response word by word.

Since:
2.4.0
  • Method Details

    • builder

      public static ScriptedChatModel.Builder builder()
      Returns:
      A builder of the rules of the model
    • respondingWith

      public static ScriptedChatModel respondingWith(String... responses)
      A model that answers the requests with the given responses, in order, and then with the last one.
      Parameters:
      responses - The responses
      Returns:
      The model
    • lastUserMessage

      public static String lastUserMessage(dev.langchain4j.model.chat.request.ChatRequest request)
      Parameters:
      request - A chat request
      Returns:
      The text of the last user message of the request, or an empty string
    • lastToolResult

      public static String lastToolResult(dev.langchain4j.model.chat.request.ChatRequest request)
      Parameters:
      request - A chat request
      Returns:
      The result of the tool execution that ends the request, or an empty string
    • requests

      public List<dev.langchain4j.model.chat.request.ChatRequest> requests()
      Returns:
      The requests received, in order
    • lastRequest

      public dev.langchain4j.model.chat.request.ChatRequest lastRequest()
      Returns:
      The last request received
    • reset

      public void reset()
      Forgets the requests received.
    • doChat

      public dev.langchain4j.model.chat.response.ChatResponse doChat(dev.langchain4j.model.chat.request.ChatRequest request)
      Specified by:
      doChat in interface dev.langchain4j.model.chat.ChatModel
    • streaming

      public dev.langchain4j.model.chat.StreamingChatModel streaming()
      Returns:
      A streaming chat model with the same rules and requests, which streams the text word by word