LangChain 入门指南:基于 Chat Model 构建 AI 对话系统

一、基础概念详解

1.1 什么是 Chat Models?

Chat Models 是 LangChain 中用于处理对话的核心组件。与普通的语言模型不同,Chat Models 专门设计用于处理多轮对话,能够:

  • 维护对话上下文
  • 理解不同角色的输入
  • 生成连贯的对话响应

1.2 环境配置详解

  1. 首先安装必要的包
pip install python-dotenv        # 用于环境变量管理
pip install langchain-openai     # OpenAI 集成
pip install langchain-anthropic  # Anthropic 集成
pip install langchain-google-genai  # Google AI 集成
  1. 创建 .env 文件
OPENAI_API_KEY=sk-xxx...        # OpenAI API密钥
ANTHROPIC_API_KEY=sk-ant-xxx... # Anthropic API密钥
GOOGLE_API_KEY=xxx...           # Google API密钥

二、基础用法深度解析

2.1 创建你的第一个对话模型

# 导入必要的库
from dotenv import load_dotenv # 用于加载环境变量
from langchain_openai import ChatOpenAI, OpenAI # 导入 OpenAI 的聊天模型

# 从 .env 文件加载环境变量(包含 API 密钥等敏感信息)
load_dotenv()

# 创建一个 ChatOpenAI 模型实例
model = ChatOpenAI(model="gpt-4o-mini")

# 调用模型并传入一个问题
# invoke() 方法用于向模型发送消息并获取响应
result = model.invoke("介绍一下你自己?")

# 打印完整的结果对象
print("完整结果:")
print(result)

# 只打印结果的内容部分
print("仅内容:")
print(result.content)

2.2 理解返回结果

  • 完整结果:会显示一个包含完整响应信息的 LangChain 消息对象,AIMessage(content=‘…’)
  • 仅内容:只显示 AI 的回答内容
    在这里插入图片描述

三、消息类型与多轮对话

3.1 三种核心消息类型

Langchain 内置三种主要消息类型,分别是:

SystemMessage(系统消息)
from langchain_core.messages import SystemMessage

system_message = SystemMessage(content="你是一位得力的助手")
  • 用于设定 AI 的角色、行为和规则
  • 相当于给 AI 一个整体的行为指南
  • 通常放在对话的最开始
  • 用户在对话过程中看不到这个消息
  • 示例用途:
    • 设定角色:“你是一位经验丰富的Python教师”
    • 设定语言:“请用中文回答所有问题”
    • 设定行为规则:“回答要简洁且包含代码示例”
HumanMessage(用户消息)
from langchain_core.messages import HumanMessage

human_message = HumanMessage(content="请问如何使用Python打印Hello World?")
  • 代表用户输入的内容
  • 是对话中用户说的每句话
  • 可以包含问题、指令或陈述
  • 通常跟在 SystemMessage 或 AIMessage 后面
AIMessage(AI消息)
from langchain_core.messages import AIMessage

ai_message = AIMessage(content="print('Hello World')")
  • 代表 AI 的回复内容
  • 用于记录 AI 之前的回答
  • 在多轮对话中特别重要,帮助维持对话的连贯性
  • 通常跟在 HumanMessage 后面

3.2 多轮对话:实际使用示例

from dotenv import load_dotenv # 导入用于加载环境变量的工具
from langchain_core.messages import AIMessage, HumanMessage, SystemMessage # 导入消息类型
from langchain_openai import ChatOpenAI # 导入 OpenAI 聊天模型
# 从 .env 文件加载环境变量
load_dotenv()

# 创建一个 ChatOpenAI 模型实例
model = ChatOpenAI(model="gpt-4o-mini")

messages = [
	SystemMessage(content="解决以下数学问题"),
	HumanMessage(content="81除以9等于多少?"),
]

# 1)使用消息列表调用模型
result = model.invoke(messages)
print(f"AI的回答:{result.content}")

# 多轮对话,包含之前的对话历史
messages = [
	SystemMessage(content="解决以下数学问题"),
	HumanMessage(content="81除以9等于多少?"),
	AIMessage(content="81除以9等于9"),
	HumanMessage(content="10乘以5等于多少?"),
]

# 2)使用包含对话历史的消息列表调用模型
result = model.invoke(messages)
print(f"AI的回答:{result.content}")

四、多模型集成详解

4.1 OpenAI模型

from langchain_openai import ChatOpenAI

openai_model = ChatOpenAI(
    model="gpt-4",
    temperature=0.7,
    streaming=True
)

# 特点:
# 1. 支持流式输出
# 2. 可以设置temperature
# 3. 支持function calling

4.2 Anthropic模型

from langchain_anthropic import ChatAnthropic

anthropic_model = ChatAnthropic(
    model="claude-3-opus-20240229",
    max_tokens=1000,
    temperature=0.7
)

# 特点:
# 1. 更强的推理能力
# 2. 更好的长文本处理
# 3. 更严格的安全限制

4.3 Google模型

from langchain_google_genai import ChatGoogleGenerativeAI

google_model = ChatGoogleGenerativeAI(
    model="gemini-1.5-flash",
    temperature=0.7
)

# 特点:
# 1. 响应速度快
# 2. 支持多模态输入
# 3. 价格相对较低

总结

通过本文,我们从基础使用入手,逐步深入到更复杂的应用场景。

在下一篇文章中,我们将深入探讨PromptTemplate的用法。学习到如何利用PromptTemplate来优化你的提示设计,从而提升模型的响应质量和准确性。我还会分享一些实用的案例和技巧,帮助你在实际应用中更好地发挥LangChain的潜力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值