LangChain + 通义千问(Qwen)快速入门:10分钟构建你的第一个 AI Agent

0 阅读4分钟

LangChain + 通义千问(Qwen)快速入门:10分钟构建你的第一个 AI Agent

随着大模型技术的发展,越来越多开发者开始使用 Agent 架构 来构建 AI 应用。而在 Python 生态中,最流行的 Agent 框架之一就是 LangChain

如果你使用的是 阿里云生态,那么 Qwen(通义千问) 是一个非常不错的模型选择,它可以通过 DashScope API 进行调用。

本文将带你 从 0 到 1 构建一个基于 LangChain + Qwen 的 AI Agent,整个过程大约只需要 10 分钟。

最终我们会实现一个具备以下能力的 AI Agent:

  • 可以回答用户问题
  • 可以调用工具(如天气查询)
  • 具备对话记忆
  • 支持结构化输出

一、环境准备

在开始之前,我们需要准备几个基础环境。

1 安装依赖

首先安装必要的 Python 包:

pip install langchain langchain-community dashscope langgraph

这些依赖分别用于:

依赖作用
langchainAgent 框架
dashscope调用千问 API
langgraphAgent 状态与记忆

2 获取通义千问 API Key

访问阿里云百炼平台:

dashscope.console.aliyun.com/

创建 API Key,然后在本地设置环境变量。

Linux / macOS:

export DASHSCOPE_API_KEY="your_api_key"

Windows:

set DASHSCOPE_API_KEY=your_api_key

二、构建第一个 LangChain Agent

我们先创建一个最简单的 Agent,让它可以回答问题并调用工具。

1 定义一个工具

Agent 的核心能力之一是 Tool Calling(工具调用)

例如我们创建一个天气工具:

from langchain.agents import create_agent

def get_weather(city: str) -> str:
    """获取指定城市天气"""
    return f"{city}今天是晴天,气温25度"

2 创建 Agent

接下来创建一个 Agent,并指定使用 Qwen 模型

agent = create_agent(
    model="qwen-plus",
    tools=[get_weather],
    system_prompt="You are a helpful assistant"
)

3 运行 Agent

现在我们可以运行 Agent:

response = agent.invoke(
    {
        "messages": [
            {"role": "user", "content": "北京天气怎么样"}
        ]
    }
)

print(response)

此时 Agent 会:

  1. 解析用户问题
  2. 判断是否需要调用工具
  3. 自动调用 get_weather
  4. 返回最终答案

这就是 Agent 的基本运行机制


三、构建一个真实可用的 Agent

上面的 Demo 只是一个简单示例。
在真实应用中,我们通常还需要:

  • 更明确的 Prompt
  • 外部数据工具
  • 结构化输出
  • 对话记忆

下面我们逐步升级这个 Agent。


1 定义系统 Prompt

系统 Prompt 决定 Agent 的行为。

SYSTEM_PROMPT = """
你是一名专业天气助手。

你可以使用两个工具:

1 get_weather_for_location
获取某个城市天气

2 get_user_location
获取用户位置

如果用户没有说明城市,
请先获取用户位置。
"""

好的 Prompt 可以显著提升 Agent 的稳定性。


2 创建工具(Tools)

LangChain 提供 @tool 装饰器来定义工具。

from langchain.tools import tool

@tool
def get_weather_for_location(city: str) -> str:
    """获取指定城市天气"""
    return f"{city}今天晴天,25℃"

再创建一个获取用户位置的工具:

from dataclasses import dataclass
from langchain.tools import ToolRuntime

@dataclass
class Context:
    user_id: str

@tool
def get_user_location(runtime: ToolRuntime[Context]) -> str:
    """根据用户ID获取用户位置"""

    if runtime.context.user_id == "1":
        return "北京"
    return "上海"

LangChain 会自动把:

  • 工具名称
  • 参数
  • 描述

加入到模型 Prompt 中。


3 配置 Qwen 模型

LangChain 提供统一的模型初始化方式:

from langchain.chat_models import init_chat_model

model = init_chat_model(
    "qwen-plus",
    temperature=0.5,
    timeout=10,
    max_tokens=1000
)

常见模型包括:

模型特点
qwen-turbo速度快
qwen-plus通用能力强
qwen-max推理能力最强

4 定义结构化输出

在生产环境中,我们通常希望 AI 输出 固定结构的数据

from dataclasses import dataclass

@dataclass
class ResponseFormat:

    answer: str
    weather: str | None = None

这样可以方便后端系统解析 AI 结果。


5 添加对话记忆

为了让 Agent 能够进行多轮对话,我们需要加入 Memory

from langgraph.checkpoint.memory import InMemorySaver

checkpointer = InMemorySaver()

生产环境通常会使用:

  • Redis
  • PostgreSQL
  • MongoDB

来保存对话历史。


6 创建完整 Agent

最后将所有组件组合在一起:

from langchain.agents.structured_output import ToolStrategy
from langchain.agents import create_agent

agent = create_agent(
    model=model,
    system_prompt=SYSTEM_PROMPT,
    tools=[get_user_location, get_weather_for_location],
    context_schema=Context,
    response_format=ToolStrategy(ResponseFormat),
    checkpointer=checkpointer
)

7 运行 Agent

config = {
    "configurable": {
        "thread_id": "1"
    }
}

response = agent.invoke(
    {
        "messages": [
            {"role": "user", "content": "今天天气怎么样"}
        ]
    },
    config=config,
    context=Context(user_id="1")
)

print(response["structured_response"])

示例输出:

ResponseFormat(
  answer="北京今天阳光明媚,非常适合出门。",
  weather="北京晴天,25℃"
)

四、继续对话

因为我们启用了 对话记忆,所以可以继续聊天。

response = agent.invoke(
    {
        "messages": [
            {"role": "user", "content": "谢谢"}
        ]
    },
    config=config,
    context=Context(user_id="1")
)

Agent 会记住之前的上下文。


五、总结

通过本文,我们完成了一个 LangChain + Qwen Agent 的完整构建流程

  1. 配置 DashScope API
  2. 创建基础 Agent
  3. 编写工具 Tools
  4. 配置 Qwen 模型
  5. 定义结构化输出
  6. 添加对话记忆
  7. 构建完整 Agent

这种架构可以用于很多实际场景,例如:

  • AI Copilot
  • 企业知识库问答
  • AI 自动化工作流
  • 数据分析助手

随着 Agent 技术的发展,LLM + Tools + Memory 正逐渐成为 AI 应用开发的主流架构。