跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

Python 与 LangChain 集成通义千问构建聊天机器人

介绍如何使用 Python 和 LangChain 框架接入阿里云通义千问大模型,快速搭建一个具备上下文对话能力的聊天机器人。内容涵盖环境配置、API Key 申请、基础代码实现、提示词工程优化以及对话记忆功能的添加。通过模块化设计,帮助开发者降低大模型应用开发门槛,实现从单轮问答到多轮对话的升级,并提供进阶优化方向供参考。

暖阳发布于 2025/2/6更新于 2026/6/820 浏览
Python 与 LangChain 集成通义千问构建聊天机器人

Python 与 LangChain 集成通义千问构建聊天机器人

前言

LangChain 是一个用于开发由大型语言模型(Large Language Models,简称 LLMs)驱动的应用程序的框架。它提供了一个灵活的架构,使得开发者可以构建具有上下文感知能力和推理能力的应用程序,这些应用程序可以利用公司的数据和 APIs。

该框架主要由以下几个部分组成:

  • LangChain 库:包含 Python 和 JavaScript 库。提供了各种组件的接口和集成,一个基本的运行时,用于将这些组件组合成链和代理,以及现成的链和代理的实现。
  • LangChain 模板:一系列易于部署的参考架构,用于各种任务。
  • LangServe:一个用于将 LangChain 链部署为 REST API 的库。
  • LangSmith:一个开发者平台,让你可以调试、测试、评估和监控基于任何 LLM 框架构建的链,并且与 LangChain 无缝集成。

LangChain 本身并不开发 LLMs,它的核心理念是为各种 LLMs 提供通用的接口,降低开发者的学习成本,方便开发者快速地开发复杂的 LLMs 应用。

本文将介绍在 Python 环境下使用 LangChain 框架,接入阿里云通义千问大模型,构建一个基础的 AI 聊天机器人的完整流程。

LangChain 核心概念

LangChain 框架的核心理念是将语言模型与应用程序的其他部分无缝集成,以创建具有数据感知和自主性的智能应用程序。

关键特点

  1. 数据感知:允许开发者将语言模型连接到各种数据源,使其能够理解和处理来自这些源的信息。
  2. 自主性:通过 LangChain,语言模型可以与其环境交互,执行任务,如回答问题、执行命令或与用户进行交互。
  3. 组件化:提供了一个抽象层,使得开发者可以轻松地使用语言模型。这些组件是模块化的,易于使用和集成。
  4. 现成的链:提供了一系列结构化的组件集合,被称为'现成的链',用于完成特定的高级任务。
  5. 易于定制和扩展:由于组件化的特性,使得定制现有链或构建新链变得容易。

主要组件

要使用 LangChain,开发人员需要导入必要的组件和工具,包括语言模型 (LLMs)、聊天模型 (chat models)、代理 (agents)、链 (chains) 和内存功能。这些组件可以组合起来创建一个能够理解、处理和响应用户输入的智能应用程序。

环境安装

首先,确保你的 Python 环境已配置好。我们需要安装 LangChain 及其相关依赖。

pip install langchain==0.2.1
pip install langchain-community==0.2.1
pip install python-dotenv==1.0.1
pip install dashscope==1.19.2
  • langchain:核心库。
  • langchain-community:第三方集成组件。
  • python-dotenv:用于管理 .env 文件中的环境变量,避免硬编码敏感信息。
  • dashscope:阿里云灵积模型服务的 SDK。

获取 API Key

为了调用通义千问模型,你需要拥有阿里云 DashScope 的 API Key。

  1. 访问 DashScope 管理控制台。
  2. 在控制台'总览'页下,点击'去开通'。
  3. 阅读服务协议,确认无误后点击'立即开通'。
  4. 进入产品控制台,创建 API Key。

注意:请妥善保管你的 API Key,不要将其直接提交到公共代码仓库中。

创建聊天机器人

1. 导入相关包

我们需要导入 LangChain 的核心组件以及通义千问的封装类。

import os
from dotenv import find_dotenv, load_dotenv
from langchain_community.llms import Tongyi
from langchain_core.runnables import RunnableSequence
from langchain.prompts import PromptTemplate

# 加载 .env 文件中的环境变量
load_dotenv(find_dotenv())
DASHSCOPE_API_KEY = os.environ["DASHSCOPE_API_KEY"]

2. 配置环境变量

在项目根目录下创建一个名为 .env 的文件,并将你的 API Key 填入其中。

DASHSCOPE_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxxxx"

3. 实例化 LLM 并定义角色

我们可以继承 Tongyi 类来指定具体的模型版本,例如 qwen-turbo 或 qwen-max。

class QwenTurboTongyi(Tongyi):
    model_name = "qwen-turbo"

class QwenMaxTongyi(Tongyi):
    model_name = "qwen-max"

def xiao_hei_zi():
    # 初始化 LLM,temperature 控制随机性,范围 0-1
    llm = QwenTurboTongyi(temperature=1)
    
    # 定义提示词模板
    template = '''
        你的名字是小黑子,当有人问问题的时候,你都会在回答的开头加上'唱,跳,rap,篮球!\n\n',然后再回答{question},内容尽量详细
    '''
    prompt = PromptTemplate(
        template=template,
        input_variables=["question"]
    )
    
    # 构建链:Prompt -> LLM
    chain = RunnableSequence(prompt | llm)
    
    # 执行查询
    question = '蔡徐坤是谁?'
    res = chain.invoke({"question": question})
    print(res)

if __name__ == "__main__":
    xiao_hei_zi()

4. 增强版:添加对话记忆

上述代码是无状态的,每次提问都是独立的。为了让机器人具备'记忆',我们需要引入 Memory 组件。

from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain

# 初始化带有记忆的对话链
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
conversation = ConversationChain(
    llm=QwenTurboTongyi(temperature=0.7),
    memory=memory,
    verbose=False
)

# 模拟多轮对话
print(conversation.predict(input="你好,我是小黑子吗?"))
print(conversation.predict(input="刚才提到的 rap 是什么意思?"))

在此示例中,ConversationBufferMemory 会保存之前的对话历史,使得模型能够根据上下文回答问题。

5. 运行与调试

运行脚本前,请确保 .env 文件存在且 API Key 正确。如果遇到问题,请检查网络连接及 API Key 权限。

常见错误排查:

  • API Key 无效:检查 .env 文件路径是否正确,Key 是否复制完整。
  • 网络超时:DashScope 服务可能受网络环境影响,建议检查防火墙设置。
  • Token 限制:注意模型的上下文窗口限制,过长的对话可能导致截断。

小结

本文介绍了如何使用 LangChain 框架快速接入阿里云通义千问大模型,实现了一个基础且具备记忆功能的聊天机器人。通过模块化设计,开发者可以轻松扩展更多功能,如联网搜索、知识库检索等。掌握这一流程,将为后续开发更复杂的大模型应用打下坚实基础。

进阶方向

在实际生产环境中,你还可以考虑以下优化方向:

  1. 流式输出:使用 stream 方法实现打字机效果,提升用户体验。
  2. RAG(检索增强生成):结合本地文档库,让机器人回答特定领域知识。
  3. 安全过滤:增加输入输出过滤机制,防止敏感信息泄露。
  4. 多模态支持:尝试接入通义万相等视觉模型,实现图文交互。

通过不断迭代和优化,你可以构建出更加智能、实用的企业级 AI 应用。

目录

  1. Python 与 LangChain 集成通义千问构建聊天机器人
  2. 前言
  3. LangChain 核心概念
  4. 关键特点
  5. 主要组件
  6. 环境安装
  7. 获取 API Key
  8. 创建聊天机器人
  9. 1. 导入相关包
  10. 加载 .env 文件中的环境变量
  11. 2. 配置环境变量
  12. 3. 实例化 LLM 并定义角色
  13. 4. 增强版:添加对话记忆
  14. 初始化带有记忆的对话链
  15. 模拟多轮对话
  16. 5. 运行与调试
  17. 小结
  18. 进阶方向
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Nacos 构建 Spring Cloud Alibaba 服务发现体系
  • Docker Desktop 中文界面切换工具设计与实现
  • Java 常用数据结构及核心 API(开发 / 刷题高频版)
  • IntelliJ IDEA、Spring Boot、JDK 与 Maven 版本兼容性指南
  • Linux 系统学习:深入剖析 Git 原理与使用进阶
  • Web Audio API 音频可视化技术拆解与实现
  • C++ 继承机制详解:从概念到多继承模型
  • Vue2.x 使用 SVG 实现不封闭圆形进度条及组件封装
  • 数字 IC 前端设计:前仿篇 (VCS, DVE, Verdi)
  • 面壁智能 CTO 曾国洋:探索高效大模型与 AGI 之路
  • Vivado 与 Modelsim 联合仿真环境配置指南
  • SQL 注入防御新思路:Kingbase 内核级防火墙白名单机制
  • 在 Cursor 中配置和使用 MCP 服务
  • Cursor Chat Browser:管理 AI 聊天历史的 Web 工具
  • Python 快速入门指南:基础语法与环境搭建
  • 基于 DeepSeek 与 Cursor 构建智能代码审查工具实战
  • C++ Qt 摄像头视频采集实战:V4L2 与多线程
  • VibeThinker-1.5B-APP:小模型在编程与数学推理中的优势与部署
  • Linux Shell 脚本基础语法与自动化运维实战
  • 飞算 JavaAI 插件安装与 Spring Boot 项目生成实战

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online