第一章:AI与LangChain初探 ------ 你的第一个"智能"程序
你好,我是阿扩。欢迎来到我们实战系列的第一站!
在上一篇引言里,我们聊到了LangChain就像一套强大的"乐高积木"。那么今天,我们就从这套积木中,拿出最核心的那一块------大语言模型(LLM),并用最简单的方式将它启动。你将亲手编写并运行你的第一个"智能"程序,见证AI如何响应你的指令。
准备好了吗?让我们开始吧!
1.1 本节目标
- 成功配置好LangChain与通义千问(Qwen)模型的开发环境。
- 理解LangChain调用大语言模型的最基本流程。
- 编写并成功运行一个程序,向AI提问并获得回答。
1.2 核心概念速览
在今天的实践中,有三个核心概念,我们先用一个简单的比喻来理解它:
- 大语言模型 (LLM) :想象它是一位住在云端的、无所不知的"智慧先知"。这位先知能听懂你的问题,并给出充满智慧的回答。在我们的例子里,这位先知就是阿里的通义千问(Qwen)。
- API Key :这位"先知"不是对谁都有求必应的。你需要一个特殊的"信物"来证明你的身份,才能与他对话。这个信物,就是API Key。它是一串独特的字符串,代表了你的使用权限。
- LangChain:我们自己(Python代码)和"先知"(LLM)说的语言不同,而且先知住在遥远的云端。LangChain就扮演了**"超级电话"**的角色。我们只需要通过LangChain这个电话,用标准的方式(Python代码)拨号并提问,它就会负责接通云端的先知,传递我们的问题,并把先知的回答转达给我们。
所以,我们今天的任务就是:拿到信物(API Key),通过超级电话(LangChain),向智慧先知(Qwen)问一个问题。
1.3 LangChain组件解析
今天我们只会用到一个最基础的LangChain组件,它属于"模型(Models)"这个类别:
ChatTongyi
: 这是LangChain社区(langchain-community
)提供的一个专门用来与阿里通义千问聊天模型进行交互的类。你可以把它理解为LangChain为通义千问量身定做的一个"电话听筒"。通过实例化这个类,我们就创建了一个可以直接与通义千问对话的对象。
1.4 实战代码演练
理论说再多,不如亲手敲一遍代码来得实在。下面是我们的第一个AI程序的完整代码。
第一步:安装必要的库
在运行代码之前,请打开你的终端(Terminal)或命令提示符(Command Prompt),执行以下命令来安装我们需要的Python库:
bash
pip install langchain langchain_community dashscope
第二步:获取并设置API Key
-
访问阿里云的百炼大模型平台。
-
登录你的阿里云账户(如果没有,需要注册一个)。
-
在左侧导航栏找到并进入"API-KEY管理",点击"创建新的API-KEY"来生成你的专属Key。
-
重要 :将获取到的API Key设置为环境变量。这是最安全和推荐的做法,避免将密钥硬编码在代码里。
-
在macOS或Linux系统 :
bashexport DASHSCOPE_API_KEY="你的API Key"
-
在Windows系统 :
bashset DASHSCOPE_API_KEY="你的API Key"
提示 :这种在终端设置的环境变量只在当前会话有效。为了永久生效,你需要将它添加到系统的配置文件中(如
.bashrc
,.zshrc
或系统属性的环境变量设置里)。 -
第三步:编写并运行Python代码
现在,创建一个名为 hello_ai.py
的文件,将下面的代码完整地复制进去,然后运行它!
python
# 1. 导入必要的模块
# ChatTongyi 是我们与通义千问模型交互的接口
from langchain_community.chat_models import ChatTongyi
# HumanMessage 是用来表示用户提问的消息类型
from langchain_core.messages import HumanMessage
def main():
"""主函数,执行AI问答流程"""
print("你好,我是你的第一个AI程序!")
# 2. 实例化模型
# 这里我们创建了一个通义千问模型的实例。
# LangChain会自动从环境变量中寻找名为 DASHSCOPE_API_KEY 的密钥。
llm = ChatTongyi()
# 3. 准备输入信息
# 我们将问题"请用一句话介绍你自己,并说一句问候。"包装成一个HumanMessage对象。
# 这是LangChain中与模型交互的标准格式。
messages = [
HumanMessage(content="请用一句话介绍你自己,并说一句问候。")
]
# 4. 调用模型并获取回答
# 使用 .invoke() 方法,就像是按下了电话的呼叫按钮。
# LangChain会将我们的消息发送给通义千问,并等待回复。
print("正在思考中...")
response = llm.invoke(messages)
# 5. 打印模型的回答
# response 是一个AIMessage对象,我们通过 .content 属性获取其文本内容。
print("\nAI的回答是:")
print(response.content)
if __name__ == "__main__":
main()
当你运行 python hello_ai.py
后,稍等片刻,你将会在终端看到类似下面的输出:
erlang
你好,我是你的第一个AI程序!
正在思考中...
AI的回答是:
我是一个由阿里巴巴开发的人工智能语言模型,很高兴认识你!
恭喜你!你已经成功地让AI为你工作了!
1.5 代码逻辑详解
让我们回顾一下刚才的代码,弄懂每一行都在做什么:
from ... import ...
: 我们从LangChain的库中导入了两个关键工具:ChatTongyi
(通义千问的"电话听筒")和HumanMessage
(包装我们问题的"信封")。llm = ChatTongyi()
: 这里,我们创建了ChatTongyi
类的一个实例,并赋值给变量llm
。从现在起,llm
就代表了那个连接着云端智慧的AI模型。因为我们之前设置了环境变量,LangChain会自动找到并使用它,无需在代码里写任何密钥。messages = [HumanMessage(...)]
: 我们把想问的问题"请用一句话介绍你自己..."
放进了一个叫HumanMessage
的"信封"里。LangChain规定,与聊天模型沟通时,输入必须是这类消息对象的列表(list
)。这为我们以后实现多轮对话打下了基础。response = llm.invoke(messages)
: 这是最神奇的一步!我们调用了llm
对象的invoke
方法(invoke意为"调用、触发"),并把打包好的消息列表传给它。程序会在这里暂停一下,因为LangChain正在通过网络与通义千问模型进行通信。当模型处理完我们的问题并生成回答后,invoke
方法会返回一个结果。print(response.content)
: 模型返回的response
不是一个简单的字符串,而是一个AIMessage
对象。这个对象里包含了AI的回答以及其他一些信息。我们通过访问它的.content
属性,就能拿到我们最关心的、AI生成的文本内容。
1.6 总结与思考
在这一章,我们迈出了至关重要的一步。我们没有深入复杂的理论,而是通过一个简单的动手实践,完成了从环境配置到成功运行的全过程。
本章重点回顾:
- 我们学会了如何安装LangChain及相关库。
- 我们知道了如何获取和配置API Key(通过环境变量)。
- 我们掌握了调用LLM的最简三部曲:实例化模型 (
ChatTongyi()
) -> 准备输入 (HumanMessage
) -> 调用模型 (.invoke()
)。
这只是一个起点,但你已经亲手验证了LangChain的强大与便捷。它将复杂的API调用过程,简化成了短短几行优雅的Python代码。
思考与练习: 现在,轮到你来"玩"了!尝试修改 hello_ai.py
文件中 HumanMessage
的 content
内容,向AI提出一些你感兴趣的问题,看看它会如何回答。比如:
- "帮我写一首关于程序员的五言绝句。"
- "用简单的语言解释一下什么是'黑洞'?"
- "我今天心情有点低落,能给我一些鼓励吗?"
大胆去尝试吧!探索与AI对话的乐趣,是学好这门技术的最佳动力。在下一章,我们将深入了解LangChain中更多关于"模型(Models)"的知识。期待与你再次相见!