You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C# gRPC客户端调用BentoML服务并生成对应Proto文件?

使用C# gRPC客户端调用BentoML服务的方法

1. 可行性说明

完全可以用C# gRPC客户端调用BentoML服务,BentoML默认会为你的服务自动生成gRPC接口及对应的Proto定义,无需手动编写。

2. 获取服务对应的Proto文件

BentoML启动服务后自带gRPC反射功能,你可以通过以下方式导出Proto文件:

  • 先启动你的BentoML服务:运行bentoml serve iris_classifier:latest(假设你的服务标签为该值),默认会在3000端口同时提供HTTP和gRPC服务。
  • 用grpcurl工具导出Proto:执行以下命令(需先安装grpcurl):
    grpcurl -plaintext localhost:3000 describe > iris_classifier.proto
    
    如果服务使用了单独的gRPC端口,替换成对应端口号即可。
  • 另一种方式:访问服务的Swagger页面(默认地址http://localhost:3000/swagger),在gRPC相关区域能找到完整的Proto定义,直接复制保存即可。

3. 生成C# gRPC客户端代码

拿到Proto文件后,用gRPC工具生成C#代码:

  • 给你的C#项目安装两个NuGet包:Grpc.Tools和Google.Protobuf
  • 将iris_classifier.proto添加到项目中,右键文件设置属性:
    • 生成操作选择Protobuf compiler
    • 输出选择gRPC Stub Classes
  • 也可以用命令行生成(需指定gRPC C#插件路径):
    protoc --csharp_out=. --grpc_out=. --plugin=protoc-gen-grpc=<你的grpc_csharp_plugin路径> iris_classifier.proto
    

4. C#客户端调用示例

生成代码后,参考以下代码调用服务:

using Grpc.Core;
// 替换为Proto文件生成的实际命名空间
using IrisClassifierNamespace;

var channel = new Channel("localhost:3000", ChannelCredentials.Insecure);
var client = new IrisClassifier.IrisClassifierClient(channel);

// 构造符合要求的输入数据,对应NumpyNdarray类型
var inputArray = new NumpyNdarray
{
    Dtype = "float64",
    Shape = { 1, 4 }, // 1条样本,4个特征,和你的模型输入匹配
    Data = Google.Protobuf.ByteString.CopyFrom(
        System.BitConverter.GetBytes(5.1)
        .Concat(System.BitConverter.GetBytes(3.5))
        .Concat(System.BitConverter.GetBytes(1.4))
        .Concat(System.BitConverter.GetBytes(0.2))
        .ToArray()
    )
};

var request = new ClassifyRequest { Input = inputArray };
var response = client.Classify(request);

// 解析输出结果
var outputBytes = response.Output.Data.ToByteArray();
var result = new double[response.Output.Shape[0]];
for (int i = 0; i < result.Length; i++)
{
    result[i] = System.BitConverter.ToDouble(outputBytes, i * 8);
}
Console.WriteLine($"分类结果:{string.Join(", ", result)}");

channel.ShutdownAsync().Wait();

内容的提问来源于stack exchange,提问作者Youngwook Jun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:38:16