欢迎光临
我们一直在努力

2.LangChain零基础速通-Model I_O大模型接口

文章目录

  • 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的运行会受到所使用模型大小的影响;

  • 运行内存:运行一个7B(70亿参数)的模型至少需要8GB的可用内存(RAM),而运行一个13B(130亿参数)的模型需要16GB的内存,33B(330亿参数)的模型需要32GB的内存;
  • 磁盘空间:大模型的文件都比较大,建议至少为Ollama和其模型预留50GB的磁盘空间;
  • CPU:性能较高的CPU可以提供更好的运算速度和效率,多核处理器能够更好地处理并行任务,选择具有足够核心数的CPU
  • GPU:Ollama支持纯CPU运行,但如果电脑配备了NVIDIA GPU,可以利用GPU进行加速,提高模型的运行速度和性能
  • 安装部署与常用命令

    安装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"))

    赞(0)
    未经允许不得转载:171主机测评 » 2.LangChain零基础速通-Model I_O大模型接口
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址