使用LangChain开发智能聊天机器人

前面介绍了如何使用 OpenAI 的对话补全接口,并给出了 curl 和 python 的示例。可以看到,直接调用 HTTP API 接口,代码量比较大,需要处理很多细节。为此,LangChain 提供了大模型接口的封装,可以方便地调用大模型接口。

LangChain 是一个用于构建和部署多模态 AI 应用的框架。它提供了一系列的工具和组件,帮助开发者快速构建和部署 AI 应用,包括:大模型接口、提示词模板、链、代理、工具、回调函数等等。本文先介绍如何使用 LangChain 调用大模型接口。

安装

LangChain 的安装非常简单,只需使用 pip 安装即可:

1
2
pip install langchain
pip install langchain-openai

使用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
from langchain_openai import ChatOpenAI

# 设置接口地址常量,这里使用的是阿里云的接口地址
OPENAI_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1"

# 设置 API Key 常量(注意保密)
OPENAI_API_KEY = "sk-..."

llm = ChatOpenAI(
    base_url=OPENAI_BASE_URL,
    api_key=OPENAI_API_KEY,
    model="deepseek-v3",
)

result = llm.invoke([
  ("system", "你是一个智能聊天机器人,名字叫小菜。"),
  ("user", "你好,小菜。")
])

print(result.content) # 输出:你好!很高兴见到你,有什么我可以帮你的吗?

智能聊天机器人

使用LangChain之后,调用大模型的代码得到极大简化。我们稍加修改,加上一个简单的命令行交互,就可以实现一个智能聊天机器人。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from langchain_openai import ChatOpenAI

# 设置接口地址常量,这里使用的是阿里云的接口地址
OPENAI_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1"

# 设置 API Key 常量(注意保密)
OPENAI_API_KEY = "sk-..."

# 创建大模型接口实例
llm = ChatOpenAI(
    base_url=OPENAI_BASE_URL,
    api_key=OPENAI_API_KEY,
    model="deepseek-v3",
)

# 系统提示词
systemPrompts = [
  ("system", "你是一个智能聊天机器人,名字叫小菜。"),
]

# 对话历史,一开始是空的
history = []

while True:
    # 获取用户输入
    user_input = input("你:")

    # 调用大模型接口
    result = llm.invoke(systemPrompts + history + [("user", user_input)])

    # 输出大模型接口的返回结果
    print("小菜:", result.content)

    # 更新对话历史(只保留最后10条,即5轮对话历史)
    history.extend([
      ("user", user_input),
      ("assistant", result.content),
    ])
    history = history[-10:]

程序跑起来后,我们就可以跟小菜聊天了,这是我调戏他的例子:

注意到,由于上下文大小的限制,小菜最多只能记住5轮对话(红框部分)。因此在对话的最后,他已经忘了我叫“小明”了。我们在开发AI应用时,需要充分考虑这一点。

大模型的上下文大小是有限的,我们不可能把全部对话历史都传过去。另一方面,对话历史也并非越多越好,过多的历史反而会影响大模型的表现。因此,需要根据具体场景选择合适的上下文大小。

总结

使用LangChain调用大模型接口,代码量大大减少,代码更易读。本文仅用短短几十行代码,就实现了一个智能聊天机器人。这是一个不错的起点,我们可以在此基础上,进一步构建更复杂的应用。

【小菜学AI】系列文章首发于公众号【小菜学编程】,敬请关注:

【小菜学AI】系列文章首发于公众号【小菜学编程】,敬请关注: