一、LangChain是什么?为什么是智能体开发的首选?

LangChain是一个专为构建大模型应用设计的开发框架,其模块化设计丰富的工具链让智能体开发更高效。相比传统开发,LangChain提供以下核心优势:

  • 内置Agent模板:快速实现工具调用、多轮对话、记忆管理
  • 无缝对接主流大模型:支持OpenAI、ChatGLM、DeepSeek等
  • 灵活可扩展:通过Chains组合实现复杂业务逻辑

二、快速开始:环境搭建与基础配置
  1. 安装依赖

    pip install langchain langchain-openai python-dotenv
    

    .env文件中配置OpenAI API Key:

    OPENAI_API_KEY = "sk-xxx"
    
  2. 初始化智能体骨架

    from langchain.agents import AgentExecutor, create_openai_tools_agent
    from langchain_openai import ChatOpenAI
    from langchain_core.prompts import ChatPromptTemplate
    
    llm = ChatOpenAI(model="gpt-3.5-turbo")
    

三、新手入门:10分钟实现聊天机器人

目标:创建一个能回答基础问题的智能体

# 1. 定义Prompt模板
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个友好的人工智能助手"),
    ("human", "{input}")
])

# 2. 创建基础Agent
agent = create_openai_tools_agent(llm, tools=[], prompt=prompt)

# 3. 封装执行器
agent_executor = AgentExecutor(agent=agent, tools=[], verbose=True)

# 4. 运行测试
response = agent_executor.invoke({"input": "你好!你是谁?"})
print(response["output"])

输出效果

你好!我是一个人工智能助手,随时准备为您提供帮助。

四、进阶实战:工具调用与多轮对话

场景:让智能体调用天气API查询实时数据

  1. 自定义工具开发

    from langchain.tools import tool
    
    @tool
    def get_weather(city: str) -> str:
        """获取指定城市的天气信息(模拟实现)"""
        weather_data = {
            "北京": "晴,25℃",
            "上海": "多云,28℃"
        }
        return weather_data.get(city, "暂不支持该城市")
    
  2. 构建支持工具调用的智能体

    # 初始化带工具的Agent
    tools = [get_weather]
    agent = create_openai_tools_agent(llm, tools, prompt)
    executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
    
    # 执行复杂查询
    response = executor.invoke({
        "input": "北京现在天气怎么样?"
    })
    print(response["output"])  # 输出:北京当前天气:晴,25℃
    
  3. 实现多轮对话记忆

    from langchain.memory import ConversationBufferMemory
    
    memory = ConversationBufferMemory(memory_key="chat_history")
    executor_with_memory = AgentExecutor(
        agent=agent, 
        tools=tools, 
        memory=memory,
        verbose=True
    )
    
    # 连续对话测试
    executor_with_memory.invoke({"input": "北京天气如何?"})  # 回答天气
    executor_with_memory.invoke({"input": "那上海呢?"})    # 能关联上下文
    

五、企业级项目:电商客服智能体开发

需求:处理退货申请,自动调用订单查询接口

  1. 定义业务工具集

    @tool
    def search_order(order_id: str) -> dict:
        """模拟订单查询系统"""
        return {
            "status": "已发货",
            "product": "智能手表"
        }
    
    @tool
    def create_return_request(order_id: str, reason: str) -> str:
        """创建退货工单"""
        return f"退货申请已提交(订单:{order_id},原因:{reason})"
    
  2. 构建专业Agent

    # 定制系统Prompt
    system_prompt = """你是电商客服助手,严格按照以下规则处理请求:
    1. 用户提及退货时,必须先查询订单状态
    2. 仅允许已发货订单提交退货申请
    """
    prompt = ChatPromptTemplate.from_messages([
        ("system", system_prompt),
        ("human", "{input}"),
        MessagesPlaceholder(variable_name="agent_scratchpad")
    ])
    
    # 创建执行器
    tools = [search_order, create_return_request]
    agent = create_openai_tools_agent(llm, tools, prompt)
    executor = AgentExecutor(agent=agent, tools=tools, max_iterations=3)
    
  3. 测试业务逻辑

    response = executor.invoke({
        "input": "我想退货,订单号123456"
    })
    print(response["output"]) 
    # 输出:已查询订单123456状态为已发货,已为您提交退货申请
    

六、精通技巧:高级功能与性能优化
  1. 异步并发处理

    # 异步调用提高响应速度
    async def async_query():
        response = await executor.ainvoke({"input": "北京天气"})
        print(response["output"])
    
    import asyncio
    asyncio.run(async_query())
    
  2. 自定义工具的高级用法

    from langchain.tools import StructuredTool
    
    def complex_calculation(a: float, b: float) -> dict:
        """执行复杂数学计算"""
        return {
            "sum": a + b,
            "product": a * b
        }
    
    calc_tool = StructuredTool.from_function(
        func=complex_calculation,
        name="AdvancedCalculator",
        description="执行复杂数学运算"
    )
    
  3. 监控与调试

    # 启用详细日志
    import langchain
    langchain.debug = True
    
    # 查看中间步骤
    response = executor.invoke(
        {"input": "计算3的平方"}, 
        return_intermediate_steps=True
    )
    print(response["intermediate_steps"])
    

你的第一个智能体已上线!

通过本文,你已经掌握了从基础对话到企业级智能体的开发全流程。LangChain的强大之处在于它的灵活架构丰富生态,无论是简单的问答机器人还是复杂的业务系统都能游刃有余。

立即动手尝试文中的代码示例,在评论区分享你的智能体作品吧!关注我的账号,获取更多大模型开发实战技巧~ 💡


资源推荐

Logo

一站式 AI 云服务平台

更多推荐