操作指南:使用 Java SDK 编写和管理 Dapr Conversation AI
如何使用 Dapr Java SDK 快速上手 Conversation AI
在本次演示中,我们将介绍如何使用 Conversation API 与大语言模型(LLM)进行对话。该 API 会返回给定提示词的 LLM 响应。通过提供的 conversation ai 示例,你将:
- 使用 Conversation AI 示例 提供提示词
- 过滤个人身份信息(PII)。
此示例使用自托管模式下 dapr init 的默认配置。
前置条件
- Dapr CLI 和已初始化的环境。
- Java JDK 11(或更高版本):
- Oracle JDK,或
- OpenJDK
- Apache Maven,版本 3.x。
- Docker Desktop
设置环境
克隆 Java SDK 仓库 并进入该目录。
git clone https://github.com/dapr/java-sdk.git
cd java-sdk
运行以下命令以安装使用 Dapr Java SDK 运行 Conversation AI 示例所需的依赖。
mvn clean install -DskipTests
从 Java SDK 根目录进入示例目录。
cd examples
运行 Dapr 边车。
dapr run --app-id conversationapp --dapr-grpc-port 51439 --dapr-http-port 3500 --app-port 8080
现在,Dapr 正在
http://localhost:3500监听 HTTP 请求,在http://localhost:51439监听 gRPC 请求。
向 Conversation AI API 发送包含个人身份信息(PII)的提示词
在 DemoConversationAI 中,包含使用 DaprPreviewClient 下的 converse 方法发送提示词的步骤。
public class DemoConversationAI {
/**
* 启动客户端的 main 方法。
*
* @param args 输入参数(未使用)。
*/
public static void main(String[] args) {
try (DaprPreviewClient client = new DaprClientBuilder().buildPreviewClient()) {
System.out.println("Sending the following input to LLM: Hello How are you? This is the my number 672-123-4567");
ConversationInput daprConversationInput = new ConversationInput("Hello How are you? "
+ "This is the my number 672-123-4567");
// 组件名称是在 conversation.yaml 文件的 metadata 块中提供的名称。
Mono<ConversationResponse> responseMono = client.converse(new ConversationRequest("echo",
List.of(daprConversationInput))
.setContextId("contextId")
.setScrubPii(true).setTemperature(1.1d));
ConversationResponse response = responseMono.block();
System.out.printf("Conversation output: %s", response.getConversationOutputs().get(0).getResult());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
使用以下命令运行 DemoConversationAI。
java -jar target/dapr-java-sdk-examples-exec.jar io.dapr.examples.conversation.DemoConversationAI
示例输出
== APP == Conversation output: Hello How are you? This is the my number <ISBN>
如输出所示,发送到 API 的号码已被混淆并以 <ISBN> 的形式返回。
上面的示例使用了一个“echo”
组件进行测试,该组件只是简单地返回输入消息。
当与 OpenAI 或 Claude 等 LLM 集成时,你将收到有意义的响应,而不是回显的输入。