Skip to content

Commit

Permalink
Updated to 1.0.0-beta1
Browse files Browse the repository at this point in the history
  • Loading branch information
dliubarskyi committed Feb 5, 2025
1 parent 98cf6cc commit f6ba0cc
Show file tree
Hide file tree
Showing 79 changed files with 384 additions and 362 deletions.
6 changes: 3 additions & 3 deletions anthropic-examples/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>dev.langchain4j</groupId>
<artifactId>anthropic-examples</artifactId>
<version>1.0.0-alpha1</version>
<version>1.0.0-beta1</version>

<properties>
<maven.compiler.source>17</maven.compiler.source>
Expand All @@ -19,13 +19,13 @@
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-anthropic</artifactId>
<version>1.0.0-alpha1</version>
<version>1.0.0-beta1</version>
</dependency>

<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
<version>1.0.0-alpha1</version>
<version>1.0.0-beta1</version>
</dependency>

<dependency>
Expand Down
24 changes: 14 additions & 10 deletions anthropic-examples/src/main/java/AnthropicChatModelTest.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
import dev.langchain4j.data.message.*;
import dev.langchain4j.data.message.ImageContent;
import dev.langchain4j.data.message.SystemMessage;
import dev.langchain4j.data.message.TextContent;
import dev.langchain4j.data.message.UserMessage;
import dev.langchain4j.model.anthropic.AnthropicChatModel;
import dev.langchain4j.model.anthropic.AnthropicChatModelName;
import dev.langchain4j.model.anthropic.AnthropicTokenUsage;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.output.Response;
import dev.langchain4j.model.chat.response.ChatResponse;
import org.junit.jupiter.api.Test;

import java.util.Base64;
Expand All @@ -25,7 +28,7 @@ class AnthropicChatModelTest {
@Test
void AnthropicChatModel_Example() {

String answer = model.generate("What is the capital of Germany?");
String answer = model.chat("What is the capital of Germany?");

assertThat(answer).containsIgnoringCase("Berlin");
}
Expand All @@ -34,15 +37,16 @@ void AnthropicChatModel_Example() {
void AnthropicChatModel_with_vision_Example() {

byte[] image = readBytes("https://docs.langchain4j.dev/img/langchain4j-components.png");
String base64EncodedImage = Base64.getEncoder().encodeToString(image);

UserMessage userMessage = UserMessage.from(
TextContent.from("What do you see?"),
ImageContent.from(Base64.getEncoder().encodeToString(image), "image/png")
ImageContent.from(base64EncodedImage, "image/png")
);

Response<AiMessage> response = model.generate(userMessage);
ChatResponse chatResponse = model.chat(userMessage);

assertThat(response.content().text()).containsIgnoringCase("RAG");
assertThat(chatResponse.aiMessage().text()).containsIgnoringCase("RAG");
}

@Test
Expand All @@ -62,14 +66,14 @@ void AnthropicChatModel_with_cache_system_message_Example() {
// create cache
SystemMessage systemMessage = SystemMessage.from("What types of messages are supported in LangChain?".repeat(187));
UserMessage userMessage = UserMessage.userMessage("what result it calcule 5x2 + 2x + 2 = 0?");
Response<AiMessage> response = modelWithCache.generate(systemMessage, userMessage);
ChatResponse response = modelWithCache.chat(systemMessage, userMessage);

AnthropicTokenUsage createCacheTokenUsage = (AnthropicTokenUsage) response.tokenUsage();
AnthropicTokenUsage createCacheTokenUsage = (AnthropicTokenUsage) response.metadata().tokenUsage();
assertThat(createCacheTokenUsage.cacheCreationInputTokens()).isGreaterThan(0);

// read cache created
Response<AiMessage> responseToReadCache = modelWithCache.generate(systemMessage, userMessage);
AnthropicTokenUsage readCacheTokenUsage = (AnthropicTokenUsage) responseToReadCache.tokenUsage();
ChatResponse responseToReadCache = modelWithCache.chat(systemMessage, userMessage);
AnthropicTokenUsage readCacheTokenUsage = (AnthropicTokenUsage) responseToReadCache.metadata().tokenUsage();
assertThat(readCacheTokenUsage.cacheReadInputTokens()).isGreaterThan(0);
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import dev.langchain4j.data.message.AiMessage;
import dev.langchain4j.model.StreamingResponseHandler;
import dev.langchain4j.model.anthropic.AnthropicStreamingChatModel;
import dev.langchain4j.model.chat.StreamingChatLanguageModel;
import dev.langchain4j.model.output.Response;
import dev.langchain4j.model.chat.response.ChatResponse;
import dev.langchain4j.model.chat.response.StreamingChatResponseHandler;
import org.junit.jupiter.api.Test;

import java.util.concurrent.CompletableFuture;
Expand All @@ -23,19 +22,19 @@ class AnthropicStreamingChatModelTest {
@Test
void AnthropicChatModel_Example() throws ExecutionException, InterruptedException {

CompletableFuture<AiMessage> future = new CompletableFuture<>();
CompletableFuture<ChatResponse> future = new CompletableFuture<>();

model.generate("What is the capital of Germany?", new StreamingResponseHandler<AiMessage>() {
model.chat("What is the capital of Germany?", new StreamingChatResponseHandler() {

@Override
public void onNext(String token) {
System.out.println("New token: '" + token + "'");
public void onPartialResponse(String partialResponse) {
System.out.println("New token: '" + partialResponse + "'");
}

@Override
public void onComplete(Response<AiMessage> response) {
System.out.println("Streaming completed: " + response);
future.complete(response.content());
public void onCompleteResponse(ChatResponse completeResponse) {
System.out.println("Streaming completed: " + completeResponse);
future.complete(completeResponse);
}

@Override
Expand All @@ -44,6 +43,6 @@ public void onError(Throwable error) {
}
});

assertThat(future.get().text()).containsIgnoringCase("Berlin");
assertThat(future.get().aiMessage().text()).containsIgnoringCase("Berlin");
}
}
8 changes: 4 additions & 4 deletions azure-open-ai-customer-support-agent-example/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

<groupId>dev.langchain4j</groupId>
<artifactId>azure-open-ai-customer-support-agent-example</artifactId>
<version>1.0.0-alpha1</version>
<version>1.0.0-beta1</version>

<properties>
<java.version>17</java.version>
Expand All @@ -23,19 +23,19 @@
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-spring-boot-starter</artifactId>
<version>1.0.0-alpha1</version>
<version>1.0.0-beta1</version>
</dependency>

<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-azure-open-ai-spring-boot-starter</artifactId>
<version>1.0.0-alpha1</version>
<version>1.0.0-beta1</version>
</dependency>

<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-embeddings-all-minilm-l6-v2</artifactId>
<version>1.0.0-alpha1</version>
<version>1.0.0-beta1</version>
</dependency>

<dependency>
Expand Down
6 changes: 3 additions & 3 deletions azure-open-ai-examples/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>dev.langchain4j</groupId>
<artifactId>azure-open-ai-examples</artifactId>
<version>1.0.0-alpha1</version>
<version>1.0.0-beta1</version>

<properties>
<maven.compiler.source>17</maven.compiler.source>
Expand All @@ -19,13 +19,13 @@
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-azure-open-ai</artifactId>
<version>1.0.0-alpha1</version>
<version>1.0.0-beta1</version>
</dependency>

<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
<version>1.0.0-alpha1</version>
<version>1.0.0-beta1</version>
</dependency>

<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public static void main(String[] args) {
.logRequestsAndResponses(true)
.build();

String response = model.generate("Provide 3 short bullet points explaining why Java is awesome");
String response = model.chat("Provide 3 short bullet points explaining why Java is awesome");

System.out.println(response);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,22 @@
import dev.langchain4j.agent.tool.P;
import dev.langchain4j.agent.tool.Tool;
import dev.langchain4j.agent.tool.ToolExecutionRequest;
import dev.langchain4j.agent.tool.ToolSpecification;
import dev.langchain4j.agent.tool.ToolSpecifications;
import dev.langchain4j.agent.tool.*;
import dev.langchain4j.data.message.AiMessage;
import dev.langchain4j.data.message.ChatMessage;
import dev.langchain4j.data.message.ToolExecutionResultMessage;
import dev.langchain4j.data.message.UserMessage;
import dev.langchain4j.service.tool.DefaultToolExecutor;
import dev.langchain4j.service.tool.ToolExecutor;
import static dev.langchain4j.data.message.UserMessage.userMessage;
import dev.langchain4j.model.azure.AzureOpenAiChatModel;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.chat.request.ChatRequest;
import dev.langchain4j.model.chat.request.ChatRequestParameters;
import dev.langchain4j.service.tool.DefaultToolExecutor;
import dev.langchain4j.service.tool.ToolExecutor;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

import static dev.langchain4j.data.message.UserMessage.userMessage;


public class AzureOpenAiFunctionCallingExamples {

Expand All @@ -42,7 +41,7 @@ static class Weather_From_Manual_Configuration {
.logRequestsAndResponses(true)
.build();

public static void main(String[] args) throws Exception {
public static void main(String[] args) {

// STEP 1: User specify tools and query
// Tools
Expand All @@ -54,8 +53,14 @@ public static void main(String[] args) throws Exception {
chatMessages.add(userMessage);


// STEP 2: Model generate function arguments
AiMessage aiMessage = azureOpenAiModel.generate(chatMessages, toolSpecifications).content();
// STEP 2: Model generates function arguments
ChatRequest chatRequest = ChatRequest.builder()
.messages(chatMessages)
.parameters(ChatRequestParameters.builder()
.toolSpecifications(toolSpecifications)
.build())
.build();
AiMessage aiMessage = azureOpenAiModel.chat(chatRequest).aiMessage();
List<ToolExecutionRequest> toolExecutionRequests = aiMessage.toolExecutionRequests();
System.out.println("Out of the " + toolSpecifications.size() + " functions declared in WeatherTools, " + toolExecutionRequests.size() + " will be invoked:");
toolExecutionRequests.forEach(toolExecutionRequest -> {
Expand All @@ -76,7 +81,7 @@ public static void main(String[] args) throws Exception {


// STEP 4: Model generate final response
AiMessage finalResponse = azureOpenAiModel.generate(chatMessages).content();
AiMessage finalResponse = azureOpenAiModel.chat(chatMessages).aiMessage();
System.out.println(finalResponse.text()); //According to the payment data, the payment status of transaction T1005 is Pending.
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public static void main(String[] args) {
.logRequestsAndResponses(true)
.build();

String response = model.generate("Provide 3 short bullet points explaining why Java is awesome");
String response = model.chat("Provide 3 short bullet points explaining why Java is awesome");

System.out.println(response);
}
Expand All @@ -46,7 +46,7 @@ public static void main(String[] args) {
.logRequestsAndResponses(true)
.build();

String response = model.generate("Provide 3 short bullet points explaining why Java is awesome");
String response = model.chat("Provide 3 short bullet points explaining why Java is awesome");

System.out.println(response);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import dev.langchain4j.data.message.AiMessage;
import dev.langchain4j.model.StreamingResponseHandler;
import dev.langchain4j.model.azure.AzureOpenAiStreamingChatModel;
import dev.langchain4j.model.output.Response;
import dev.langchain4j.model.chat.response.ChatResponse;
import dev.langchain4j.model.chat.response.StreamingChatResponseHandler;

import java.util.concurrent.CompletableFuture;

Expand All @@ -21,17 +20,18 @@ public static void main(String[] args) {

String userMessage = "Write a 100-word poem about Java and AI";

CompletableFuture<Response<AiMessage>> futureResponse = new CompletableFuture<>();
model.generate(userMessage, new StreamingResponseHandler<AiMessage>() {
CompletableFuture<ChatResponse> futureResponse = new CompletableFuture<>();

model.chat(userMessage, new StreamingChatResponseHandler() {

@Override
public void onNext(String token) {
System.out.print(token);
public void onPartialResponse(String partialResponse) {
System.out.print(partialResponse);
}

@Override
public void onComplete(Response<AiMessage> response) {
futureResponse.complete(response);
public void onCompleteResponse(ChatResponse completeResponse) {
futureResponse.complete(completeResponse);
}

@Override
Expand Down
6 changes: 3 additions & 3 deletions bedrock-examples/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>dev.langchain4j</groupId>
<artifactId>bedrock-examples</artifactId>
<version>1.0.0-alpha1</version>
<version>1.0.0-beta1</version>

<properties>
<maven.compiler.source>17</maven.compiler.source>
Expand All @@ -19,13 +19,13 @@
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-bedrock</artifactId>
<version>1.0.0-alpha1</version>
<version>1.0.0-beta1</version>
</dependency>

<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
<version>1.0.0-alpha1</version>
<version>1.0.0-beta1</version>
</dependency>

<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public static void main(String[] args) {
// Other parameters can be set as well
.build();

String joke = model.generate("Tell me a joke about Java");
String joke = model.chat("Tell me a joke about Java");

System.out.println(joke);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import dev.langchain4j.data.message.AiMessage;
import dev.langchain4j.model.StreamingResponseHandler;
import dev.langchain4j.model.bedrock.BedrockAnthropicMessageChatModel;
import dev.langchain4j.model.bedrock.BedrockAnthropicStreamingChatModel;
import dev.langchain4j.model.chat.StreamingChatLanguageModel;
import dev.langchain4j.model.output.Response;
import dev.langchain4j.model.chat.response.ChatResponse;
import dev.langchain4j.model.chat.response.StreamingChatResponseHandler;
import software.amazon.awssdk.regions.Region;

public class BedrockStreamingChatModelExample {
Expand All @@ -14,8 +13,7 @@ public static void main(String[] args) {
// AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
// More info on creating the API keys:
// https://docs.aws.amazon.com/bedrock/latest/userguide/api-setup.html
StreamingChatLanguageModel model = BedrockAnthropicStreamingChatModel
.builder()
StreamingChatLanguageModel model = BedrockAnthropicStreamingChatModel.builder()
.temperature(0.50f)
.maxTokens(300)
.region(Region.US_EAST_1)
Expand All @@ -24,16 +22,16 @@ public static void main(String[] args) {
// Other parameters can be set as well
.build();

model.generate("Write a poem about Java", new StreamingResponseHandler<AiMessage>() {
model.chat("Write a poem about Java", new StreamingChatResponseHandler() {

@Override
public void onNext(String token) {
System.out.println("onNext(): " + token);
public void onPartialResponse(String partialResponse) {
System.out.println("onPartialResponse(): " + partialResponse);
}

@Override
public void onComplete(Response<AiMessage> response) {
System.out.println("onComplete(): " + response);
public void onCompleteResponse(ChatResponse completeResponse) {
System.out.println("onCompleteResponse(): " + completeResponse);
}

@Override
Expand Down
Loading

0 comments on commit f6ba0cc

Please sign in to comment.