第7章. 使用Java访问 推理模型
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
在前一章中,您已学会如何开发并通过推理API暴露生成数据的模型。 该章仅涵盖开发流程的一半:您仅掌握了模型暴露方法,但如何从其他服务调用该模型呢? 现在我们将完成另一半内容——编写调用API的代码。
本章将完善前例,您将创建Java客户端来调用欺诈推理API,以检测给定交易是否存在欺诈嫌疑。同时我们将演示如何为Spring Boot和Quarkus编写客户端,支持REST与gRPC两种调用方式。
使用Quarkus连接推理API
Quarkus 提供了两种实现 REST 客户端的方法:
-
Jakarta REST客户端 是Jakarta EE交互RESTful服务的标准方案。
-
MicroProfile REST客户端 提供基于HTTP调用RESTful服务的类型安全方案,尽可能采用Jakarta RESTful Web服务规范。该REST客户端以Java接口形式定义,通过Jakarta RESTful Web服务注解实现类型安全并提供网络配置。
本节将使用MicroProfile REST客户端开发一个调用欺诈检测模型的Quarkus服务。
架构
让我们使用创建一个Quarkus服务,向上一章开发的欺诈推理API发送请求。该服务包含所有已完成交易的列表,并暴露一个端点用于验证给定交易ID是否可视为欺诈。
图7-1展示了本章将实现的架构。Quarkus服务接收请求以验证指定交易是否存在欺诈行为。 该服务从数据库获取交易信息,并将数据发送至欺诈检测服务进行验证。 最终结果将存储至数据库并返回给调用方.
图 7-1. 架构概览
请牢记推理API返回的文档格式,因为在客户端正确实现该格式至关重要。
欺诈推理API
前一章开发的欺诈推理API采用HTTPPOST 方法,暴露/inference 端点,并以JSON文档作为请求主体和响应内容。
以下是正文内容示例:
{"txId":"5678","distanceFromLastTransaction":0.3111400080477545,"ratioToMedianPrice":1.9459399775518593,"usedChip":true,"usedPinNumber":false,"onlineOrder":false}
响应示例如下:
{"txId":"5678","fraud":true}
现在我们创建一个Quarkus项目来实现消费者部分。
Quarkus项目
首先,生成一个包含REST Jackson和REST Client Jackson依赖的简单Quarkus应用。 可使用Code Quarkus自动生成项目框架,或从零开始创建。
项目基础框架搭建完成后,我们将基于MicroProfile REST客户端规范编写REST客户端。
REST客户端接口
创建 org.acme.FraudDetectionService 接口以交互推理API。在此接口中定义以下信息:
-
使用Jakarta EE注解的连接信息(
@jakarta.ws.rs.Path用于端点, ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access