LangChain中实例化模型的方式

📅 2026/6/19 22:49:32
LangChain中实例化模型的方式
在LangChain中实例化模型主要包括两种方式直接初始化特定提供商的原生类以及使用统一的初始化函数。核心区别在于是想专注于开发用最简洁的API还是需要完全掌控模型的各项底层参数。两种方式如下特性直接初始化init_chat_model()函数核心代码ChatOpenAI(modelgpt-4o, temperature0.7)init_chat_model(openai:gpt-4o, temperature0.7)主要优点直观所用模型和参数一目了然。统一接口切换提供商如从OpenAI换到Anthropic仅需修改模型标识符无需改变实例化代码 。配置方式显式在__init__方法中直接配置。统一通过kwargs传递框架会分发到具体的模型提供商 。灵活性高能使用特定提供商的所有独有参数。中高覆盖大部分通用参数可通过model_kwargs传递专属参数。方式一直接初始化这是最标准、最直接的方式。需要从特定模型提供商的集成包中导入对应的类。这种方式非常直观并且能最大限度地利用特定模型的高级功能因为可以直接在类的构造函数中设置该模型独有的参数 。from langchain_openai import ChatOpenAI from langchain_anthropic import ChatAnthropic from langchain_google_genai import ChatGoogleGenerativeAI # 1. 实例化 OpenAI 模型 openai_model ChatOpenAI( modelgpt-4o, temperature0.7, max_tokens1000, timeout60, ) # 2. 实例化 Anthropic 模型 anthropic_model ChatAnthropic( modelclaude-3-5-sonnet-20240620, temperature0.5, max_tokens1024, ) # 3. 实例化 Google 模型 google_model ChatGoogleGenerativeAI( modelgemini-1.5-pro, temperature0.9, )方式二使用统一的初始化函数 (init_chat_model)这是LangChain官方推荐的更现代、更灵活的方式 。它的核心价值在于解耦代码和具体的模型提供商。如果应用可能会因为成本、性能或功能等原因切换模型这种方式会极大地降低修改成本。它使用provider:model_name的字符串格式来指定模型 。from langchain.chat_models import init_chat_model # 1. 初始化 OpenAI 模型 # 你只需要修改字符串实例化代码无需改动 openai_model init_chat_model( openai:gpt-4o, # 格式: 提供商:模型名 temperature0.7, max_tokens1000, ) # 2. 切换到 Anthropic 模型 # 仅需修改第一个参数下面的配置参数会根据新模型的语法进行传递 anthropic_model init_chat_model( anthropic:claude-3-5-sonnet-20240620, temperature0.7, # temperature 等通用参数仍然有效 ) # 3. 切换到本地 Ollama 模型 ollama_model init_chat_model( ollama:llama3, # 前提是本地已运行 Ollama 服务 temperature0.8, )两种方式怎么选为了快速开发或验证想法使用“直接初始化”。这种方式代码清晰对于熟悉特定模型如OpenAIAPI的开发者来说上手最快 。为了构建健壮、易于维护的生产级应用优先选择init_chat_model。它将应用逻辑与模型供应商解耦未来更换模型时只需修改配置文件中的模型名字符串而不是大动干戈地修改核心业务代码。进阶用法模型实例化后通常会用invoke、stream或batch方法来调用 。此外实例化模型后通常可以直接用于构建更复杂的组件。集成到智能体 (Agent)实例化的模型是智能体的核心推理引擎 。from langchain.agents import create_agent from langchain_openai import ChatOpenAI model ChatOpenAI(modelgpt-4o) def get_weather(city: str) - str: return f{city}的天气是晴朗的。 # 将实例化后的模型传入智能体 agent create_agent(modelmodel, tools[get_weather])用于构建检索链 (Retrieval Chain)在检索增强生成RAG应用中模型负责根据检索到的上下文生成最终答案 。from langchain.chains import RetrievalQA from langchain_openai import ChatOpenAI from langchain.vectorstores import FAISS model ChatOpenAI(modelgpt-3.5-turbo) # 假设 vector_store 已经准备好 # qa_chain RetrievalQA.from_chain_type(llmmodel, retrievervector_store.as_retriever())