使用 Gradio 与 AI 打造一个智能邮件分类与回复助理

51 阅读6分钟

使用 Gradio 与 AI 打造一个智能邮件分类与回复助理

在信息爆炸的时代,每天处理堆积如山的电子邮件已成为许多人的日常。如何快速从中筛选出重要邮件,并优雅地草拟回复,是提升工作效率的关键。

今天,我们将引导您使用 Python、强大的 Gradio 框架以及一个大型语言模型(LLM)API,从零开始打造一个“智能邮件分类与回复助理”。这个应用程序不仅能自动判断邮件的紧急程度,还能为您生成得体的回复草稿。

应用链接:mlsqqqq/TextAnalysis

项目目标

我们的目标是建立一个直观的 Web UI,用户可以:

  1. 粘贴邮件内容:将任何邮件文本输入到应用程序中。
  2. 自动分类:AI 将邮件自动归类为“需立即处理”、“可稍后回复”或“广告 / 垃圾邮件”。
  3. 生成回复草稿:对于需要回复的邮件,AI 会自动生成一份简洁、礼貌的回复建议。
  4. 调整参数:用户可以自由调整模型的“温度”和“最大回复长度”,以控制回复的创意性和篇幅。

我们将使用哪些工具?

  • Python: 我们的开发语言。
  • OpenAI SDK: 用于与大型语言模型 API 进行交互。虽然我们使用的是 OpenAI 的客户端库,但它可以配置为与任何兼容的 API 端点(如 DeepSeek)连接。
  • Gradio: 一个非常出色的 Python 库,可以快速为您的机器学习模型或任何 Python 脚本创建简洁、易于交互的 Web UI。

代码详解

现在,让我们深入了解这段代码的核心组成部分。

1. 初始化 API 客户端

这是应用程序与 AI 大脑沟通的桥梁。我们使用 openai 库来创建一个客户端实例。请注意,base_url 参数让我们可以灵活地将请求指向任何兼容的 API 服务。

Python

# 请先安装 OpenAI SDK: pip install openai
import os
import gradio as gr
from openai import OpenAI

# --- 1. 初始化 API 客户端 ---
api_key = 'sk-edc6b3cecf5b4290886c607c0f0bd4c9' # 为了安全,建议从环境变量读取
client = None
initialization_error = None

if not api_key:
    initialization_error = "错误:API Key 未设置。"
else:
    try:
        # 这里的 base_url 可以指向任何兼容 OpenAI 的 API 端点
        client = OpenAI(
            api_key=api_key,
            base_url="https://api.deepseek.com" # 示例端点
        )
        print("API 客户端初始化成功。")
    except Exception as e:
        initialization_error = f"API 客户端初始化失败: {e}"

安全提示:直接在代码中硬编码 API Key 是不安全的做法。在生产环境中,强烈建议您使用环境变量 (os.environ.get('YOUR_API_KEY')) 来管理您的密钥。

2. 设计完美的系统提示词 (System Prompt)

系统提示词是我们赋予 AI 角色和指令的关键。一个清晰、结构化的提示词能让模型更好地理解它的任务,并以我们期望的格式输出结果。

Python

# --- 2. 系统提示词 ---
SYSTEM_PROMPT = """你是一位智能邮件分类与回复助理。
你的任务:
1. 根据邮件内容判断其类别,类别仅限于:
   - 需立即处理
   - 可稍后回复
   - 广告 / 垃圾邮件
2. 如果邮件是正常沟通类(非广告),请自动生成一份简短、自然、礼貌的回复草稿。
3. 输出格式要求:
   分类:<类别>
   回复草稿:<生成的邮件回复内容或“无须回复”>
   请保持输出简洁清晰。
"""

这个提示词明确定义了 AI 的角色(助理)、任务(分类与回复)以及最重要的输出格式。这种结构化要求有助于我们后续解析模型的输出。

3. 核心分析函数

这是应用程序的大脑。analyze_email 函数接收来自前端的邮件内容和参数,将它们与系统提示词组合,然后发送给 AI 模型。

Python

# --- 3. 核心分析函数 ---
def analyze_email(email_text, temperature, max_new_tokens):
    """使用 AI API 分析邮件并生成回复"""
    if initialization_error:
        return initialization_error
    
    if not client:
        return "错误:API 客户端未成功初始化。"

    messages = [
        {"role": "system", "content": SYSTEM_PROMPT},
        {"role": "user", "content": f"以下是用户收到的邮件内容:\n{email_text}"}
    ]

    try:
        print("正在向 API 发送请求...")
        response = client.chat.completions.create(
            model="deepseek-chat", # 您可以更换为您想用的模型
            messages=messages,
            temperature=temperature,
            max_tokens=int(max_new_tokens),
            stream=False
        )
        print("已收到 API 的回复。")
        
        output = response.choices[0].message.content
        return output.strip()
    
    except Exception as e:
        print(f"调用 API 时发生错误: {e}")
        return f"调用 API 时发生错误,请检查您的网络连接、API Key 或终端日志。\n错误详情: {e}"

此函数处理了所有后端逻辑:检查初始化状态、构建请求、调用 API 并处理潜在的错误。

4. 使用 Gradio 搭建用户界面

Gradio 的魅力在于它能用极少的代码构建出交互式界面。我们使用 gr.Blocks 来获得更灵活的布局控制。

Python

# --- 4. Gradio 页面布局 ---
with gr.Blocks(css="""...""") as demo:
    
    gr.HTML("<div id='title'>📧 智能邮件分类与回复助理</div>")
    
    # 示例邮件,方便用户测试
    gr.Markdown("**示例邮件(点击即可填充以做测试)**")
    example_list = gr.Dropdown(...)
    
    # 邮件输入框
    email_input = gr.Textbox(
        label="输入邮件内容",
        placeholder="请粘贴或选择一封邮件内容...",
        lines=10
    )
    
    # 将 Dropdown 的选择填充到输入框
    example_list.change(fn=fill_example, inputs=example_list, outputs=email_input)
    
    # 参数滑块
    with gr.Row():
        temperature = gr.Slider(...)
        max_tokens_slider = gr.Slider(...)
    
    # 按钮和输出框
    analyze_btn = gr.Button("✨ 开始分析")
    output_box = gr.Textbox(label="AI 分析结果", lines=8)
    
    # 点击按钮时触发核心函数
    analyze_btn.click(
        analyze_email,
        inputs=[email_input, temperature, max_tokens_slider],
        outputs=output_box
    )

这段代码定义了所有的 UI 组件:标题、示例下拉菜单、文本输入框、参数滑块、触发按钮和结果显示框。最关键的是 analyze_btn.click(...) 这一行,它将前端的输入与后端的 analyze_email 函数完美地连接起来。

如何运行这个应用?

  1. 安装依赖库:

    Bash

    pip install openai gradio
    
  2. 保存代码: 将完整的代码保存为一个 Python 文件,例如 email_assistant.py

  3. 设置您的 API Key: 在代码中找到 api_key = 'sk-...' 这一行,并换上您自己的有效密钥。

  4. 启动应用: 在终端中执行以下命令:

    Bash

    python email_assistant.py
    
  5. 打开浏览器: 终端将显示一个本地 URL (通常是 http://127.0.0.1:7860)。在浏览器中打开此链接,即可开始使用您的智能邮件助理!

总结

通过这个项目,我们展示了如何将大型语言模型的强大能力与 Gradio 的易用性结合,快速开发出一个实用且具备交互性的 AI 应用。您可以基于这个框架,进一步扩展功能,例如支持多语言、增加更多分类、或甚至连接到您的真实邮箱。

希望这篇文章能激发您的灵感,开始打造属于您自己的 AI 小工具!