LangChain 入门:30 分钟开发第一个 AI 应用

LangChain 入门:30 分钟开发第一个 AI 应用

2026 年了,还在手动调 API?用 LangChain,30 分钟搞定一个能对话、能查文档、能调用工具的 AI 应用!


为什么需要 LangChain?

去年我给一个企业做 AI 客服,纯手写代码调 API,搞了 2 周。

今年用 LangChain,2 天搞定,还能自动查知识库、调用工具。

LangChain 的核心价值

  • ✅ 统一接口,换模型不用改代码
  • ✅ 内置记忆,对话有上下文
  • ✅ 工具调用,AI 能执行实际任务
  • ✅ 文档处理,RAG 问答一键搞定

🛠️ 环境准备(10 分钟)

1. 安装依赖

bash 复制代码
pip install langchain langchain-openai langchain-community python-dotenv

2. 配置 API Key

在项目根目录创建 .env 文件:

bash 复制代码
# 用 OpenAI
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# 或用 DeepSeek(国产,便宜 10 倍)
DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# 或用通义千问
DASHSCOPE_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

3. 测试连接

python 复制代码
from langchain_openai import ChatOpenAI
from dotenv import load_dotenv
import os

load_dotenv()

llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.7)
response = llm.invoke("你好,请自我介绍")
print(response.content)

踩坑提醒 : 我一开始忘了装 python-dotenv,API Key 死活读不到,折腾半天...别学我。


💻 核心代码:开发你的第一个 AI 应用

场景 1:基础对话机器人

python 复制代码
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage, SystemMessage

def simple_chatbot():
    """最简单的对话机器人"""
    llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.7)
    
    # 系统提示词
    system_message = SystemMessage(content="你是一个友好的 AI 助手,用中文回答用户问题。")
    
    print("🤖 AI 助手已启动(输入 quit 退出)")
    
    while True:
        user_input = input("👤 你:")
        if user_input.lower() == 'quit':
            print("👋 再见!")
            break
        
        # 调用 AI
        response = llm.invoke([system_message, HumanMessage(content=user_input)])
        print(f"🤖 AI: {response.content}\n")

if __name__ == '__main__':
    simple_chatbot()

运行效果:

复制代码
🤖 AI 助手已启动(输入 quit 退出)
👤 你:Python 怎么读取 Excel 文件?
🤖 AI: 在 Python 中读取 Excel 文件,推荐使用 pandas 库...

场景 2:带记忆的对话机器人

python 复制代码
from langchain_openai import ChatOpenAI
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain

def chatbot_with_memory():
    """带对话记忆的 AI 助手"""
    llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.7)
    
    # 添加记忆
    memory = ConversationBufferMemory()
    
    # 创建对话链
    conversation = ConversationChain(
        llm=llm,
        memory=memory,
        verbose=True  # 显示详细日志
    )
    
    print("🤖 带记忆的 AI 助手已启动(输入 quit 退出)")
    
    while True:
        user_input = input("👤 你:")
        if user_input.lower() == 'quit':
            print("👋 再见!")
            break
        
        response = conversation.predict(input=user_input)
        print(f"🤖 AI: {response}\n")

if __name__ == '__main__':
    chatbot_with_memory()

记忆的效果:

复制代码
👤 你:我叫小明
🤖 AI: 你好小明,很高兴认识你!

👤 你:我叫什么名字?
🤖 AI: 你叫小明啊,刚才告诉我的 😊

场景 3:AI 文档问答(RAG 入门)

python 复制代码
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import Chroma
from langchain.text_splitter import CharacterTextSplitter
from langchain.chains import RetrievalQA

def document_qa(file_path):
    """文档问答机器人"""
    print("📚 正在加载文档...")
    
    # 1. 加载文档
    loader = TextLoader(file_path, encoding='utf-8')
    documents = loader.load()
    
    # 2. 分割文档
    text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
    texts = text_splitter.split_documents(documents)
    
    # 3. 创建向量存储
    print("🔧 正在创建向量索引...")
    embeddings = OpenAIEmbeddings()
    vectorstore = Chroma.from_documents(texts, embeddings)
    
    # 4. 创建问答链
    llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.7)
    qa_chain = RetrievalQA.from_chain_type(
        llm=llm,
        retriever=vectorstore.as_retriever(),
        return_source_documents=True
    )
    
    print("✅ 文档问答机器人已启动(输入 quit 退出)")
    
    while True:
        query = input("👤 你:")
        if query.lower() == 'quit':
            break
        
        result = qa_chain({"query": query})
        print(f"🤖 AI: {result['result']}\n")

if __name__ == '__main__':
    # 用法:python 01-langchain-入门.py your_document.txt
    import sys
    if len(sys.argv) > 1:
        document_qa(sys.argv[1])
    else:
        print("用法:python 01-langchain-入门.py <文档路径>")

使用示例:

bash 复制代码
# 准备一个文档
echo "Python 是 1991 年由 Guido van Rossum 发明的编程语言..." > test.txt

# 运行问答
python 01-langchain-入门.py test.txt

场景 4:AI 调用工具(计算器)

python 复制代码
from langchain_openai import ChatOpenAI
from langchain.agents import initialize_agent, Tool, AgentType
from langchain.tools import CalculatorTool

def ai_with_tools():
    """能调用工具的 AI 助手"""
    llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
    
    # 定义工具
    tools = [
        CalculatorTool(),  # 内置计算器
    ]
    
    # 初始化 Agent
    agent = initialize_agent(
        tools,
        llm,
        agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
        verbose=True
    )
    
    print("🤖 带工具的 AI 助手已启动(输入 quit 退出)")
    
    while True:
        user_input = input("👤 你:")
        if user_input.lower() == 'quit':
            break
        
        try:
            response = agent.run(user_input)
            print(f"🤖 AI: {response}\n")
        except Exception as e:
            print(f"⚠️ 错误:{str(e)}\n")

if __name__ == '__main__':
    ai_with_tools()

运行效果:

复制代码
👤 你:计算 123 * 456 + 789
🤖 AI: 123 * 456 = 56088,56088 + 789 = 56877

🎯 完整项目:智能客服机器人

python 复制代码
"""
智能客服机器人
功能:
1. 回答常见问题
2. 查询订单状态
3. 转人工客服
"""

from langchain_openai import ChatOpenAI
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
from langchain.prompts import PromptTemplate
import os
from dotenv import load_dotenv

load_dotenv()

class CustomerServiceBot:
    def __init__(self):
        # 初始化 LLM
        self.llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.7)
        
        # 添加记忆
        self.memory = ConversationBufferMemory()
        
        # 自定义提示词模板
        self.prompt_template = PromptTemplate(
            input_variables=["history", "input"],
            template="""
你是一个专业的客服助手,负责回答用户问题。

【公司规则】
1. 态度友好,用词礼貌
2. 不知道的问题不要瞎编,建议转人工
3. 订单查询需要订单号
4. 退款问题转人工处理

【对话历史】
{history}

【用户问题】
{input}

请用中文回答,保持简洁专业。
"""
        )
        
        # 创建对话链
        self.conversation = ConversationChain(
            llm=self.llm,
            memory=self.memory,
            prompt=self.prompt_template,
            verbose=False
        )
    
    def chat(self, user_input):
        """处理用户输入"""
        # 检测转人工关键词
        if any(word in user_input for word in ['转人工', '人工客服', '投诉']):
            return "🔄 正在为您转接人工客服,请稍候...\n(模拟转接,实际需对接客服系统)"
        
        # 调用 AI
        response = self.conversation.predict(input=user_input)
        return response
    
    def clear_history(self):
        """清空对话历史"""
        self.memory.clear()
        print("✅ 对话历史已清空")

def main():
    bot = CustomerServiceBot()
    
    print("=" * 50)
    print("🤖 智能客服机器人已启动")
    print("输入 help 查看帮助,quit 退出,clear 清空历史")
    print("=" * 50)
    
    while True:
        user_input = input("\n👤 你:")
        
        if user_input.lower() == 'quit':
            print("👋 感谢使用,再见!")
            break
        elif user_input.lower() == 'help':
            print("""
📋 帮助菜单:
- 直接输入问题,AI 会自动回答
- 输入 '转人工' 转接人工客服
- 输入 'clear' 清空对话历史
- 输入 'quit' 退出程序
            """)
            continue
        elif user_input.lower() == 'clear':
            bot.clear_history()
            continue
        
        response = bot.chat(user_input)
        print(f"🤖 客服:{response}")

if __name__ == '__main__':
    main()

⚠️ 血泪教训

  1. API Key 别硬编码 ,用 .env 文件,不然提交 Git 就泄露了
  2. 温度值调低(0.3-0.7),太高了 AI 容易瞎编
  3. 加异常处理,网络波动、API 限流都会报错
  4. 测试小样本,先跑通再上线,别直接上生产

💡 进阶玩法

1. 换国产大模型(便宜 10 倍)

python 复制代码
# 用 DeepSeek
from langchain_community.llms import DeepSeek

llm = DeepSeek(model="deepseek-chat", temperature=0.7)

2. 添加流式输出

python 复制代码
for chunk in llm.stream("你好"):
    print(chunk.content, end="", flush=True)

3. 保存对话历史

python 复制代码
import json

# 保存
with open('chat_history.json', 'w', encoding='utf-8') as f:
    json.dump(memory.chat_memory.messages, f, ensure_ascii=False)

# 加载
with open('chat_history.json', 'r', encoding='utf-8') as f:
    messages = json.load(f)
    memory.chat_memory.messages = messages

📦 源码获取

完整源码已上传 GitHub:

复制代码
github.com/yourname/langchain-tutorial

包含:

  • ✅ 所有示例代码
  • ✅ 环境配置文档
  • ✅ 常见问题 FAQ
  • ✅ 后续更新通知

🌟 下篇预告

下一篇:《用 LangChain 搭建本地知识库问答》

  • 上传 PDF/Word 文档
  • 自动分割和索引
  • 智能问答,带引用来源
  • 企业文档管理系统实战

觉得有用?点赞 + 关注不迷路! 🎉


标签: #LangChain #AI #Python #大模型 #RAG #人工智能