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

如何通过Jupyter Kernel Gateway将R语言单元暴露为REST API

结论

Jupyter Kernel Gateway 原生支持将R内核(IRkernel)的代码单元格暴露为REST API,你遇到的No endpoints were discovered报错和R语言本身无关,是注解格式、启动配置不符合要求导致的。

常见触发报错的原因
  • 注解格式不符合扫描规则:Kernel Gateway 扫描端点的正则规则要求注解必须以# (#后面跟一个半角空格)开头,后面接HTTP方法和路径。你写的#GET /r/test在#和GET之间没有空格,扫描器会直接把这行当成普通R注释,无法识别为端点注解。
  • 启动参数缺失:启动Kernel Gateway时如果没有显式指定使用notebook_http模式,服务不会去扫描单元格里的API注解。
  • 内核不匹配:如果你的notebook元数据里绑定的不是正确安装的IRkernel,Kernel Gateway加载notebook时无法执行R代码,也会出现端点识别异常。
正确实现步骤
  1. 环境校验
    进入容器后先执行jupyter kernelspec list,确认输出的内核列表里存在ir(R内核)条目,同时确认已经安装了jupyter_kernel_gateway包。
  2. 修正单元格代码
    把API注解调整为标准格式,注意注解必须放在代码单元格的第一行,前面不能有空行、缩进,修正后的单元格示例:
    # GET /r/test
    
    data <- read.csv("/home/jovyan/work/data/heart-failure.csv")
    # 按0.75/0.25拆分训练集测试集
    set.seed(123) # 可选,加随机种子保证拆分结果可复现
    sampled <- sample(1:nrow(data), 0.75 * nrow(data))
    train <- data[sampled, ]
    test <- data[-sampled, ]
    
    # 输出CSV格式结果,直接作为HTTP响应返回
    content <- paste(c(paste(colnames(train), collapse = ","), apply(train, 1, \(x) paste(x, collapse = ","))), collapse = "\n")
    cat(content)
    
    如果需要返回JSON格式,可以加载jsonlite包,最后一行换成jsonlite::toJSON(train)即可,也可以在注解下追加一行# ResponseInfo {"content-type": "application/json"}显式指定响应头。
  3. 用正确参数启动服务
    容器启动时执行Kernel Gateway命令必须带上http模式参数和你的notebook路径,示例:
    jupyter kernelgateway \
      --KernelGatewayApp.api=kernel_gateway.notebook_http \
      --KernelGatewayApp.seed_uri=/home/jovyan/work/你的notebook文件名.ipynb \
      --ip=0.0.0.0 \
      --port=8888
    
    启动成功后,访问http://你的服务地址:8888/r/test就能拿到对应接口的返回结果了。

小提示:如果还是识别不到端点,可以加--KernelGatewayApp.debug=True参数启动服务,看debug日志里的单元格扫描记录,能直接定位是注解格式问题还是内核加载问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:27:34