sudo-iのBlog

  • 🍟首页
  • 🍊目录
    • 技术分享
    • vps教程
    • 软件分享
    • 干货分享
  • 🍎链接
  • 🍓工具
    • 🌽IP路由追踪
    • 域名被墙检测
    • KMS激活
    • 域名whois查询
  • 🍕联系
  • 🍌登录
Sudo-i
关注互联网,生活,音乐,乐此不疲
  1. 首页
  2. vps教程
  3. 正文

使用 Python 和 LangChain 构建智能 AI 助手:从入门到实战

2 4 月, 2026 4点热度 0人点赞 0条评论

引言

在 2026 年,AI 助手已经无处不在。从客服系统到个人助理,从代码生成到数据分析,AI 正在改变我们工作和生活的方方面面。但是,如何构建一个真正实用、智能的 AI 助手呢?

本文将带你从零开始,使用 Python 和 LangChain 框架,构建一个功能完整的智能 AI 助手。无论你是 AI 初学者还是有一定经验的开发者,都能从本文中获得实用的知识和代码示例。

什么是 LangChain?

LangChain 是一个用于开发由语言模型驱动的应用程序的框架。它提供了以下核心能力:

  • 模型抽象:统一接口访问不同的 LLM(如 GPT-4、Claude、Qwen 等)
  • 提示词管理:强大的提示词模板系统
  • 链式调用:将多个操作串联成完整的工作流
  • 记忆管理:维护对话历史和上下文
  • 工具集成:轻松集成外部 API 和工具
  • 向量存储:支持 RAG(检索增强生成)架构

环境准备

首先,我们需要安装必要的依赖:

pip install langchain langchain-openai langchain-community
pip install python-dotenv faiss-cpu tiktoken

创建环境变量配置文件 .env:

OPENAI_API_KEY=your_api_key_here
OPENAI_API_BASE=https://api.openai.com/v1

构建基础 AI 助手

让我们从最简单的对话助手开始:

from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage
import os
from dotenv import load_dotenv

# 加载环境变量
load_dotenv()

# 初始化 LLM
llm = ChatOpenAI(
    model="gpt-4",
    temperature=0.7,
    max_tokens=2000
)

# 定义系统提示词
system_prompt = """你是一个专业的 AI 助手,名叫 TechBot。
你的特点是:
1. 回答准确、专业
2. 善于用通俗的语言解释复杂概念
3. 提供实用的代码示例
4. 保持友好和耐心"""

# 创建对话
messages = [
    SystemMessage(content=system_prompt),
    HumanMessage(content="你好,请介绍一下你自己")
]

# 获取回复
response = llm.invoke(messages)
print(response.content)

添加记忆功能

一个优秀的 AI 助手需要记住对话历史。LangChain 提供了多种记忆类型:

from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain

# 创建记忆
memory = ConversationBufferMemory(
    memory_key="chat_history",
    return_messages=True
)

# 创建对话链
conversation = ConversationChain(
    llm=llm,
    memory=memory,
    verbose=True
)

# 多轮对话
response1 = conversation.predict(input="我想学习 Python 编程")
print(response1)

response2 = conversation.predict(input="有什么好的学习资源推荐吗?")
print(response2)

# 查看对话历史
print(memory.chat_history)

集成外部工具

真正的智能助手需要能够执行实际操作。让我们集成一些工具:

from langchain.agents import initialize_agent, Tool
from langchain.agents import AgentType
import requests
from datetime import datetime

# 定义自定义工具
def search_web(query: str) -> str:
    """搜索网络信息"""
    # 这里可以集成真实的搜索 API
    return f"搜索结果:关于{query}的相关信息..."

def get_weather(city: str) -> str:
    """获取天气信息"""
    # 集成天气 API
    return f"{city}今天晴朗,温度 25°C"

def calculate(expression: str) -> str:
    """执行数学计算"""
    try:
        result = eval(expression)
        return f"计算结果:{result}"
    except Exception as e:
        return f"计算错误:{str(e)}"

# 创建工具列表
tools = [
    Tool(
        name="Web Search",
        func=search_web,
        description="用于搜索网络信息"
    ),
    Tool(
        name="Weather",
        func=get_weather,
        description="查询城市天气"
    ),
    Tool(
        name="Calculator",
        func=calculate,
        description="执行数学计算"
    )
]

# 初始化 Agent
agent = initialize_agent(
    tools,
    llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True
)

# 使用 Agent
response = agent.run("北京今天的天气怎么样?")
print(response)

实现 RAG(检索增强生成)

RAG 是让 AI 助手基于特定知识库回答问题的关键技术:

from langchain.text_splitter import CharacterTextSplitter
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings
from langchain.chains import RetrievalQA

# 准备文档
documents = [
    "Python 是一种高级编程语言,由 Guido van Rossum 于 1991 年创建。",
    "Python 支持多种编程范式,包括面向对象、函数式和过程式编程。",
    "Python 的标准库非常丰富,涵盖了网络、文件、数据库等多个领域。",
    "Django 和 Flask 是 Python 最流行的两个 Web 框架。"
]

# 文本分割
text_splitter = CharacterTextSplitter(
    separator="\n",
    chunk_size=100,
    chunk_overlap=20
)
docs = text_splitter.create_documents(documents)

# 创建向量存储
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(docs, embeddings)

# 创建检索器
retriever = vectorstore.as_retriever(
    search_type="similarity",
    search_kwargs={"k": 2}
)

# 创建 QA 链
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=retriever,
    return_source_documents=True
)

# 提问
query = "Python 是什么时候创建的?"
result = qa_chain({"query": query})
print(f"答案:{result['result']}")
print(f"来源:{result['source_documents']}")

构建完整的 AI 助手应用

现在让我们把所有组件整合起来,创建一个完整的 AI 助手:

from langchain.prompts import ChatPromptTemplate
from langchain.schema import StrOutputParser
from langchain.schema.runnable import RunnablePassthrough

class SmartAssistant:
    def __init__(self):
        self.llm = ChatOpenAI(model="gpt-4", temperature=0.7)
        self.memory = []
        self.max_history = 10
        
    def add_to_memory(self, role, content):
        """添加对话到记忆"""
        self.memory.append({"role": role, "content": content})
        # 保持记忆大小
        if len(self.memory) > self.max_history:
            self.memory = self.memory[-self.max_history:]
    
    def get_context(self):
        """获取对话上下文"""
        context = ""
        for msg in self.memory:
            role = "用户" if msg["role"] == "human" else "助手"
            context += f"{role}: {msg['content']}\n"
        return context
    
    def chat(self, user_input):
        """处理用户输入并生成回复"""
        # 添加用户输入到记忆
        self.add_to_memory("human", user_input)
        
        # 构建提示词
        template = """你是一个智能助手。请根据以下对话历史回答问题。

对话历史:
{context}

用户:{question}

助手:"""
        
        prompt = ChatPromptTemplate.from_template(template)
        
        # 创建链
        chain = (
            {"context": RunnablePassthrough(), "question": RunnablePassthrough()}
            | prompt
            | self.llm
            | StrOutputParser()
        )
        
        # 生成回复
        response = chain.invoke({
            "context": self.get_context(),
            "question": user_input
        })
        
        # 添加回复到记忆
        self.add_to_memory("ai", response)
        
        return response

# 使用示例
assistant = SmartAssistant()
print(assistant.chat("你好,我想学习 Python"))
print(assistant.chat("有什么好的学习路线推荐吗?"))
print(assistant.chat("我应该先学什么?"))

性能优化最佳实践

在生产环境中,我们需要考虑以下优化:

1. 缓存机制

from functools import lru_cache
import hashlib

class CachedAssistant(SmartAssistant):
    def __init__(self):
        super().__init__()
        self.cache = {}
    
    def get_cache_key(self, text):
        return hashlib.md5(text.encode()).hexdigest()
    
    def chat(self, user_input):
        cache_key = self.get_cache_key(user_input)
        
        # 检查缓存
        if cache_key in self.cache:
            return self.cache[cache_key]
        
        # 生成回复
        response = super().chat(user_input)
        
        # 存入缓存
        self.cache[cache_key] = response
        
        return response

2. 流式输出

def stream_chat(self, user_input):
    """流式输出回复"""
    for chunk in self.llm.stream(self.memory):
        print(chunk.content, end="", flush=True)

3. 错误处理

def safe_chat(self, user_input):
    """带错误处理的聊天"""
    try:
        return self.chat(user_input)
    except Exception as e:
        return f"抱歉,出现了一些问题:{str(e)}。请稍后再试。"

总结

通过本文,我们学习了如何使用 LangChain 构建一个功能完整的智能 AI 助手。从基础的对话功能,到记忆管理、工具集成、RAG 检索,再到性能优化,我们覆盖了构建生产级 AI 助手的关键技术。

关键要点回顾:

  • LangChain 提供了强大的抽象层,简化了 LLM 应用开发
  • 记忆功能让 AI 助手能够进行连贯的多轮对话
  • 工具集成扩展了 AI 助手的实际能力
  • RAG 技术让 AI 能够基于特定知识库回答问题
  • 缓存、流式输出和错误处理是生产环境必备

AI 技术正在快速发展,LangChain 也在不断演进。建议关注官方文档和社区,保持学习。希望本文能帮助你开启 AI 助手开发之旅!

如果你对本文有任何疑问或建议,欢迎在评论区留言讨论。也欢迎分享你构建的 AI 助手项目!

无关联文章

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: AI LangChain Python 机器学习 编程教程
最后更新:2 4 月, 2026

李炫炫

这个人很懒,什么都没留下

点赞
< 上一篇

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2025 sudo-iのBlog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鲁ICP备2024054662号

鲁公网安备37108102000450号