【LangChain系列 14】语言模型概述

本文速读

  • LLMs

  • 对话模型

LangChain集成了两种语言模型:

  • LLM:输入文本,返回文本

  • 对话模型:基于LLM,输入Message列表,返回一条Message

LLM和对话模型之间有着细微且重要的不同。在LangChain中,LLMs指的是纯文本补全模型,它的API封装是:将字符串prompt作为输入,然后返回一个字符串。GPT-3是作为一个LLM实现的,然后在它的基础上进行调整使其具有对话能力。GPT-4和Claude都是作为对话模型实现的。

在LangChain中,为了将LLMs和对话模型可以互换使用,它们都继承了 基础语言模型 接口,它包含一些公共方法,比如predict, predict messages。

01 LLMs


LLMs(Large Language Models )是LangChain在核心组件,LangChain并不服务于它自己的LLMs,而是提供标准接口来与不同的LLMs交互。

下面我们从OpenAI LLM开始吧。

  1. 安装openai
bash 复制代码
pip install openai
  1. 准备API key

注册好OpenAI的帐号后,可以在后台生成key。有两种方式使用API key,一种是通过环境变量的方式:

bash 复制代码
export OPENAI_API_KEY="..."

然后在代码中就不需要指定key了:

python 复制代码
from langchain.llms import OpenAI

llm = OpenAI()

另一种方式是直接在代码中指定:

python 复制代码
from langchain.llms import OpenAI

llm = OpenAI(openai_api_key="...")
  1. 使用LLM

最简单的方式是直接调用:

复制代码
llm("Tell me a joke")

'Why did the chicken cross the road?\n\nTo get to the other side.'

同时也支持批量调用:

复制代码
llm_result = llm.generate(["Tell me a joke", "Tell me a poem"]*15)

len(llm_result.generations)

30

查看结果:

python 复制代码
llm_result.generations[0]
python 复制代码
[Generation(text='\n\nWhy did the chicken cross the road?\n\nTo get to the other side!'),
   Generation(text='\n\nWhy did the chicken cross the road?\n\nTo get to the other side.')]
python 复制代码
llm_result.llm_output
bash 复制代码
  {'token_usage': {'completion_tokens': 3903,
    'total_tokens': 4023,
    'prompt_tokens': 120}
  }

02 对话模型


对话模型的底层是LLM,但是它的上层接口和LLM的还是有点不同。LLM的是"text in, text out"相关的API,对话模型接口的输入/输出是Message。

同样地,我们依然以OpenAI为例来介绍对话模型。

  1. 安装openai

    pip install openai

  2. 准备API key

和LLM的方法一致,也支持环境变量和代码中两种指定方式。

python 复制代码
from langchain.chat_models import ChatOpenAI

chat = ChatOpenAI(openai_api_key="...")
  1. 使用对话模型

最简单的使用方式就是传入一条或多条Message,然后返回一条Message.

python 复制代码
messages = [
    SystemMessage(content="You are a helpful assistant that translates English to French."),
    HumanMessage(content="I love programming.")
]
chat(messages)
python 复制代码
AIMessage(content="J'aime programmer.", additional_kwargs={})

同样地,对话模型也支持批量:

python 复制代码
batch_messages = [
    [
        SystemMessage(content="You are a helpful assistant that translates English to French."),
        HumanMessage(content="I love programming.")
    ],
    [
        SystemMessage(content="You are a helpful assistant that translates English to French."),
        HumanMessage(content="I love artificial intelligence.")
    ],
]
result = chat.generate(batch_messages)
result
python 复制代码
LLMResult(generations=[[ChatGeneration(text="J'aime programmer.", generation_info=None, message=AIMessage(content="J'aime programmer.", additional_kwargs={}))], [ChatGeneration(text="J'aime l'intelligence artificielle.", generation_info=None, message=AIMessage(content="J'aime l'intelligence artificielle.", additional_kwargs={}))]], llm_output={'token_usage': {'prompt_tokens': 57, 'completion_tokens': 20, 'total_tokens': 77}})

查看token信息:

python 复制代码
result.llm_output
bash 复制代码
{'token_usage': {'prompt_tokens': 57,
    'completion_tokens': 20,
    'total_tokens': 77}}

本文小结

LangChain集成了LLM和对话模型两类模型,两者上层接口的差别是:LLM是"text in, text out", 而对话模型是"message in, message out"。

公众号:大白爱爬山

相关推荐
audyxiao0011 分钟前
人工智能顶会AAAI 2026论文分享|SlideBot:用于生成信息丰富、可靠、多模态幻灯片的多智能体框架
人工智能·大模型·aaai·智能体·幻灯片
用户938515635075 分钟前
Workflow 与 Agent 之争:确定性执行与智能探索的深度剖析
人工智能
BraveWang9 分钟前
【LangChain 1.x】10、短期记忆|checkpointer 持久化与上下文治理三件套
langchain
阿里云大数据AI技术12 分钟前
阿里云 EMR Serverless StarRocks(Stella 2.2.0) 发布:内表与湖表同时支持向量、全文与 AI Function,一条 SQL 完成多模态检索
人工智能
格林威12 分钟前
工业相机Chunk功能全解析:图像嵌入时间戳、编码器元数据(附堡盟C#代码)
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·工业相机
怪奇云呼军17 分钟前
闪电智能Voice Agent:ASR 首字延迟和最终识别延迟怎么测?t0-t3 埋点实战
人工智能·科技·ai·语音识别
冬哥聊AI24 分钟前
百万行代码里跑Claude Code?三面这题80%的人答不上来
人工智能
甄同学24 分钟前
第二十三篇:Tasks系统,Claude Code如何统一管理7种后台任务
人工智能
独隅26 分钟前
IntelliJ IDEA 接入多种AI大模型插件终极指南(2026.1 企业合规版)
java·人工智能·intellij-idea
有Li30 分钟前
EvoMDT:用于多癌种结构化临床决策的自进化多智能体系统文献速递/医学智能体前沿
人工智能·学习·分类·文献·医学生