Python 使用 LangChain 集成通义千问构建聊天机器人
本文介绍如何使用 Python 和 LangChain 框架集成阿里云通义千问大模型。通过安装 langchain-community 和 dashscope 库,配置环境变量获取 API Key,实例化 Tongyi 类并设置 PromptTemplate 模板,即可快速构建具备特定角色设定的 AI 聊天机器人。文中涵盖了环境搭建、代码编写、模型参数调节及安全最佳实践,帮助开发者低成本接入大语言模型能力。

本文介绍如何使用 Python 和 LangChain 框架集成阿里云通义千问大模型。通过安装 langchain-community 和 dashscope 库,配置环境变量获取 API Key,实例化 Tongyi 类并设置 PromptTemplate 模板,即可快速构建具备特定角色设定的 AI 聊天机器人。文中涵盖了环境搭建、代码编写、模型参数调节及安全最佳实践,帮助开发者低成本接入大语言模型能力。

LangChain 是一个用于开发由语言模型驱动的应用程序的框架,致力于简化 AI 模型应用的开发。它通过提供一系列组件和工具,帮助开发者轻松完成大语言模型(LLM)应用的集成与编排。目前 LangChain 支持 Python 和 JavaScript 两个主要版本,并集成了多种大语言模型及第三方 API。
本文将介绍如何在 Python 环境下使用 LangChain 集成阿里云通义千问(Qwen)大模型,实现一个具备特定角色设定的基础 AI 聊天机器人。
首先,确保你的 Python 环境已配置好。在终端或命令行中执行以下命令安装必要的依赖包:
pip install langchain
pip install langchain-community
pip install python-dotenv
pip install dashscope
langchain:核心框架库。langchain-community:包含各种第三方集成,如大语言模型接口。python-dotenv:用于加载环境变量文件,避免硬编码敏感信息。dashscope:阿里云灵积模型服务的官方 SDK。在使用通义千问模型之前,需要获取阿里云的 API Key。
建议将 API Key 保存在环境变量中,而不是直接写在代码里,以确保安全性。
在 VSCode 或 PyCharm 等编辑器中创建 Python 文件,编写以下代码:
import os
from dotenv import find_dotenv, load_dotenv
# 加载环境变量
load_dotenv(find_dotenv())
DASHSCOPE_API_KEY = os.environ["DASHSCOPE_API_KEY"]
from langchain_community.llms import Tongyi
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
os 和 dotenv:用于安全地读取环境变量中的 DASHSCOPE_API_KEY。Tongyi:LangChain 封装的通义千问大语言模型类。PromptTemplate:提示词模板,用于定义模型回答的结构和约束。LLMChain:将 LLM 与 Prompt 连接起来的链式调用对象。接下来,实例化一个 LLM 对象,并定义其角色行为。通过设置 temperature 参数可以调节文本生成的多样性。
# temperature=1 表示较高的多样性,回答更丰富;0 则更准确、保守
llm = Tongyi(temperature=1)
template = '''
你的名字是小黑子,当人问问题的时候,你都会在开头加上'唱,跳,rap,篮球!',然后再回答{question}
'''
prompt = PromptTemplate(
template=template,
input_variables=["question"] # question 是用户输入的内容
)
chain = LLMChain(
llm=llm,
prompt=prompt
)
question = '你是谁'
res = chain.invoke(question) # 运行链
print(res['text']) # 打印结果
temperature:控制随机性。大于 0 时回答更具创造性,但可能产生幻觉;为 0 时输出更确定。res['text']:返回结果字典中包含模型生成的文本内容。创建一个 .env 文件存放密钥:
DASHSCOPE_API_KEY="你的实际 apikey"
确保 .env 文件位于项目根目录且未被提交到版本控制系统中。
在早期的 LangChain 版本或特定集成中,默认模型可能是 qwen-plus。如果需要指定更高性能的 qwen-max 或其他模型,通常建议在初始化参数中明确指定模型名称。
如果当前版本未直接暴露模型选择参数,请参考官方文档确认是否支持通过环境变量或构造函数参数指定模型。修改底层源代码(如 llms.py)来强制切换模型并非推荐做法,因为这会导致升级困难且不稳定。正确的做法是查阅最新文档,使用支持的配置方式。
永远不要将 API Key 硬编码在代码中。使用 .env 文件或操作系统的环境变量管理敏感信息。在 Git 仓库中添加 .env 到 .gitignore 文件中。
在实际生产环境中,网络请求可能会失败,API 也可能返回错误。建议添加异常捕获机制:
try:
res = chain.invoke(question)
print(res['text'])
except Exception as e:
print(f"发生错误:{e}")
Prompt 的质量直接影响模型效果。可以通过以下方式优化:
本文演示了如何使用 Python 和 LangChain 快速接入通义千问大模型。通过简单的配置和代码编写,即可构建具备自定义行为的聊天机器人。随着 LangChain 生态的完善,开发者可以更便捷地利用大模型能力构建复杂应用,如智能客服、知识库问答系统等。后续可进一步探索 Agent 功能、RAG(检索增强生成)以及多模态能力扩展。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online