diff --git a/agentscope-core/src/main/java/io/agentscope/core/model/exception/OpenAIException.java b/agentscope-core/src/main/java/io/agentscope/core/model/exception/OpenAIException.java index bbf4c3608..31f331678 100644 --- a/agentscope-core/src/main/java/io/agentscope/core/model/exception/OpenAIException.java +++ b/agentscope-core/src/main/java/io/agentscope/core/model/exception/OpenAIException.java @@ -64,7 +64,11 @@ public OpenAIException(String message, int statusCode, String errorCode, String * @return Appropriate exception subclass */ public static OpenAIException create( - int statusCode, String message, String errorCode, String responseBody) { + Integer statusCode, String message, String errorCode, String responseBody) { + if (null == statusCode) { + // When no status code is available, the default is 418 + statusCode = 418; + } return switch (statusCode) { case 400 -> new BadRequestException(message, errorCode, responseBody); case 401 -> new AuthenticationException(message, errorCode, responseBody); diff --git a/agentscope-core/src/main/java/io/agentscope/core/tool/mcp/McpClientBuilder.java b/agentscope-core/src/main/java/io/agentscope/core/tool/mcp/McpClientBuilder.java index 47dd7dcb1..2798721ba 100644 --- a/agentscope-core/src/main/java/io/agentscope/core/tool/mcp/McpClientBuilder.java +++ b/agentscope-core/src/main/java/io/agentscope/core/tool/mcp/McpClientBuilder.java @@ -296,7 +296,9 @@ public Mono buildAsync() { McpSchema.Implementation clientInfo = new McpSchema.Implementation( - "agentscope-java", "AgentScope Java Framework", "1.0.10-SNAPSHOT"); + "agentscope-java", + "AgentScope Java Framework", + "1.0.10-SNAPSHOT"); McpSchema.ClientCapabilities clientCapabilities = McpSchema.ClientCapabilities.builder().build(); diff --git a/agentscope-core/src/test/java/io/agentscope/core/VersionTest.java b/agentscope-core/src/test/java/io/agentscope/core/VersionTest.java index a2a4921dd..67cb43be3 100644 --- a/agentscope-core/src/test/java/io/agentscope/core/VersionTest.java +++ b/agentscope-core/src/test/java/io/agentscope/core/VersionTest.java @@ -30,7 +30,8 @@ void testVersionConstant() { // Verify version constant is set Assertions.assertNotNull(Version.VERSION, "VERSION constant should not be null"); Assertions.assertFalse(Version.VERSION.isEmpty(), "VERSION constant should not be empty"); - Assertions.assertEquals("1.0.10-SNAPSHOT", Version.VERSION, "VERSION should match current version"); + Assertions.assertEquals( + "1.0.10-SNAPSHOT", Version.VERSION, "VERSION should match current version"); } @Test diff --git a/agentscope-core/src/test/java/io/agentscope/core/model/OpenAIClientTest.java b/agentscope-core/src/test/java/io/agentscope/core/model/OpenAIClientTest.java index 123db2566..97b2110d1 100644 --- a/agentscope-core/src/test/java/io/agentscope/core/model/OpenAIClientTest.java +++ b/agentscope-core/src/test/java/io/agentscope/core/model/OpenAIClientTest.java @@ -882,4 +882,35 @@ void testCustomEndpointPathInStreamCall() throws Exception { recordedRequest.getPath().contains("/v4/chat/completions"), "Stream path should contain custom endpoint path: " + recordedRequest.getPath()); } + + @Test + @DisplayName("Should throw OpenAIException when handle custom endpoint path in stream call") + void testThrowOpenAIExceptionWhenCustomEndpointPathInStreamCall() { + String sseResponse = ""; + + mockServer.enqueue( + new MockResponse() + .setBody(sseResponse) + .setResponseCode(301) + .setHeader("Content-Type", "text/event-stream")); + + OpenAIRequest request = + OpenAIRequest.builder() + .model("gpt-4") + .messages( + List.of( + OpenAIMessage.builder() + .role("user") + .content("Hello") + .build())) + .build(); + + // Use custom endpoint path for stream call + GenerateOptions options = + GenerateOptions.builder().endpointPath("/v4/chat/completions").build(); + + assertThrows( + OpenAIException.class, + () -> client.stream(TEST_API_KEY, baseUrl, request, options).collectList().block()); + } }