第一章:AI与LangChain初探 —— 你的第一个“智能”程序

第一章:AI与LangChain初探 ------ 你的第一个"智能"程序

你好,我是阿扩。欢迎来到我们实战系列的第一站!

在上一篇引言里,我们聊到了LangChain就像一套强大的"乐高积木"。那么今天,我们就从这套积木中,拿出最核心的那一块------大语言模型(LLM),并用最简单的方式将它启动。你将亲手编写并运行你的第一个"智能"程序,见证AI如何响应你的指令。

准备好了吗?让我们开始吧!

1.1 本节目标

  1. 成功配置好LangChain与通义千问(Qwen)模型的开发环境。
  2. 理解LangChain调用大语言模型的最基本流程。
  3. 编写并成功运行一个程序,向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

  1. 访问阿里云的百炼大模型平台

  2. 登录你的阿里云账户(如果没有,需要注册一个)。

  3. 在左侧导航栏找到并进入"API-KEY管理",点击"创建新的API-KEY"来生成你的专属Key。

  4. 重要 :将获取到的API Key设置为环境变量。这是最安全和推荐的做法,避免将密钥硬编码在代码里。

    • 在macOS或Linux系统 :

      bash 复制代码
      export DASHSCOPE_API_KEY="你的API Key"
    • 在Windows系统 :

      bash 复制代码
      set 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 代码逻辑详解

让我们回顾一下刚才的代码,弄懂每一行都在做什么:

  1. from ... import ... : 我们从LangChain的库中导入了两个关键工具:ChatTongyi(通义千问的"电话听筒")和 HumanMessage(包装我们问题的"信封")。
  2. llm = ChatTongyi() : 这里,我们创建了ChatTongyi类的一个实例,并赋值给变量llm。从现在起,llm就代表了那个连接着云端智慧的AI模型。因为我们之前设置了环境变量,LangChain会自动找到并使用它,无需在代码里写任何密钥。
  3. messages = [HumanMessage(...)] : 我们把想问的问题 "请用一句话介绍你自己..." 放进了一个叫 HumanMessage 的"信封"里。LangChain规定,与聊天模型沟通时,输入必须是这类消息对象的列表(list)。这为我们以后实现多轮对话打下了基础。
  4. response = llm.invoke(messages) : 这是最神奇的一步!我们调用了llm对象的 invoke 方法(invoke意为"调用、触发"),并把打包好的消息列表传给它。程序会在这里暂停一下,因为LangChain正在通过网络与通义千问模型进行通信。当模型处理完我们的问题并生成回答后,invoke方法会返回一个结果。
  5. print(response.content) : 模型返回的response不是一个简单的字符串,而是一个 AIMessage 对象。这个对象里包含了AI的回答以及其他一些信息。我们通过访问它的 .content 属性,就能拿到我们最关心的、AI生成的文本内容。

1.6 总结与思考

在这一章,我们迈出了至关重要的一步。我们没有深入复杂的理论,而是通过一个简单的动手实践,完成了从环境配置到成功运行的全过程。

本章重点回顾:

  • 我们学会了如何安装LangChain及相关库。
  • 我们知道了如何获取和配置API Key(通过环境变量)。
  • 我们掌握了调用LLM的最简三部曲:实例化模型 (ChatTongyi()) -> 准备输入 (HumanMessage) -> 调用模型 (.invoke())

这只是一个起点,但你已经亲手验证了LangChain的强大与便捷。它将复杂的API调用过程,简化成了短短几行优雅的Python代码。

思考与练习: 现在,轮到你来"玩"了!尝试修改 hello_ai.py 文件中 HumanMessagecontent 内容,向AI提出一些你感兴趣的问题,看看它会如何回答。比如:

  • "帮我写一首关于程序员的五言绝句。"
  • "用简单的语言解释一下什么是'黑洞'?"
  • "我今天心情有点低落,能给我一些鼓励吗?"

大胆去尝试吧!探索与AI对话的乐趣,是学好这门技术的最佳动力。在下一章,我们将深入了解LangChain中更多关于"模型(Models)"的知识。期待与你再次相见!

相关推荐
大千AI3 小时前
LangChain Core架构解析:模块化设计与LCEL原语实现原理
langchain
Chatopera 研发团队3 小时前
智能体开发,实现自定义知识库,基于 LangChain,qwen 7b, ollama, chatopera | LLMs
langchain
硅谷神农4 小时前
第二章:模型 (Models) —— AI应用的大脑
langchain
你那个道上的21 小时前
LangChain4j学习与实践
langchain·ai编程
缘友一世1 天前
LangChain【8】之工具包深度解析:从基础使用到高级实践
langchain
bytebeats1 天前
强大的代理通信其实是 A2A + MCP + LangChain
langchain·mcp
架构师那点事儿1 天前
一文带你俯瞰大模型领域的世界
langchain·aigc·ai编程
用户84913717547162 天前
🚀5 分钟实现 Markdown 智能摘要生成器:LangChain + OpenAI 实战教程
langchain·openai
金汐脉动2 天前
实践指南:从零开始搭建RAG驱动的智能问答系统
langchain