当前位置: 首页 > news >正文

[LangChain] 02. 模型接口

LangChain 支持两类主流语言模型:

  1. 文本补全模型
  2. 对话模型

文本补全模型

Text Completion Models

这类模型以一段纯文本作为输入,输出结果是一段连续生成的文字(这里的输出文本其实就是对前面输入文本的一个补全),不区分说话角色,也不会自动记录上下文。它们通常用于单轮任务,如:段落续写、摘要生成、内容润色等。
代表模型包括早期的 GPT-3(如 text-davinci-003)或本地推理环境下的 LLaMA2 系列。

在上一节课中,我们动手实现了一个 LangChain 快速上手示例:

import { Ollama } from "@langchain/ollama";const model = new Ollama({model: "llama3",
});const res = await model.invoke("你是谁?");console.log(res);

这个案例中的 Ollama 实际封装的是一类基础补全模型(Text Completion Model)。这类模型具备以下典型特征:

  1. 输入格式:接收的是 普通文本字符串,而 不是对话消息数组
  2. 输出格式:返回的同样是 一段纯文本不含结构化角色信息
  3. 适用场景:更适合非对话类任务,例如:摘要提取、句子改写、文本分类、代码生成等
  4. 调用方式:使用 invoke(text) 方法,输入为字符串
  5. 与聊天模型区别:不支持 HumanMessage / AIMessage 角色区分,也不保留上下文

对话模型

Chat Completion Models

对话模型在能力上更进一步,它们支持多轮上下文角色区分,输入格式为一组带有身份标签的消息数组(例如 systemuserassistant),模型能够根据对话历史生成更加自然且连续的回复。
代表性模型有 GPT-4、Claude 3、Gemini、Mistral Chat 等,常用于聊天机器人、Agent 推理流程等复杂交互场景。

接下来我们来看看一个对话模型的实战示例。在开始之前,先安装一个必要的依赖包:

pnpm add @langchain/core

在这里,我们也顺便聊一聊 LangChain 的包结构。整个 LangChain 生态系统由多个模块化包组成,各自承担不同职责,协同构建完整的智能应用开发框架:

  1. @langchain/core
    LangChain 的“内核”,提供最基础的抽象能力,比如 Runnable(可执行单元)、Prompt(提示词模板)、OutputParser(输出解析器)等。同时还包含 LangChain Expression Language,用于编排复杂的链式逻辑。
  2. @langchain/community
    社区维护的扩展包,收录了大量第三方集成,例如各类向量数据库、模型 API、文档加载器等。可以理解为 LangChain 的“插件市场”。
  3. langchain
    是在核心能力基础上的高阶封装,内置了常见的链式组件(Chains)、智能体模块(Agents)、工具调度(Tools)等,是大多数 LangChain 应用的默认入口包。
import { ChatOllama } from "@langchain/ollama";
import {SystemMessagePromptTemplate,HumanMessagePromptTemplate,ChatPromptTemplate,
} from "@langchain/core/prompts";const model = new ChatOllama({model: "llama3",temperature: 0.7,stream: true,
});// 创建多角色的提示词模板// 1. 创建系统提示词
const sysPrompt = SystemMessagePromptTemplate.fromTemplate("你是一个翻译助理 ,请将用户输入的内容由{input_language}直接翻译为{output_language}."
);// 2. 创建用户提示词
const humanPrompt = HumanMessagePromptTemplate.fromTemplate("{text}");// 3. 合成提示词
const chatPrompt = ChatPromptTemplate.fromMessages([sysPrompt, humanPrompt]);// 4. 填充变量
const messages = await chatPrompt.formatMessages({input_language: "中文",output_language: "英语",text: "今天天气真好,我们去游泳吧",
});const res = await model.stream(messages);for await (const chunk of res) {process.stdout.write(chunk.content);
}

简单类比:

  • 文本补全模型:像是让 AI 接着你写的作文续写一段内容;
  • 对话模型:更像是你在和一个“懂上下文”的 AI 助手对话,支持来回沟通。

LangChain 中的两种本地模型调用方式 OllamaChatOllama 对比如下:

对比维度 Ollama(文本补全模型) ChatOllama(对话模型)
所属包 同为 @langchain/ollama 同为 @langchain/ollama
继承体系 基于 LLM 抽象类 基于 BaseChatModel 抽象类
输入类型 接收 纯文本字符串 作为 prompt 接收 消息对象数组(含 systemuserassistant
Prompt 模板支持 支持文本模板(单角色) 支持多角色模板(含系统提示 + 用户消息)
系统提示能力 不支持 SystemMessage,需手动写入 prompt 中 原生支持系统消息(如使用 SystemMessagePromptTemplate
上下文记忆 不具备上下文感知能力,每次调用是独立的 支持对话上下文,可构建多轮逻辑
使用方式 适合执行 model.invoke("文本") 类型的单轮任务 可通过 chatModel.invoke(messages) 处理多轮对话
推荐场景 适用于摘要、问答、标题生成等单轮文本生成任务 适用于翻译、聊天机器人、角色扮演等多轮交互任务
http://www.hskmm.com/?act=detail&tid=31777

相关文章:

  • 摄像头调试
  • C语言学习——字符串数据类型
  • 感知节点@4@ ESP32+arduino+ 第二个程序 LED灯显示
  • WebGL学习及项目实战(第02期:绘制一个点)
  • 2025 年 10 月国内加工中心制造商最新推荐排行榜:涵盖立式、卧式、龙门及多规格型号!
  • display ip routing-table protocol ospf 概念及题目 - 详解
  • C语言学习——小数数据类型
  • 高敏感人应对焦虑
  • Palantir本体论以及对智能体建设的价值与意义
  • 2025 年执业兽医资格证备考服务机构推荐榜,执业兽医资格证培训机构/执兽考试机构/考试辅导机构获得行业推荐
  • [LangChain] 基本介绍
  • 题解:P6755 [BalticOI 2013] Pipes (Day1)
  • Palantir 的“本体工程”的核心思路、技术架构与实践示例
  • P14164 [ICPC 2022 Nanjing R] 命题作文
  • C语言学习——整数变量
  • 语音合成技术从1秒样本学习表达风格
  • 我的高敏感和家人
  • 对称多项式
  • usb储存之BOT/UAS内核驱动
  • 简述flux思想?
  • 风控评分卡
  • 20232428 2025-2026-1 《网络与系统攻防技术》实验一实验报告
  • JAVA对象内存布局
  • 20232409 2025-2026-1 《网络与系统攻防技术》实验二实验报告
  • 10月15号
  • 记录一次客户现场环境,银河麒麟V10操作系统重启后,进入登录页面后卡死,鼠标键盘无响应的解决过程
  • 图 生成树
  • DolphinScheduler 3.1.9 单机版重启后,项目、流程定义等数据全部丢失
  • ManySpeech.AliParaformerAsr 使用指南
  • 资料拿取表