HiHuo
首页
博客
手册
工具
关于
首页
博客
手册
工具
关于
  • AI Agent 实战指南

    • AI Agent开发实战教程 (2024最新)
    • 第一章: AI Agent核心概念
    • 第二章: LangChain快速上手
    • 第三章: RAG系统实战
    • 第四章: Agent高级模式
    • 第五章: AutoGPT原理与实现
    • 第六章: 生产级Agent系统

第二章: LangChain快速上手

LangChain简介

LangChain = 最流行的Agent开发框架

核心优势:

  • 丰富的组件库(100+ tools)
  • 灵活的链式调用
  • 活跃的社区
  • 完善的文档

环境搭建

安装

pip install langchain langchain-openai python-dotenv

配置API Key

# .env文件
OPENAI_API_KEY=sk-...

# Python代码
from dotenv import load_dotenv
load_dotenv()

第一个Agent(5分钟)

简单问答Agent

from langchain_openai import ChatOpenAI
from langchain.agents import create_openai_functions_agent, AgentExecutor
from langchain.tools import tool
from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder

# 1. 定义工具
@tool
def get_weather(city: str) -> str:
    """获取城市天气"""
    # 模拟API调用
    return f"{city}今天晴天,25°C"

# 2. 初始化LLM
llm = ChatOpenAI(model="gpt-4", temperature=0)

# 3. 创建Agent
tools = [get_weather]
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个有用的助手"),
    ("user", "{input}"),
    MessagesPlaceholder(variable_name="agent_scratchpad"),
])

agent = create_openai_functions_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# 4. 运行
result = agent_executor.invoke({"input": "北京天气如何?"})
print(result["output"])

输出示例:

> Thought: 我需要调用get_weather工具
> Action: get_weather
> Action Input: 北京
> Observation: 北京今天晴天,25°C
> Final Answer: 北京今天天气晴朗,温度25°C

核心概念

1. Tools(工具)

自定义工具:

from langchain.tools import tool

@tool
def calculator(expression: str) -> float:
    """计算数学表达式"""
    return eval(expression)

@tool
def search_wikipedia(query: str) -> str:
    """搜索维基百科"""
    # 实际调用Wikipedia API
    return f"关于{query}的信息..."

2. Chains(链)

顺序链:

from langchain.chains import LLMChain, SequentialChain

# Chain 1: 生成故事大纲
chain1 = LLMChain(llm=llm, prompt=prompt1, output_key="outline")

# Chain 2: 根据大纲写故事
chain2 = LLMChain(llm=llm, prompt=prompt2, output_key="story")

# 串联
overall_chain = SequentialChain(
    chains=[chain1, chain2],
    input_variables=["topic"],
    output_variables=["outline", "story"]
)

result = overall_chain({"topic": "太空探险"})

3. Memory(记忆)

对话记忆:

from langchain.memory import ConversationBufferMemory

memory = ConversationBufferMemory(memory_key="chat_history")

agent_executor = AgentExecutor(
    agent=agent, 
    tools=tools,
    memory=memory,  # 添加记忆
    verbose=True
)

# 第一轮
agent_executor.invoke({"input": "我叫张三"})

# 第二轮(记住上文)
agent_executor.invoke({"input": "我叫什么名字?"})
# 输出:你叫张三

下一章预告:RAG系统实战 - 构建企业级知识库问答系统。

Prev
第一章: AI Agent核心概念
Next
第三章: RAG系统实战