langchain1.X学习笔记-3-模型的初始化创建

📅 发布时间:2026/7/24 21:56:51
langchain1.X学习笔记-3-模型的初始化创建 文章目录1 模型调用的准备工作1.1 大模型的调用1.2 模型初始化方式1.3 线上大模型服务平台1.4 提前安装所有依赖2 模型初始化2.1 方式一使用模型提供商库2.1.1 通过专用API调用(麻烦)2.1.2 兼容用法ChatOpenAI(推荐)2.1.3 中转平台(付费)2.1.4 init_chat_model()(不直观)2.2 方式二本地模型的部署与调用2.3 模型初始化参数2.3.1 temperature2.3.2 Token2.4 配置.env文件大多数API平台都支持OpenAI API接口规范所以基本都可以通过ChatOpenAI集成。提供三个参数api_key、 base_url、model。放到配置文件中基于python-dotenv读取。1 模型调用的准备工作1.1 大模型的调用在LangChain v0.3版本中提到了Model I/O包括输入提示(Format)、调用模型(Predict)、输出解析(Parse)。分别对应着Prompt Template Model和Output Parser。但是LangChain v1.2版本已经去掉了这张图。首先我们要创建这个模型。然后这个模型在创建以后咱们就可以通过提示词的方式给到这个大模型进行交互了那么关于提示词的这个填充涉及到了提示词模板。然后这个模型产生的这个内容咱们还可以进一步的做这个解析然后得到你想要的这种格式比如你想要字符串还是想要这个JSON格式还是其他的一些指定格式我们对应的叫做parse。然后关于这个模型初始化的时候是不是有个分支一个叫LLM一个叫Chat model下边这个如果翻译成叫对话模型的话上边这个就叫做非对话模型当然了也可以称为补全模型。新的这个V1.12版本当中就不再去用这个非对话模型了。关于模型调用模块如今对话模型已经是主要形式。在GPT-3时代大模型以补全模型为主只能以类似“成语接龙”的方式对文本进行补全并且实际运行效果也 非常不稳定 。此时LangChain借助一些高层封装的API能够让模型完成对话、调用外部工具、甚至是结构化输出等功能为开发者提供了极大的便利。伴随着GPT-3.5模型的发布 对话模型正式登上历史的舞台并逐渐成为主流 。而得益于对话模型更强的指令跟随能力很多GPT-3需要借助LangChain才能完成的工作已经成为GPT-3.5原生自带的一些功能。现在已经是对话模型为主所以在以后的开发当中主要就用这个对话模型就行即使这块你给的是一个字符串那我们也把它封装成是一个message的方式以对话模型的方式来进行一个调用。1.2 模型初始化方式简单来说就是用谁家的API以什么方式创建存放在哪个位置的大模型。角度1调用谁家的API使用模型提供商的库。使用LangChain统一方式(推荐)。角度2模型初始化时几个重要参数(如BASE_URL、API-KEY)的书写位置的不同使用配置文件.env(推荐 )。硬编码写在代码文件中。角度3调用的模型所在位置在线部署的大模型。本地部署的大模型。LangChain作为一个“工具”不提供任何LLMs而是依赖于第三方集成各种大模型。这里就看大模型到底部署在哪里。1.3 线上大模型服务平台有许多提供大模型API服务的平台使用时只需要注册、充值并创建API-Key之后即可使用API-Key与URL来调用平台提供的相应的模型的服务。说明每个平台配置时都需要几个要素 模型名 、 api-key 、 base-url。如果大家想使用国外的大模型就选择前两个如果只使用国内的大模型可以选择后四个。(1)阿里云百炼所有新用户可获得超过5000万Tokens的免费额度及4500张图片生成额度。适合toB企业用户(2)硅基流动号称9B以下模型永久免费开源模型价格低适合个人学习。此外还有各个模型自己的厂商平台。比如deepseek、智谱等。(3)OpenRouter是一个第三方镜像站专门转发大模型厂商的API服务。通过它我们可以间接调用几乎所有大模型厂商的API服务。支持国内直连。OpenRouter支持支付宝或微信充值最低限额$5税费$0.8此外如果调用的模型禁止在国内使用如ChatGPT则无法通过OpenRouter直接调用(需要Magic)会提示This model is not available in your region根据个人情况决定是否充值并调用OpenRouter API。1.4 提前安装所有依赖LangChain的版本变化较快不同版本之间可能存在兼容问题为了避免因版本不一致导致的问题会通过requirements.txt固定主要依赖版本 。pipinstall-r.\requirements.txtrequirements.txt# # LangChain 核心框架# 作用LangChain 1.x 主体、核心抽象、社区组件、实验性组件、文本切分器# langchain1.2.12 langchain-core1.2.18 langchain-community0.4.1 langchain-classic1.0.2 langchain-text-splitters1.1.1 langchain-experimental0.4.1# # jupyter# 作用交互式编程记事本默认安装最新版即可# jupyter# # ollama# 作用调用本地大模型# langchain-ollama1.0.1ollama0.6.2# # LangGraph / Agent 编排# 作用构建 Agent、状态图、多步骤工作流、检查点、PostgreSQL 持久化# langgraph1.1.2 langgraph-prebuilt1.0.8 langgraph-checkpoint4.0.1 langgraph-checkpoint-postgres3.0.5 langgraph-sdk0.3.9# # MCP / FastMCP 集成# 作用构建 MCP Server、连接 MCP 工具、资源、Prompt# mcp1.27.0fastmcp3.2.4 langchain-mcp-adapters0.2.1# # 大模型供应商与 LangChain 适配器# 作用接入 OpenAI 协议、DeepSeek、Anthropic、OpenRouter、通义千问、腾讯等模型# openai2.26.0anthropic0.84.0 langchain-openai1.1.11 langchain-deepseek1.0.1 langchain-anthropic1.3.4 langchain-openrouter0.1.0openrouter0.7.11dashscope1.25.6 tencentcloud-sdk-python3.1.86PyJWT2.10.1# # 搜索工具 / 外部工具集成# 作用接入 Tavily 等联网搜索工具# langchain-tavily0.2.17# # Web 服务 / API / SSE# 作用MCP HTTP 服务、FastAPI 服务、SSE 流式通信、本地 API 服务# fastapi0.135.1uvicorn0.46.0 sse-starlette3.3.4httpx0.28.1 httpx-sse0.4.3aiohttp3.12.14requests2.32.5 requests-toolbelt1.0.0websockets16.0watchfiles1.1.1# # 配置管理 / 数据校验 / 序列化# 作用读取 .env、Pydantic 配置、JSON/YAML、结构化输出# python-dotenv1.2.1pydantic2.12.5 pydantic-settings2.12.0PyYAML6.0.3orjson3.11.7jsonschema4.26.0jsonref1.1.0 dataclasses-json0.6.7# # 日志 / 命令行 / 调试辅助# 作用日志输出、CLI、富文本终端输出、重试机制# loguru0.7.3rich14.3.3typer0.24.1click8.3.1tenacity9.1.4tqdm4.67.3 python-dateutil2.9.0.post0pytz2026.2# # 测试工具# 作用单元测试、教程代码验证# pytest9.0.3# # 记忆相关# 作用PostgreSQL 检查点、SQL 数据源# psycopg[binary]3.3.3 psycopg-pool3.3.02 模型初始化在LangChain中初始化模型主要可以通过直接使用特定的Model Class和使用统一的init_chat_model函数这两种方式来实现。2.1 方式一使用模型提供商库这种方式最直接。LangChain为一些大模型供应商提供了专门的Model类导入对应的具体类(如ChatOpenAI、ChatAnthropic、ChatDeepSeek、ChatOllama、ChatHunyuan、ChatTongyi、ChatZhipuAI)并进行实例化。2.1.1 通过专用API调用(麻烦)注意使用不同的模型可能传入的参数名称不同。1、DeepSeek大模型官网https://www.deepseek.com/。pip install langchain-deepseek2、智谱大模型官网https://www.bigmodel.cn/。安装Langchain社区依赖包包含ChatHunyuan、ChatTongyi、ChatZhipuAIpip install langchain-community3、千问大模型通过阿里云百炼平台调用官网https://bailian.console.aliyun.com/。2.1.2 兼容用法ChatOpenAI(推荐)一方面LangChain没有为所有大模型厂商提供专用接口。如果选用的平台没有专用接口可以通过兼容接口调用。另一方面专用接口的对接方式五花八门如腾讯混元的ChatHunyuan需要单独的APP_ID SecretId SecretKey 配置繁琐用户不友好。大多数API平台都支持OpenAI API接口规范所以基本都可以通过ChatOpenAI集成。from langchain_openaiimportChatOpenAI from dotenvimportload_dotenvimportos load_dotenv(overrideTrue)#通过ChatOpenAI 连接智谱AI模型ZHIPUAI_API_KEYos.getenv(API_KEY)ZHIPUAI_BASE_URLos.getenv(BASE_URL)zhipu_llm2ChatOpenAI(api_keyZHIPUAI_API_KEY,base_urlZHIPUAI_BASE_URL,modelglm-4-flash,)responsezhipu_llm2.invoke(1 1 )print(response)2.1.3 中转平台(付费)受政策影响国内无法直接调用国外顶尖的闭源模型某些复杂任务需要用这些模型实现此时可以通过中转平台曲线救国。1、OpenRouter官网https://openrouter.ai/OpenRouter是一个多模型API聚合平台提供统一的OpenAI兼容接口可以通过一个API Key调用OpenAI、Claude、Gemini、DeepSeek、Qwen等不同厂商的大模型。它适合用于模型对比、模型路由、Agent应用开发和课程实验。是目前知名度最高的中转平台。但是使用的话需要魔法。2、CloseAI官网https://www.closeai-asia.com/CloseAI是一个面向国内用户的AI API中转平台提供OpenAI、Claude、Gemini等模型接口的代理访问能力。它适合用于解决国内网络访问、支付和接口统一管理等问题常用于大模型应用开发、教学演示和测试环境。LangChain没有为CloseAI提供专用集成可以通过ChatOpenAI兼容接口调用。2.1.4 init_chat_model()(不直观)init_chat_model是LangChain 1.x中推出的用于初始化聊天模型的统一接口。只要是LangChain支持的模型都可以处理它会根据模型名称自动选择对应的模型类初始化实例。问题 init_chat_model和直接使用ChatTongyi、ChatOpenAI、ChatDeepSeek有什么区别(1)统一接口无需记住每个提供商的不同初始化方式(以一致的方式初始化)。(2)易于切换简化了智能体系统中模型切换策略(只需修改模型字符串)。(3)简洁明了更简洁的语法减少样板代码。(4)自动适配内部根据模型标识自动选择对应的驱动类(ChatOpenAI、ChatDeepSeek)。importos from langchain.chat_modelsimportinit_chat_model from dotenvimportload_dotenv# 从.env文件中加载环境变量load_dotenv(overrideTrue)# 从环境变量读取配置ZHIPUAI_API_KEYos.getenv(API_KEY)ZHIPUAI_BASE_URLos.getenv(BASE_URL)modelinit_chat_model(modelglm-4-flash,model_provideropenai,api_keyZHIPUAI_API_KEY,base_urlZHIPUAI_BASE_URL)# 向模型发送单条数据responsemodel.invoke(1 1 )# 打印响应print(response)像智谱的zhipu尚未被LangChain官方纳入模型的统一注册体系暂时不知道zhipu的提供者是谁。此时可以将model_provider设置为openai底层将会用openai的规范处理请求这就要求我们调用的模型服务是OpenAI Compatible的。2.2 方式二本地模型的部署与调用LangChain也支持使用Ollama 、 vLLM 等框架启动的本地大模型。Ollama是在Github上的一个开源项目其项目定位是一个本地运行大模型的集成框架可以实现如Qwen、Deepseek 等主流大模型的下载、启动和本地运行的自动化部署及推理流程。两种调用方式1、ChatOllamafrom langchain_ollamaimportChatOllama ollama_llmChatOllama(modeldeepseek-r1:1.5b,base_urlhttp://192.168.1.106:11434#如果Ollama在本地默认端口运行则可省略或使用http://localhost:11434)question你好请你介绍一下你自己。resultollama_llm.invoke(question)print(result)2、init_chat_modelfrom langchain.chat_modelsimportinit_chat_model ollama_llminit_chat_model(modeldeepseek-r1:1.5b,model_providerollama,# base_urlhttp://192.168.1.106:11434,)question你好请你介绍一下你自己。resultollama_llm.invoke(question)print(result)2.3 模型初始化参数在LangChain中Model Class和init_chat_model初始化模型共同的参数及解释。2.3.1 temperature根据使用场景选择0.0-0.3需要一致性、准确性的任务数学计算、数据提取、分类、代码生成。0.5-0.7平衡创造性和一致性聊天、问答。0.8-1.5创造性任务写作、头脑风暴。1.5-2.0高度创造性诗歌、故事创作。例如严格的结构化数据提取temperature0from langchain_openaiimportChatOpenAI from dotenvimportload_dotenvimportos load_dotenv(overrideTrue)#通过ChatOpenAI 连接智谱AI模型ZHIPUAI_API_KEYos.getenv(API_KEY)ZHIPUAI_BASE_URLos.getenv(BASE_URL)zhipu_llm2ChatOpenAI(api_keyZHIPUAI_API_KEY,base_urlZHIPUAI_BASE_URL,modelglm-4-flash, temperature0)responsezhipu_llm2.invoke(张三男30岁拥有8年编程开发经验目前在某互联网大厂担任技术专家。 帮我从上文中提取数据返回JSON格式)print(response.content)2.3.2 Token基本单位 : 大模型通过分词器(Tokenizer)将文本拆分后的最小语义单元是token(相当于自然语言中的词或字)。不同的模型采用不同的分词算法 (如BPE、WordPiece)因此同一段文本在不同模型中的Token数量可能不同。收费依据 大语言模型通常也是以token的数量作为其计量或收费的依据。1个中文Token≈1-1.8个汉字1个英文Token≈3-4个字符Token与字符转化的可视化工具OpenAI提供https://platform.openai.com/tokenizer。百度智能云提供https://console.bce.baidu.com/support/#/tokenizer。2.4 配置.env文件(1).env文件API_KEYBASE_URL(2)pip install python-dotenvfrom dotenvimportload_dotenv# 通过load_dotenv()将.env中的变量加载为环境变量# overrideTrue表示无论你当前的操作系统、终端或者虚拟环境中是否已经存在同名的环境变量都会强行用 .env 文件里写的值去覆盖它 load_dotenv(overrideTrue)# 从环境变量读取配置API_KEYos.getenv(API_KEY)BASE_URLos.getenv(BASE_URL)