Skip to content

Commit c6c183b

Browse files
author
LangChain4j
committed
added test for explicit tool wiring
1 parent 1cf87b8 commit c6c183b

File tree

5 files changed

+89
-0
lines changed

5 files changed

+89
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package dev.langchain4j.service.spring.mode.explicit.tools;
2+
3+
import dev.langchain4j.service.spring.AiService;
4+
5+
import static dev.langchain4j.service.spring.AiServiceWiringMode.EXPLICIT;
6+
7+
@AiService(wiringMode = EXPLICIT, chatModel = "openAiChatModel", tools = {"tools1"})
8+
public interface AiServiceWithExplicitTools {
9+
10+
String chat(String userMessage);
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package dev.langchain4j.service.spring.mode.explicit.tools;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
6+
@SpringBootApplication
7+
class AiServiceWithExplicitToolsApplication {
8+
9+
public static void main(String[] args) {
10+
SpringApplication.run(AiServiceWithExplicitToolsApplication.class, args);
11+
}
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package dev.langchain4j.service.spring.mode.explicit.tools;
2+
3+
import dev.langchain4j.service.spring.AiServicesAutoConfig;
4+
import org.junit.jupiter.api.Test;
5+
import org.springframework.boot.autoconfigure.AutoConfigurations;
6+
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
7+
8+
import static dev.langchain4j.service.spring.mode.explicit.tools.Tools1.TOOL_1_TEMPERATURE;
9+
import static dev.langchain4j.service.spring.mode.explicit.tools.Tools2.TOOL_2_TEMPERATURE;
10+
import static org.assertj.core.api.Assertions.assertThat;
11+
12+
class AiServiceWithExplicitToolsIT {
13+
14+
ApplicationContextRunner contextRunner = new ApplicationContextRunner().withConfiguration(AutoConfigurations.of(AiServicesAutoConfig.class));
15+
16+
@Test
17+
void should_create_AI_service_with_explicit_tools() {
18+
contextRunner
19+
.withPropertyValues(
20+
"langchain4j.open-ai.chat-model.api-key=" + System.getenv("OPENAI_API_KEY"),
21+
"langchain4j.open-ai.chat-model.max-tokens=100",
22+
"langchain4j.open-ai.chat-model.temperature=0.0")
23+
.withUserConfiguration(AiServiceWithExplicitToolsApplication.class)
24+
.run(context -> {
25+
26+
// given
27+
AiServiceWithExplicitTools aiService = context.getBean(AiServiceWithExplicitTools.class);
28+
29+
// when
30+
String answer = aiService.chat("What is the temperature?");
31+
32+
// then
33+
assertThat(answer).contains(TOOL_1_TEMPERATURE).doesNotContain(TOOL_2_TEMPERATURE);
34+
});
35+
}
36+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package dev.langchain4j.service.spring.mode.explicit.tools;
2+
3+
import dev.langchain4j.agent.tool.Tool;
4+
import org.springframework.stereotype.Component;
5+
6+
@Component
7+
class Tools1 {
8+
9+
public static final String TOOL_1_TEMPERATURE = "6";
10+
11+
@Tool
12+
String getCurrentTemperature() {
13+
return TOOL_1_TEMPERATURE;
14+
}
15+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package dev.langchain4j.service.spring.mode.explicit.tools;
2+
3+
import dev.langchain4j.agent.tool.Tool;
4+
import org.springframework.stereotype.Component;
5+
6+
@Component
7+
class Tools2 {
8+
9+
public static final String TOOL_2_TEMPERATURE = "9";
10+
11+
@Tool
12+
String getCurrentTemperature() {
13+
return TOOL_2_TEMPERATURE;
14+
}
15+
}

0 commit comments

Comments
 (0)