langchain4j怎么使用多个tool
时间: 2025-06-01 08:01:40 浏览: 8
### 如何在 LangChain4j 中使用多个工具
在 LangChain4j 中,可以将多个工具组合在一起以实现更复杂的任务。通过定义多个 `@Tool` 方法,并将它们注册到 Agent 中,Agent 可以根据输入动态选择合适的工具进行调用[^1]。以下是一个完整的实现方法和示例代码。
#### 1. 定义多个工具
每个工具都需要使用 `@Tool` 注解进行标记。这些工具可以执行不同的功能,例如查询数据库、生成文本或处理文件等。
```java
import com.langchain4j.agent.tool.Tool;
import com.langchain4j.agent.tool.ToolMemoryId;
public class MultiToolExample {
@Tool
public String searchDatabase(String query) {
return "Database result for: " + query; // 模拟数据库查询
}
@Tool
public String generateText(String prompt) {
return "Generated text based on: " + prompt; // 模拟文本生成
}
@Tool
public String processFile(String fileName) {
return "Processed file: " + fileName; // 模拟文件处理
}
}
```
#### 2. 注册工具到 Agent
通过创建一个包含所有工具的类实例,并将其传递给 Agent 的构建器,可以将多个工具注册到同一个 Agent 中。
```java
import com.langchain4j.agent.Agent;
import com.langchain4j.agent.AgentBuilder;
public class AgentSetup {
public static Agent createAgent() {
MultiToolExample tools = new MultiToolExample();
return new AgentBuilder()
.withTools(tools)
.build();
}
}
```
#### 3. 使用工具
当 Agent 接收到用户输入时,它会根据输入内容自动选择合适的工具进行调用。如果需要区分不同用户的上下文,可以使用 `@MemoryId` 和 `@ToolMemoryId` 注解[^1]。
```java
public class MainApplication {
public static void main(String[] args) {
Agent agent = AgentSetup.createAgent();
String userInput = "Please generate a story about a cat.";
String response = agent.call(userInput);
System.out.println("Agent Response: " + response);
userInput = "Search the database for 'LangChain4j'.";
response = agent.call(userInput);
System.out.println("Agent Response: " + response);
userInput = "Process the file 'example.txt'.";
response = agent.call(userInput);
System.out.println("Agent Response: " + response);
}
}
```
#### 4. 工具与模型的集成
为了进一步增强工具的功能,可以结合 LangChain4j 的 Model Context Protocol (MCP),使工具能够与外部 AI 模型高效交互[^3]。例如,可以使用 MCP 将工具的结果传递给语言模型以生成更复杂的输出。
---
### 注意事项
- 确保每个工具的输入和输出格式清晰且一致,以便 Agent 能够正确解析。
- 如果需要管理多个用户的上下文,建议为每个用户分配独立的 `@MemoryId`[^1]。
- 工具的实现应尽量模块化,便于扩展和维护。
---
阅读全文
相关推荐








