Skip to content

Commit bf7d86a

Browse files
committed
Remove sample app changes
1 parent f8ee9d4 commit bf7d86a

File tree

7 files changed

+0
-185
lines changed

7 files changed

+0
-185
lines changed

sample-code/spring-app/pom.xml

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,6 @@
166166
<artifactId>lombok</artifactId>
167167
<scope>provided</scope>
168168
</dependency>
169-
<dependency>
170-
<groupId>com.fasterxml.jackson.core</groupId>
171-
<artifactId>jackson-core</artifactId>
172-
<scope>compile</scope>
173-
</dependency>
174169
<!-- scope "test" -->
175170
<dependency>
176171
<groupId>org.junit.jupiter</groupId>
@@ -186,11 +181,6 @@
186181
<groupId>com.sap.cloud.sdk.cloudplatform</groupId>
187182
<artifactId>cloudplatform-connectivity</artifactId>
188183
</dependency>
189-
<dependency>
190-
<groupId>com.fasterxml.jackson.module</groupId>
191-
<artifactId>jackson-module-jsonSchema</artifactId>
192-
<version>2.18.2</version>
193-
</dependency>
194184
</dependencies>
195185

196186
<build>

sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/OpenAiController.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -131,17 +131,6 @@ Object chatCompletionTools(
131131
return response.getContent();
132132
}
133133

134-
@GetMapping("/chatCompletionToolExecution")
135-
@Nonnull
136-
Object chatCompletionToolExecution(
137-
@Nullable @RequestParam(value = "format", required = false) final String format) {
138-
final var response = service.chatCompletionToolExecution("Dubai", "°C");
139-
if ("json".equals(format)) {
140-
return response;
141-
}
142-
return response.getContent();
143-
}
144-
145134
@GetMapping("/embedding")
146135
@Nonnull
147136
Object embedding() {

sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/services/OpenAiService.java

Lines changed: 0 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,6 @@
55
import static com.sap.ai.sdk.foundationmodels.openai.OpenAiModel.TEXT_EMBEDDING_3_SMALL;
66
import static com.sap.ai.sdk.foundationmodels.openai.model.OpenAiChatCompletionTool.ToolType.FUNCTION;
77

8-
import com.fasterxml.jackson.core.JsonProcessingException;
9-
import com.fasterxml.jackson.core.type.TypeReference;
10-
import com.fasterxml.jackson.databind.JsonMappingException;
11-
import com.fasterxml.jackson.databind.ObjectMapper;
12-
import com.fasterxml.jackson.module.jsonSchema.JsonSchemaGenerator;
138
import com.sap.ai.sdk.core.AiCoreService;
149
import com.sap.ai.sdk.foundationmodels.openai.OpenAiClient;
1510
import com.sap.ai.sdk.foundationmodels.openai.model.OpenAiChatCompletionDelta;
@@ -20,7 +15,6 @@
2015
import com.sap.ai.sdk.foundationmodels.openai.model.OpenAiChatMessage;
2116
import com.sap.ai.sdk.foundationmodels.openai.model.OpenAiEmbeddingOutput;
2217
import com.sap.ai.sdk.foundationmodels.openai.model.OpenAiEmbeddingParameters;
23-
import java.util.ArrayList;
2418
import java.util.List;
2519
import java.util.Map;
2620
import java.util.stream.Stream;
@@ -32,7 +26,6 @@
3226
@Service
3327
@Slf4j
3428
public class OpenAiService {
35-
private static final ObjectMapper JACKSON = new ObjectMapper();
3629

3730
/**
3831
* Chat request to OpenAI
@@ -119,73 +112,6 @@ public OpenAiChatCompletionOutput chatCompletionTools(final int months) {
119112
return OpenAiClient.forModel(GPT_4O_MINI).chatCompletion(request);
120113
}
121114

122-
/**
123-
* Executes a chat completion request to OpenAI with a tool that calculates the weather.
124-
*
125-
* @param location The location to get the weather for.
126-
* @param unit The unit of temperature to use.
127-
* @return The assistant message response.
128-
*/
129-
@Nonnull
130-
public OpenAiChatCompletionOutput chatCompletionToolExecution(
131-
@Nonnull final String location, @Nonnull final String unit) {
132-
133-
final var jsonSchemaGenerator = new JsonSchemaGenerator(JACKSON);
134-
Map<String, Object> schemaMap;
135-
try {
136-
final var schema = jsonSchemaGenerator.generateSchema(WeatherMethod.Request.class);
137-
schemaMap = JACKSON.convertValue(schema, new TypeReference<>() {});
138-
} catch (JsonMappingException e) {
139-
throw new IllegalArgumentException("Could not generate schema for WeatherMethod.Request", e);
140-
}
141-
142-
final var function =
143-
new OpenAiChatCompletionFunction()
144-
.setName("weather")
145-
.setDescription("Get the weather for the given location")
146-
.setParameters(schemaMap);
147-
final var tool = new OpenAiChatCompletionTool().setType(FUNCTION).setFunction(function);
148-
149-
final var messages = new ArrayList<OpenAiChatMessage>();
150-
messages.add(
151-
new OpenAiChatMessage.OpenAiChatUserMessage()
152-
.addText("What's the weather in %s in %s?".formatted(location, unit)));
153-
154-
final var request =
155-
new OpenAiChatCompletionParameters()
156-
.addMessages(messages.toArray(OpenAiChatMessage[]::new))
157-
.setTools(List.of(tool));
158-
159-
final var client = OpenAiClient.forModel(GPT_4O_MINI);
160-
final var initialResponse = client.chatCompletion(request);
161-
162-
final var toolCall = initialResponse.getChoices().get(0).getMessage().getToolCalls().get(0);
163-
String toolResponseJson;
164-
try {
165-
final var weatherRequest =
166-
JACKSON.readValue(toolCall.getFunction().getArguments(), WeatherMethod.Request.class);
167-
final var currentWeather = new WeatherMethod().getCurrentWeather(weatherRequest);
168-
toolResponseJson = JACKSON.writeValueAsString(currentWeather);
169-
} catch (JsonProcessingException e) {
170-
throw new IllegalArgumentException("Error parsing tool call arguments", e);
171-
}
172-
173-
final var assistantMessage = initialResponse.getChoices().get(0).getMessage();
174-
messages.add(assistantMessage);
175-
176-
final var toolMessage =
177-
new OpenAiChatMessage.OpenAiChatToolMessage()
178-
.setToolCallId(toolCall.getId())
179-
.setContent(toolResponseJson);
180-
messages.add(toolMessage);
181-
182-
final var finalRequest =
183-
new OpenAiChatCompletionParameters()
184-
.addMessages(messages.toArray(OpenAiChatMessage[]::new));
185-
186-
return client.chatCompletion(finalRequest);
187-
}
188-
189115
/**
190116
* Get the embedding of a text
191117
*

sample-code/spring-app/src/main/resources/static/index.html

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -578,17 +578,6 @@ <h5 class="mb-1">OpenAI</h5>
578578
</div>
579579
</div>
580580
</li>
581-
<li class="list-group-item">
582-
<div class="info-tooltip">
583-
<button type="submit" formaction="/chatCompletionToolExecution"
584-
class="link-offset-2-hover link-underline link-underline-opacity-0 link-underline-opacity-75-hover endpoint">
585-
<code>/chatCompletionToolExecution</code>
586-
</button>
587-
<div class="tooltip-content">
588-
Chat request to OpenAI with an executed tool call.
589-
</div>
590-
</div>
591-
</li>
592581
<li class="list-group-item">
593582
<div class="info-tooltip">
594583
<button type="submit" formaction="/chatCompletionImage"

sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/OpenAiTest.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,4 @@ void chatCompletionWithResource() {
101101
assertThat(message.getRole()).isEqualTo("assistant");
102102
assertThat(message.getContent()).isNotEmpty();
103103
}
104-
105-
@Test
106-
void chatCompletionToolExecution() {
107-
final var completion = service.chatCompletionToolExecution("Dubai", "°C");
108-
109-
String content = completion.getContent();
110-
111-
assertThat(content).contains("°C");
112-
}
113104
}

sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/OpenAiV2Test.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,4 @@ void chatCompletionWithResource() {
102102
assertThat(completion.getChoice().getMessage().getRole()).isEqualTo(ASSISTANT);
103103
assertThat(completion.getContent()).isNotEmpty();
104104
}
105-
106-
@Test
107-
void chatCompletionToolExecution() {
108-
final var completion = service.chatCompletionToolExecution("Dubai", "°C");
109-
110-
String content = completion.getContent();
111-
112-
assertThat(content).contains("°C");
113-
}
114105
}

sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/services/OpenAiServiceV2.java

Lines changed: 0 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,18 @@
55
import static com.sap.ai.sdk.foundationmodels.openai.OpenAiModel.TEXT_EMBEDDING_3_SMALL;
66
import static com.sap.ai.sdk.foundationmodels.openai.generated.model.ChatCompletionTool.TypeEnum.FUNCTION;
77

8-
import com.fasterxml.jackson.core.JsonProcessingException;
9-
import com.fasterxml.jackson.core.type.TypeReference;
10-
import com.fasterxml.jackson.databind.JsonMappingException;
11-
import com.fasterxml.jackson.databind.ObjectMapper;
12-
import com.fasterxml.jackson.module.jsonSchema.JsonSchemaGenerator;
138
import com.sap.ai.sdk.core.AiCoreService;
149
import com.sap.ai.sdk.foundationmodels.openai.OpenAiChatCompletionDelta;
1510
import com.sap.ai.sdk.foundationmodels.openai.OpenAiChatCompletionRequest;
1611
import com.sap.ai.sdk.foundationmodels.openai.OpenAiChatCompletionResponse;
1712
import com.sap.ai.sdk.foundationmodels.openai.OpenAiClient;
1813
import com.sap.ai.sdk.foundationmodels.openai.OpenAiEmbeddingRequest;
1914
import com.sap.ai.sdk.foundationmodels.openai.OpenAiEmbeddingResponse;
20-
import com.sap.ai.sdk.foundationmodels.openai.OpenAiFunctionCall;
2115
import com.sap.ai.sdk.foundationmodels.openai.OpenAiImageItem;
2216
import com.sap.ai.sdk.foundationmodels.openai.OpenAiMessage;
2317
import com.sap.ai.sdk.foundationmodels.openai.OpenAiToolChoice;
2418
import com.sap.ai.sdk.foundationmodels.openai.generated.model.ChatCompletionTool;
2519
import com.sap.ai.sdk.foundationmodels.openai.generated.model.FunctionObject;
26-
import java.util.ArrayList;
2720
import java.util.List;
2821
import java.util.Map;
2922
import java.util.stream.Stream;
@@ -35,7 +28,6 @@
3528
@Service
3629
@Slf4j
3730
public class OpenAiServiceV2 {
38-
private static final ObjectMapper JACKSON = new ObjectMapper();
3931

4032
/**
4133
* Chat request to OpenAI
@@ -118,59 +110,6 @@ public OpenAiChatCompletionResponse chatCompletionTools(final int months) {
118110
return OpenAiClient.forModel(GPT_4O_MINI).chatCompletion(request);
119111
}
120112

121-
/**
122-
* Executes a chat completion request to OpenAI with a tool that calculates the weather.
123-
*
124-
* @param location The location to get the weather for.
125-
* @param unit The unit of temperature to use.
126-
* @return The assistant message response.
127-
*/
128-
public OpenAiChatCompletionResponse chatCompletionToolExecution(
129-
@Nonnull final String location, @Nonnull final String unit) {
130-
131-
final var jsonSchemaGenerator = new JsonSchemaGenerator(JACKSON);
132-
Map<String, Object> schemaMap;
133-
try {
134-
final var schema = jsonSchemaGenerator.generateSchema(WeatherMethod.Request.class);
135-
schemaMap = JACKSON.convertValue(schema, new TypeReference<>() {});
136-
} catch (JsonMappingException e) {
137-
throw new IllegalArgumentException("Could not generate schema for WeatherMethod.Request", e);
138-
}
139-
140-
final var function =
141-
new FunctionObject()
142-
.name("weather")
143-
.description("Get the weather for the given location")
144-
.parameters(schemaMap);
145-
final var tool = new ChatCompletionTool().type(FUNCTION).function(function);
146-
147-
final var messages = new ArrayList<OpenAiMessage>();
148-
messages.add(OpenAiMessage.user("What's the weather in %s in %s?".formatted(location, unit)));
149-
150-
final var request = new OpenAiChatCompletionRequest(messages).withTools(List.of(tool));
151-
final var response = OpenAiClient.forModel(GPT_4O_MINI).chatCompletion(request);
152-
153-
final var assistantMessage = response.getMessage();
154-
messages.add(assistantMessage);
155-
156-
final var functionCall = (OpenAiFunctionCall) assistantMessage.toolCalls().get(0);
157-
158-
String toolResponseJson;
159-
try {
160-
final var weatherRequest =
161-
JACKSON.readValue(functionCall.getArguments(), WeatherMethod.Request.class);
162-
final var currentWeather = new WeatherMethod().getCurrentWeather(weatherRequest);
163-
toolResponseJson = JACKSON.writeValueAsString(currentWeather);
164-
} catch (JsonProcessingException e) {
165-
throw new IllegalArgumentException("Error parsing tool call arguments", e);
166-
}
167-
168-
final var toolMessage = OpenAiMessage.tool(toolResponseJson, functionCall.getId());
169-
messages.add(toolMessage);
170-
171-
return OpenAiClient.forModel(GPT_4O_MINI).chatCompletion(request.withMessages(messages));
172-
}
173-
174113
/**
175114
* Get the embedding of a text
176115
*

0 commit comments

Comments
 (0)