文章目录
- Model I/O大模型接口
-
- 简介
- Model I/O三件套
- Model I/O调用模型
- Model I/O分类
- Model I/O模型参数
- Model I/O模型返回
- 接入大模型
-
- 接入OpenAI
- 接入DeepSeek
- Ollama本地大模型部署
-
- 简介
- 安装部署与常用命令
- LangChain整合Ollama部署本地大模型
Model I/O大模型接口
简介
官网:
Models – Docs by LangChain
Chat model integrations – Docs by LangChain
是什么:
LangChain的Model I/O模块是与大模型交互的核心组件,主要用于标准化各个大模型的输入与输出,包含输入提示(Format)、调用模型(Predict)和输出解析(Parse),分别对应着Prompt Template、Model、Output Parser

Model I/O三件套
- Format输入提示
即Prompts Template提示词模板,通过模板管理大模型的输入。将原始数据格式化成模型可以处理的形式,插入到一个模板问题中,然后送入模型进行处理
- Predict调用模型
即Models,使用通用接口调用不同的大语言模型。接受被送进来的问题,然后基于这个问题进行预测或生成回答。
- Parse输出解析
即Output Parser部分,用来从模型的推理中提取信息,并按照预先设定好的模版来规范化输出。比如,格式化成一个结构化的JSON对象
一句话:简单来说,就是输入、处理、输出这三个步骤
Model I/O调用模型
指一个AI模型,应用的核心就是它所依赖的大语言模型,LangChain作为一个工具,不提供任何LLMs,而是依赖第三方集成各种大模型,比如:将OpenAI、Anthropic、DeepSeek等平台的模型无缝接入到你的应用。
LangcChain模型接口官方文档:
language_models | langchain_core
Model I/O分类
| LLM (大语言模型) | 纯文本字符串 | 文本字符串 | 1. 最基础的文本生成模型2. 无上下文记忆3. 高速、轻量 | 1. 单轮问答2. 摘要生成3. 文本改写/扩写4. 指令执行(Instruct 模型) |
| ChatModel (聊天模型) | 消息列表,包括HumanMessage, SystemMessage, AIMessage 等 | 聊天消息对象 (AIMessage) | 1. 面向对话场景2. 支持多轮上下文3. 更贴近人类对话逻辑 | 1. 智能助手2. 客服机器人3. 多轮推理任务4. LangChain Agent 工具调用 |
| Embeddings (文本向量模型) | 文本字符串或列表 | 向量 | 1. 将文本转化为语义向量2. 可用于相似度搜索3. 通常不生成文本 | 1. 文本检索增强 (RAG)2. 知识库问答3. 聚类 / 分类 / 推荐系统 |
Model I/O模型参数
详见:
Models – Docs by LangChain
在构建聊天模型时init_chat_model,有一些标准化参数,如下:
| model | 指定使用的大语言模型名称 (如 “gpt-4”、“gpt-3.5-turbo” 等) |
| temperature | 温度,温度越高,输出内容越随机;温度越低,输出内容越确定 |
| timeout | 请求超时时间 |
| max_tokens | 生成内容的最大token数 |
| stop | 模型在生成时遇到这些“停止词”将立刻停止生成,常用于控制输出的边界。 |
| max_retries | 最大重试请求次数 |
| api_key | 大模型供应商提供的API秘钥 |
| base_url | 大模型供应商API 请求地址 |
以上的标准参数,也只是适用于部分的大语言模型,有些参数在特定模型中可能是无效的,这些标准化参数仅对LangChain官方提供集成包的模型(如langchain-openai、langchain-anthropic)生效,在langchain-community包中的第三方模型,则不需要遵守这些标准化参数的规则。
Model I/O模型返回
Message组件,调用模型后返回了一条AI信息:AIMessage,所有的消息都有type、content、response_meta等通用属性
| type | 描述了是哪个类型的消息,包含类型有"user"、“ai”、“system” 和 “tool” |
| content | 通常是字符串,有些情况下可能是字典列表,这个字典列表用于大模型的多模态输出。 |
| name | 用来区分当消息类型相同,对消息进行区分,但不是所有模型都支持这一功能。 |
| response_metadata | AI消息才会包含的属性,大语言模型的响应中附加元数据,根据不同模型会有不同,如可能会包含本次 token 使用量等信息。 |
| tool_calls | AI消息才会包含的属性,当大语言模型决定调用工具时,在 AIMessage 中就会包含这个属性,可以通过 .tool_calls 属性进行获取该属性返回一个 ToolCall 列表,每个 ToolCall 是一个字典,包含以下字段:name :应调用的工具名 args :调用工具的参数 id :工具调用的唯一标识 ID |
接入大模型
接入OpenAI
OpenAI、ChatOpenAI两者定位、功能场景差异显著,无绝对优劣,根据业务需求选择。
本质区别:
openai.OpenAI是官方原生底层工具,所属PythonSDK生态,定位是地层、纯粹的API调用工具,紧负责封装OpenAI的API接口,提供最直接的模型调用能力,无额外扩展功能。
langchain_openai.ChatOpenAI是LangChain生态的高层适配器,是对OpenAI SDK的二次封装,定位是LangChain框架的模型适配器,使其能与LangChain的其他组件(提示词模版、链、代理、记忆等)无缝协作。
选型核心:
- 简单调用用openai.OpenAI(轻、快、纯)
- 复杂工作流用langchain_openai.ChatOpenAl(强、全、易扩展)
openai.OpenAI
from openai import OpenAI
from config import OPENAI_API_KEY
# 原生OpenAI模型,不常用
llm = OpenAI(
api_key=OPENAI_API_KEY,
base_url="https://api.deepseek.com"
)
response = llm.chat.completions.create( # type: ignore
model="deepseek-chat",
messages=[
{"role": "system", "content": "你是一个Python专家"},
{"role": "user", "content": "你是谁"}
],
stream=False
)
print(response.choices[0].message.content)
langchain_openai.ChatOpenAI
from langchain_openai import ChatOpenAI
from config import OPENAI_API_KEY
# # ChatOpenAI模型
llm = ChatOpenAI(
model="deepseek-chat",
api_key=OPENAI_API_KEY,
base_url="https://api.deepseek.com"
)
messages = [
{"role": "system", "content": "你是一个Python专家"},
{"role": "user", "content": "那你是谁"}
]
# 调用语言模型
response = llm.invoke(messages)
print("response.content", response.content)
init_chat_model:
from langchain.chat_models import init_chat_model
from config import OPENAI_API_KEY
# init_chat_model创建一个语言模型
llm = init_chat_model(
model="deepseek-chat",
model_provider="deepseek",
api_key=OPENAI_API_KEY,
base_url="https://api.deepseek.com"
)
# 调用语言模型
response = llm.invoke("你是谁")
print("response.content", response.content)
接入DeepSeek
pip install langchain_deepseek
from langchain_deepseek import ChatDeepSeek
from config import OPENAI_API_KEY
# 纯纯的deepseek接入
llm = ChatDeepSeek(
model="deepseek-chat",
api_key=OPENAI_API_KEY,
base_url="https://api.deepseek.com",
temperature=0.7,
max_tokens=None,
timeout=None,
max_retries=3,
)
print(llm.invoke("那你是谁"))
Ollama本地大模型部署
简介
Ollama 是一个开源框架,专为在本地(如你的电脑上)轻松部署和运行大型语言模型(LLM)而设计。它极大地简化了安装和配置流程,被誉为“大模型界的 Docker”。
官网:
Quickstart – Ollama
说明: Ollama的运行会受到所使用模型大小的影响;
安装部署与常用命令
安装ollama:brew install –cask ollama-app
| ollama run | 下载并运行模型 | ollama run deepseek-r1:7b |
| ollama pull | 仅下载模型到本地 | ollama pull deepseek-r1:7b |
| ollama list | 列出本地所有模型 | ollama list |
| ollama rm | 删除本地模型 | ollama rm gemma |
| ollama ps | 查看正在运行的模型 | ollama ps |
| ollama show | 查看模型详细信息 | ollama show llama3 |
| ollama serve | 启动后台服务 | ollama serve |
| ollama stop | 停止运行中的模型 | ollama stop llama3 |
| /bye | 退出对话 |
| /? | 查看帮助 |
| /set verbose | 显示生成速度等信息 |
| /set parameter | 设置模型参数 |
| /show info | 显示模型架构 |
问题:ollama pull 证书问题,拉不下来

解决方案:配置国内镜像
touch .ollama/config.json
{
"registry": {
"mirrors": {
"registry.ollama.ai": "https://registry.ollama.ai" // 阿里云
}
}
}

运行情况: 
LangChain整合Ollama部署本地大模型
ollama==0.6.2
langchain_ollama==1.1.0
from langchain_ollama import ChatOllama
# 本地Ollama接入
llm = ChatOllama(
base_url="http://127.0.0.1:11434",
model="deepseek-r1:7b",
reasoning=False
)
print(llm.invoke("简介python"))


