理解LangChain — Part 2:模型与提示工程

1 模型:AI 应用的核心

在深入探讨 LangChain 的组件之前,我们先来理解一下大语言模型(LLM)的基础知识。

1.1 从 AI 到生成式 AI

为了更好地理解 LLM 的定位,我们先退一步看看更广阔的 AI 领域。

  • 人工智能 (AI):构建能够执行智能(如感知、推理和决策)任务的系统的广阔领域。
  • 机器学习 (ML):AI 的一个子领域,专注于创建从数据中学习的算法。
  • 深度学习 (DL):ML 的一个分支,使用多层神经网络从原始数据中自动学习模式。
  • 生成式 AI:一种 AI 形式(通常基于深度学习),用于创建内容——如文本、图像或音频。LLM 就是其典型代表。

1.1.1 什么是大语言模型 (LLM)?

大语言模型 (LLM) 是一种经过训练的深度神经网络,用于理解、生成和响应类人文本。这些模型通常在包含大量公共互联网数据的海量数据集上进行训练,使用一个简单而强大的目标:预测序列中的下一个词。

LLM 中的“大”体现在两个方面:

  • 训练数据量巨大,通常达到数万亿个词元(token,即单词和子词)。
  • 参数数量庞大——模型的内部权重——范围从数十亿到数千亿不等。

尽管训练任务只是简单的下一个词预测,但 LLM 在摘要、代码生成、翻译和开放式对话等任务中展现出了非凡的能力。

1.1.2 背后的架构:Transformer

现代 LLM 建立在 Transformer 架构之上,该架构在 2017 年的里程碑式论文《Attention Is All You Need》中提出。Transformer 的核心创新是注意力机制,它允许模型在做出预测时有选择地关注输入的相关部分。

这种架构使得在更多数据上训练更大的模型成为可能,同时比 RNN 或 LSTM 等先前方法能更好地捕捉语言的细微差别和结构。

现在我们对 AI、机器学习、深度学习和生成式 AI 之间的区别有了更清晰的认识,接下来让我们进入 LangChain 的第一个核心组件。

1.2 语言模型

广义上讲,LangChain 中的模型分为两类:语言模型(Language Models)和嵌入模型(Embedding Models)。

LangChain 同时支持闭源模型(如 OpenAI 的 GPT-4 或 Anthropic 的 Claude)和开源替代方案(如 LLaMA、Mistral、Hugging Face 和 Falcon),允许你根据应用需求和基础设施选择最合适的工具。

语言模型可以进一步分为两种类型:LLM(大语言模型)和聊天模型(Chat Models)。

此时,你可能会疑惑——LLM 和聊天模型不是一回事吗?这是个常见问题,虽然它们密切相关,但在结构和用法上存在关键差异。

1.2.1 LLM 与 聊天模型

  • LLM (传统文本补全模型):它们是用于原始文本生成的通用模型。LangChain 中的 LLM 遵循简单的“文本输入,文本输出”接口。它们设计用于传统的补全式交互:你提供一个提示(prompt),模型返回一个文本响应。
from langchain.llms import OpenAI

llm = OpenAI()
response = llm.predict("The capital of France is")
# Output: "Paris, which is located in the north-central part of the country..."
  • 聊天模型 (面向对话的模型):这些模型专门为多轮对话进行了微调。它们不仅仅接收一个文本提示,而是期望一个消息列表,每条消息通常带有“用户”、“助手”和“系统”等角色。

    这使得它们非常适合:

    • 构建交互式聊天机器人。
    • 客户支持自动化。
    • 任何需要来回对话的应用。
from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage, SystemMessage

chat = ChatOpenAI()
messages = [
    SystemMessage(content="You are a helpful assistant."),
    HumanMessage(content="What's the capital of France?")
]
response = chat.predict_messages(messages)
# Output: AIMessage object with content and metadata

在 LangChain 中,两者都被视为“模型”,但它们的接口可能略有不同,主要区别在于你如何构建输入。

1.2.2 嵌入模型

嵌入模型是一种机器学习模型,它将数据(如文本、图像或音频)转换为一种紧凑的数值格式,称为嵌入(embeddings)。这些嵌入是向量(即数字列表),在一个连续的低维空间中捕获输入数据的语义含义或上下文。

这使得机器可以基于语义(而不仅仅是精确的单词或数值)来比较、搜索、聚类或分类信息变得容易得多。

想象一下用数字而不是文字来描述水果:

  • 苹果 → [8, 5, 7] (甜度、大小、颜色)
  • 香蕉 → [9, 7, 4]
  • 柠檬 → [3, 5, 9]

这些数值向量可以轻松看出哪些水果相似,即使它们的名称或描述不同。

1.2.3 与各种 LLM 提供商的接口

LangChain 被设计成模型无关的(model-agnostic),这意味着它开箱即用地支持广泛的闭源和开源语言模型。

这使得在 OpenAI、Anthropic、Google 的 Gemini,甚至通过 Hugging Face 托管的开源模型或像 Ollama 这样的本地服务器之间切换变得非常容易——所有这些都通过统一的接口实现。

使用 Google Gemini

from langchain.chat_models import ChatGoogleGenerativeAI

model = ChatGoogleGenerativeAI(model="gemini-2.0-flash")

response = model.invoke("Write a short haiku about the moon.")
print(response.content)

切换到 OpenAI GPT-4

from langchain_openai import ChatOpenAI

model = ChatOpenAI(model='gpt-4', temperature=1.5, max_completion_tokens=10)

result = model.invoke("Write a 5 line poem on cricket")

print(result.content)

使用 Anthropic Claude

from langchain_anthropic import ChatAnthropic

model = ChatAnthropic(model='claude-3-5-sonnet-20241022')

result = model.invoke('What is the capit
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dylan55_you

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值