统一管理多个 LLM 模型,并实现使用 YAML + Python 动态导入进行模型配置
2026/6/15 17:05:44 网站建设 项目流程

目录

前言

一、为什么需要统一管理模型

模型初始化重复

配置分散

扩展困难

二、企业级模型管理架构

三、为什么选择 YAML

可读性强

支持层级结构

运维友好

四、设计模型配置文件

五、Python 动态导入原理

六、实现模型工厂

七、增加新模型无需改代码

八、实现模型注册中心

九、实现模型路由

十、结合 LangChain 使用

十一、生产环境最佳实践

配置与代码分离

统一模型工厂

统一模型注册中心

支持动态扩展

预留模型路由能力

总结


随着大模型技术的发展,企业项目已经很少只接入单一模型。

例如:

GPT-4o Claude DeepSeek Qwen GLM Gemini

不同模型拥有不同优势:

  • GPT 逻辑推理能力强

  • Claude 长文本能力优秀

  • DeepSeek 成本较低

  • Qwen 本地化支持较好

因此在企业级 AI 项目中,通常需要同时接入多个模型。

很多开发者最初会这样写:

if model_name == "gpt": model = ChatOpenAI(...) elif model_name == "deepseek": model = ChatOpenAI(...) elif model_name == "qwen": model = ChatOpenAI(...)

当模型数量达到:

10个 20个 50个

代码将变得难以维护。

因此我们需要:

模型配置中心(Model Registry)

并结合 YAML + Python 动态导入,实现模型统一管理。


一、为什么需要统一管理模型

假设项目初期只有 GPT。

代码很简单:

llm = ChatOpenAI( model="gpt-4o" )

随着业务发展:

GPT Claude DeepSeek Qwen

架构变成:

此时问题出现:

模型初始化重复

ChatOpenAI(...) ChatOpenAI(...) ChatOpenAI(...)

配置分散

api_key base_url model_name temperature

散落在代码各处。


扩展困难

新增模型:

Gemini

需要修改大量代码。


因此需要统一管理。


二、企业级模型管理架构

成熟系统通常会设计:

Model Registry

模型注册中心。

架构如下:

业务层永远只操作:

registry.get_model()

而不直接操作具体模型。


三、为什么选择 YAML

很多项目会把模型配置写死:

model = ChatOpenAI( model="gpt-4o", api_key="xxx", temperature=0.7 )

这种方式存在明显问题。


当模型增加后:

gpt_config = {} deepseek_config = {} qwen_config = {}

配置会越来越混乱。


更好的方案:

models: gpt4o: provider: openai model: gpt-4o deepseek: provider: deepseek model: deepseek-chat

配置与代码彻底分离。


YAML 的优势:

可读性强

temperature: 0.7 max_tokens: 4096

比 JSON 更容易维护。


支持层级结构

models: gpt: ...

天然适合配置管理。


运维友好

无需修改代码。

直接修改配置文件即可。


四、设计模型配置文件

创建:

config/models.yaml

内容如下:

models: gpt4o: class_path: langchain_openai.ChatOpenAI params: model: gpt-4o temperature: 0.7 api_key: ${OPENAI_API_KEY} deepseek: class_path: langchain_openai.ChatOpenAI params: model: deepseek-chat base_url: https://api.deepseek.com api_key: ${DEEPSEEK_API_KEY} qwen: class_path: langchain_openai.ChatOpenAI params: model: qwen-plus base_url: https://dashscope.aliyuncs.com api_key: ${QWEN_API_KEY}

这里最关键的是:

class_path

后续将通过动态导入加载。


五、Python 动态导入原理

Python 提供:

importlib

动态加载模块。

例如:

import importlib

假设:

path = "langchain_openai.ChatOpenAI"

动态加载:

module_name = "langchain_openai" class_name = "ChatOpenAI"

导入:

module = importlib.import_module( module_name )

获取类:

clazz = getattr( module, class_name )

此时:

clazz

就是:

ChatOpenAI

类对象。


六、实现模型工厂

创建:

model_factory.py

读取 YAML:

import yaml with open( "config/models.yaml", "r", encoding="utf-8" ) as f: config = yaml.safe_load(f)

实现工厂:

import importlib class ModelFactory: def __init__(self, config): self.config = config def get_model( self, model_name ): model_conf = ( self.config["models"] [model_name] ) class_path = ( model_conf["class_path"] ) module_name, class_name = ( class_path.rsplit(".", 1) ) module = ( importlib.import_module( module_name ) ) clazz = getattr( module, class_name ) return clazz( **model_conf["params"] )

使用:

factory = ModelFactory(config) llm = factory.get_model( "gpt4o" )

无需硬编码。


七、增加新模型无需改代码

传统方式:

新增 Claude:

if model == "claude": ...

必须修改代码。


现在:

只需增加配置:

claude: class_path: langchain_anthropic.ChatAnthropic params: model: claude-3-7-sonnet api_key: ${CLAUDE_API_KEY}

即可完成接入。

业务代码完全不用修改。


八、实现模型注册中心

进一步优化。

创建缓存:

class ModelRegistry: def __init__(self): self.models = {} def register( self, name, model ): self.models[name] = model def get( self, name ): return self.models[name]

启动时加载:

registry.register( "gpt4o", factory.get_model( "gpt4o" ) )

业务调用:

llm = registry.get( "gpt4o" )

统一入口。


九、实现模型路由

很多企业希望:

简单问题 ↓ DeepSeek

复杂问题 ↓ GPT

实现:

def route_model(question): if len(question) < 100: return registry.get( "deepseek" ) return registry.get( "gpt4o" )

调用:

llm = route_model(question) response = llm.invoke( question )

这就是模型路由。

也是 LLMOps 的核心能力之一。


十、结合 LangChain 使用

在 LangChain 中:

from langchain_core.prompts import ( ChatPromptTemplate )

定义 Prompt:

prompt = ChatPromptTemplate.from_template( "{question}" )

获取模型:

llm = registry.get( "deepseek" )

构建链:

chain = prompt | llm

调用:

result = chain.invoke( { "question": "介绍一下LangChain" } )

这样业务层完全不知道底层是什么模型。

实现真正解耦。


十一、生产环境最佳实践

经过多个 AI 项目实践后,我总结出以下经验。

配置与代码分离

永远不要:

api_key = "xxx"

写死在代码中。


统一模型工厂

所有模型:

GPT Claude Qwen DeepSeek

统一从工厂创建。


统一模型注册中心

业务层永远:

registry.get()

不要直接实例化模型。


支持动态扩展

新增模型:

增加配置

即可上线。

无需改业务代码。


预留模型路由能力

未来几乎所有 AI 平台都会支持:

模型选择 模型降级 模型负载均衡 模型容灾

因此从一开始就要考虑扩展性。


总结

随着企业 AI 系统不断发展,单模型架构已经逐渐无法满足需求。

成熟的大模型平台通常会采用:

YAML配置中心 + 动态导入 + 模型工厂 + 模型注册中心 + 模型路由

的设计模式。

其核心思想可以概括为:

配置驱动 代替 代码驱动

通过 YAML 管理模型信息,通过 Python 动态导入创建实例,再结合 LangChain 的统一接口,我们能够轻松实现:

多模型管理 动态扩展 统一调用 模型路由 配置热更新

对于 LLMOps 平台、Agent 平台以及企业级 AI 中台而言,这种架构已经逐渐成为主流实践。掌握 YAML + Python 动态导入的设计思路,也将为后续构建更复杂的 AI 系统打下坚实基础。

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

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

立即咨询