如何为mLLMCelltype注册自定义LLM模型与提供商:扩展细胞类型注释的完整教程
2026/8/25 9:53:24 网站建设 项目流程

如何为mLLMCelltype注册自定义LLM模型与提供商:扩展细胞类型注释的完整教程

【免费下载链接】mLLMCelltypeCell type annotation for single-cell RNA-seq using multi-LLM consensus项目地址: https://gitcode.com/gh_mirrors/ml/mLLMCelltype

mLLMCelltype是一款基于多 LLM 共识(Multi-LLM Consensus)的单细胞 RNA-seq 细胞类型注释工具:它把多个大语言模型的预测结果汇总投票,为 scRNA-seq 数据的每个细胞簇给出更可靠的细胞类型标签。除了内置的 OpenAI、Anthropic、DeepSeek、Gemini 等主流模型外,它还支持注册自定义 LLM 模型与提供商——无论是你自己部署的开源大模型,还是新发布、尚未被内置支持的模型,都可以在几分钟内接入注释流程。本教程将带你从零完成注册。

为什么需要注册自定义模型?

mLLMCelltype 内置了11 个 LLM 提供商,通过模型名前缀自动路由请求,常见前缀如下:

内置提供商可识别的模型名前缀
OpenAIgpt-*o1/o3/o4codex-*
Anthropicclaude-*
DeepSeekdeepseek-*
Geminigemini-*
通义千问qwen*qwq-*
阶跃星辰step-*
智谱glm-*chatglm*
MiniMaxminimax-*
Grokgrok-*
Kimi(月之暗面)kimi-*moonshot-*
OpenRouter名称中含/的任意模型

路由逻辑由 get_provider() 函数实现:它先检查模型名是否已注册为自定义模型,再依次匹配内置前缀。当模型名既不在上表、也未注册时,工具会报出 "Cannot determine provider" 错误——这正是自定义注册最常见的触发场景。

以下三类需求是注册自定义模型的典型动机:

  • 🏠自托管模型:用 vLLM、Ollama 等在本地或内网部署的开源大模型;
  • 🆕新发布模型:命名不符合内置前缀规则,尚未被官方收录;
  • 🏢企业 API 网关:通过统一代理出口调用多家厂商的模型服务。

注册核心机制:两个函数两步走

整个注册流程只依赖两个函数(源码见 custom_model_manager.R):

  1. register_custom_provider(provider_name, process_fn, description = NULL)注册一个自定义提供商,核心是提交一个处理函数process_fn
  2. register_custom_model(model_name, provider_name, model_config = list())在该提供商下注册一个自定义模型,可附带temperaturemax_tokens等配置。

💡三个关键约定,注册前务必了解:

  • process_fn必须接受promptmodelapi_key三个参数(可选再接受model_configbase_url),并返回模型响应文本;
  • 名称会被自动转为小写,且只能包含字母、数字、点号、下划线、连字符;
  • 内置提供商名(如openaiclaude为保留名,不能重复注册。

注册成功后,get_provider()会自动把该模型名的请求路由到你的process_fn,后续注释调用无需任何改动。

三步注册教程

以接入一个OpenAI 兼容端点(如自托管的 vLLM 服务)为例。

第一步:编写模型处理函数

处理函数负责把 prompt 发给你自己的 API 端点,并返回响应文本:

my_process_fn <- function(prompt, model, api_key) { response <- httr::POST( url = "http://localhost:8000/v1/chat/completions", body = list(model = model, messages = list(list(role = "user", content = prompt))), httr::add_headers(Authorization = paste("Bearer", api_key)), encode = "json" ) httr::content(response)$choices[[1]]$message$ }

⚠️ 返回的必须是字符型文本,mLLMCelltype 内置的响应解析器会负责从中提取细胞类型标签,你不需要做任何后处理。

第二步:注册自定义提供商

register_custom_provider( provider_name = "my_llm", process_fn = my_process_fn, description = "My self-hosted LLM service" )

第三步:注册自定义模型

register_custom_model( model_name = "my-local-model", provider_name = "my_llm", model_config = list(temperature = 0.7, max_tokens = 2000) )

直接用于细胞类型注释

注册完成后,自定义模型与内置模型用法完全一致

results <- annotate_cell_types( input = your_markers, tissue_name = "human PBMC", model = "my-local-model", api_key = "your-api-key" )

你同样可以把它放进多模型共识流程中,与gpt-5.5claude-sonnet-4-6等内置模型一起投票,进一步提升注释稳健性。

查看与管理已注册的模型

注册信息保存在当前 R 会话中(重启会话后需重新注册)。用下面两个函数即可随时核查:

list_custom_providers() # 已注册的自定义提供商 list_custom_models() # 已注册的自定义模型

常见问题排查

报错信息原因与解决办法
Provider 'xxx' is reserved for a built-in provider名称与内置提供商冲突,换一个名称即可
process_fn must accept parameters: prompt, model, api_key处理函数缺少必需参数,请补齐三个形参
Provider 'xxx' does not exist模型注册前必须先注册提供商,注意顺序
Model 'xxx' already exists同名模型重复注册,改名为my-local-model-v2之类
自定义模型报does not accept base_url传了base_url但函数未声明该参数,给process_fn加上base_url = NULL形参

另外请注意:自定义注册功能目前由 R 版提供(见 R/vignettes/advanced-features.Rmd 的 "Custom Processing Functions" 一节);Python 版(python/mllmcelltype/config.py)采用固定的提供商配置表,暂不支持动态注册。

小结

为 mLLMCelltype 接入新模型只需三步:写好接受prompt / model / api_key的处理函数 →register_custom_provider()注册提供商 →register_custom_model()注册模型。之后,你的自定义 LLM 就能与内置模型一样参与单细胞细胞类型注释与多模型共识投票,让工具真正适配你的私有算力与最新模型生态。🚀

【免费下载链接】mLLMCelltypeCell type annotation for single-cell RNA-seq using multi-LLM consensus项目地址: https://gitcode.com/gh_mirrors/ml/mLLMCelltype

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询