package com.zy.ai.gateway.adapter.openai;
|
|
import com.zy.ai.entity.ChatCompletionRequest;
|
import com.zy.ai.entity.ChatCompletionResponse;
|
import com.zy.ai.gateway.model.AiMessage;
|
import com.zy.ai.gateway.model.AiRequest;
|
import com.zy.ai.gateway.model.AiResponse;
|
import org.junit.jupiter.api.Test;
|
|
import java.util.List;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
class OpenAiChatCompletionsMapperTest {
|
|
private final OpenAiChatCompletionsMapper mapper = new OpenAiChatCompletionsMapper();
|
|
@Test
|
void toChatRequestMapsMessagesAndOptions() {
|
AiMessage message = new AiMessage();
|
message.setRole("user");
|
message.setContent("hello");
|
|
AiRequest request = new AiRequest();
|
request.setModel("gpt-test");
|
request.setMessages(List.of(message));
|
request.setTemperature(0.2);
|
request.setMaxTokens(128);
|
request.setStream(false);
|
|
ChatCompletionRequest result = mapper.toChatRequest(request);
|
|
assertEquals("gpt-test", result.getModel());
|
assertEquals(0.2, result.getTemperature());
|
assertEquals(128, result.getMax_tokens());
|
assertEquals(false, result.getStream());
|
assertEquals("user", result.getMessages().get(0).getRole());
|
assertEquals("hello", result.getMessages().get(0).getContent());
|
}
|
|
@Test
|
void toAiResponseMapsTextAndUsage() {
|
ChatCompletionRequest.Message message = new ChatCompletionRequest.Message();
|
message.setRole("assistant");
|
message.setContent("answer");
|
|
ChatCompletionResponse.Choice choice = new ChatCompletionResponse.Choice();
|
choice.setIndex(0);
|
choice.setMessage(message);
|
|
ChatCompletionResponse.Usage usage = new ChatCompletionResponse.Usage();
|
usage.setPromptTokens(3);
|
usage.setCompletionTokens(4);
|
usage.setTotalTokens(7);
|
|
ChatCompletionResponse response = new ChatCompletionResponse();
|
response.setId("chatcmpl_test");
|
response.setChoices(List.of(choice));
|
response.setUsage(usage);
|
|
AiResponse result = mapper.toAiResponse(response);
|
|
assertEquals("chatcmpl_test", result.getId());
|
assertEquals("answer", result.getText());
|
assertEquals(3, result.getUsage().getInputTokens());
|
assertEquals(4, result.getUsage().getOutputTokens());
|
assertEquals(7, result.getUsage().getTotalTokens());
|
}
|
|
@Test
|
void toChatResponsePreservesToolCallsWithoutText() {
|
ChatCompletionRequest.Function function = new ChatCompletionRequest.Function();
|
function.setName("lookup");
|
function.setArguments("{}");
|
|
ChatCompletionRequest.ToolCall toolCall = new ChatCompletionRequest.ToolCall();
|
toolCall.setId("call_1");
|
toolCall.setType("function");
|
toolCall.setFunction(function);
|
|
ChatCompletionRequest.Message message = new ChatCompletionRequest.Message();
|
message.setRole("assistant");
|
message.setTool_calls(List.of(toolCall));
|
|
ChatCompletionResponse.Choice choice = new ChatCompletionResponse.Choice();
|
choice.setIndex(0);
|
choice.setMessage(message);
|
|
ChatCompletionResponse chatResponse = new ChatCompletionResponse();
|
chatResponse.setChoices(List.of(choice));
|
|
AiResponse aiResponse = mapper.toAiResponse(chatResponse);
|
ChatCompletionResponse result = mapper.toChatResponse(aiResponse);
|
|
ChatCompletionRequest.Message resultMessage = result.getChoices().get(0).getMessage();
|
assertEquals("assistant", resultMessage.getRole());
|
assertEquals("call_1", resultMessage.getTool_calls().get(0).getId());
|
assertEquals("lookup", resultMessage.getTool_calls().get(0).getFunction().getName());
|
}
|
}
|