开发微服务
在了解完 OPEA 的基本信息介绍之后,我们就可以着手开发自己的应用程序了,首先就需要开发一个微服务。
微服务的结构
OPEA 定义了一套微服务的规范,要开发微服务,我们就需要遵守这套规范。
注册微服务
首先,我们需要在代码中显式声明、注册一个微服务,这需要通过 @register_microservice
语句完成,其需要指定的参数有:
- name:指定微服务的名称
- service_type:指定微服务的服务类型
- host:指定微服务使用的主机地址
- port:指定微服务使用的主机端口
- endpoint:指定微服务对外暴露的端点,即对外提供服务的接口
- input_datatype:指定微服务接收用户输入的数据类型
- output_datatype:指定微服务响应返回给用户的数据类型
比如,我们要开发一个语音识别微服务,接收用户的语音输入,并识别出语音信息转换成文本进行输出,那么,我们的微服务就可以这样进行注册:
@register_microservice(
name="opea_service@asr",
service_type=ServiceType.ASR,
host='0.0.0.0',
port=9081,
endpoint="/v1/audio/transcriptions",
input_datatype=Base64ByteStrDoc,
output_datatype=TextDoc,
)
上述案例中,我们注册了一个名叫 opea_service@asr
的微服务,服务类型是 ServiceType.ASR
即语音识别服务,服务监听端口是 9081
,服务对外暴露的接口是 /v1/audio/transcriptions
,服务接收 Base64 编码的 Base64ByteStrDoc
语音数据字符串,在识别完语音信息后将以文本形式 TextDoc
返回给用户。
定义微服务的处理逻辑
我们注册完微服务后,接下来就是需要实现微服务的具体处理逻辑了。根据 OPEA 的规范,我们需要使用 @register_statistics
来声明微服务的处理逻辑方法,并在方法中实现具体的逻辑。
根据我们注册的微服务、以及期望实现的逻辑,我们可以定义具体实现为:
@register_statistics(names=["opea_service@asr"])
async def audio_to_text(audio