11. LangChain实用技巧,轻松切换AI大模型
在 AI 应用开发中,当我们需要集成并调用不同 AI 大模型来实现文本生成、代码补全、语义理解等多样化功能时,为了避免不同模型的配置参数(如 base_url、api_key 等)相互混淆,可通过 config_prefix 进行清晰的命名空间区分。
如果喜欢看视频学习的,可以看这个《11. LangChain实用技巧,轻松切换AI大模型》,喜欢看文章的接着往下看。
这里有一个关键前提需要特别注意:只有在 configurable_fields 中显式指定的参数,才会受 config_prefix 的影响,未指定的参数仍保持原有命名规则。
例如,当设置config_prefix="CODE"时,原本用于指定模型接口地址的参数base_url会自动变成CODE_base_url,从而与其他模型的base_url参数彻底隔离开来。
init_chat_model( model: str | None = None, *, model_provider: str | None = None, configurable_fields: Literal['any'] | list[str] | tuple[str, ...] | None = None, config_prefix: str | None = None, **kwargs: Any = {} ) -> BaseChatModel | _ConfigurableModel

以下为.env 环境配置文件的内容,记得必将其中的 API_KEY 占位值,替换为您自行在对应平台申请的有效API密钥。
QWEN_API_KEY="你的QWEN API KEY" QWEN_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1" QWEN_MODEL="qwen3.6-plus" MINIMAX_API_KEY='你的MiniMax API KEY' MINIMAX_BASE_URL='https://api.minimaxi.com/v1' MINIMAX_MODEL='MiniMax-M2.7'
当使用 LangChain 的init_chat_model初始化聊天模型并需要动态注入不同大模型的配置时,可按照以下步骤操作:首先将配置前缀config_prefix统一设置为"QWEN";接着构建config字典,需特别注意 LangChain 的明确要求:
所有需要在运行时生效的动态参数,必须统一放置在configurable层级下;在该层级内,完成核心参数配置:模型名称对应的键名为QWEN_model,base_url对应的键名为QWEN_base_url,api_key对应的键名为QWEN_api_key。
完成config字典的构建后,将其整体传入模型对象的invoke方法中,即可完成动态参数的注入,让上述配置的所有参数在模型调用时实时生效。对应的完整代码示例如下:
import os from dotenv import load_dotenv from langchain.chat_models import init_chat_model load_dotenv() prefix = "QWEN" llm = init_chat_model( model_provider="openai", configurable_fields=["model", "api_key", "base_url"], config_prefix=prefix, temperature=0.5, max_tokens=200 ) config = { "configurable": { f"{prefix}_model": os.getenv(f"{prefix}_MODEL"), f"{prefix}_api_key": os.getenv(f"{prefix}_API_KEY"), f"{prefix}_base_url": os.getenv(f"{prefix}_BASE_URL") } } response = llm.invoke("请做一个自我介绍", config=config) print(response.content)
接下来,我们将配置前缀及核心参数调整为适配 Minimax 大模型的设置,并用其来生成Python代码示例。
import os from dotenv import load_dotenv from langchain.chat_models import init_chat_model load_dotenv() prefix = "MINIMAX" llm = init_chat_model( model_provider="openai", configurable_fields=["model", "api_key", "base_url"], config_prefix=prefix, temperature=0.5, max_tokens=200 ) config = { "configurable": { f"{prefix}_model": os.getenv(f"{prefix}_MODEL"), f"{prefix}_api_key": os.getenv(f"{prefix}_API_KEY"), f"{prefix}_base_url": os.getenv(f"{prefix}_BASE_URL") } } response = llm.invoke("生成Python打印Hello World的代码", config=config) print(response.content)

浙公网安备 33010602011771号