从零到一:用AI快速搭建你的专属小工具

2026/05/14 AI 共 4885 字,约 14 分钟

从零到一:用AI快速搭建你的专属小工具

引言

在日常工作和学习中,我们经常遇到一些重复性高、规则明确但又消耗大量精力的任务,比如:阅读长文档后写摘要、批量回复邮件、翻译专业术语、整理会议纪要等。传统的做法是手动处理,或者写一段死板的脚本。如今,得益于大型语言模型(LLM)的普及,我们只需几十行代码,就能“教会”AI按照我们的需求工作,从而搭建一个专属的智能小工具。

本文将带你从零开始,使用 Python、OpenAI API 和 LangChain 框架,搭建一个“智能文本摘要与关键词提取工具”。通过这个实战案例,你将掌握用 AI 构建小工具的核心流程、代码实现以及部署技巧。

第一步:明确需求与技术选型

在动手写代码前,先想清楚我们的工具要解决什么问题。

需求定义:用户输入一段长文本(如文章、报告),工具自动输出:

  1. 一段 100-200 字的摘要。
  2. 提取 3-5 个关键词。
  3. 支持多语言输入(中英文)。

技术选型

  • 语言与框架:Python 3.9+,配合 LangChain(简化 LLM 调用流程)。
  • 大模型:OpenAI GPT-3.5-turbo(性价比高,适合文本生成)。
  • 环境管理:使用 python-dotenv 管理 API Key,保证安全。
  • 交互方式:命令行界面(CLI),简单直接,后续可快速扩展为 Web 服务。

第二步:开发环境准备

首先,创建项目目录并安装依赖。

mkdir ai-text-summarizer
cd ai-text-summarizer
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

安装必要库:

pip install langchain openai python-dotenv

在项目根目录创建 .env 文件,填入你的 OpenAI API Key:

OPENAI_API_KEY=sk-your-api-key-here

第三步:核心代码实现

我们的核心逻辑是:接收文本 → 构建 Prompt → 调用 LLM → 解析输出。

3.1 基础调用封装

首先,创建一个 utils.py 文件,用于加载环境变量并初始化 LLM。

# utils.py
import os
from dotenv import load_dotenv
from langchain.chat_models import ChatOpenAI

load_dotenv()

def get_llm():
    api_key = os.getenv("OPENAI_API_KEY")
    if not api_key:
        raise ValueError("请设置 OPENAI_API_KEY 环境变量")
    # 使用 GPT-3.5-turbo,温度设为0.3以保持输出稳定性
    llm = ChatOpenAI(
        model="gpt-3.5-turbo",
        temperature=0.3,
        openai_api_key=api_key
    )
    return llm

3.2 构建 Prompt 模板

Prompt 设计是 AI 工具的灵魂。我们需要清晰地告诉模型任务、格式和输出要求。

创建 prompts.py

# prompts.py
from langchain.prompts import ChatPromptTemplate

# 摘要生成模板
summary_template = ChatPromptTemplate.from_messages([
    ("system", "你是一个专业的文本分析助手。请根据用户提供的文本,生成一段简洁的摘要,并提取3-5个关键词。"),
    ("user", "文本:{text}\n\n请输出以下格式:\n摘要:...\n关键词:...")
])

# 也可以设计更复杂的模板,例如指定摘要长度
summary_template_v2 = ChatPromptTemplate.from_messages([
    ("system", "你是一个专业的文本分析助手。请根据用户提供的文本,生成一段不超过200字的摘要,并提取出3-5个最相关的关键词。"),
    ("user", "文本:{text}")
])

3.3 构建处理链

使用 LangChain 的 LLMChain 将 Prompt 和 LLM 串联起来。

创建 summarizer.py

# summarizer.py
from langchain.chains import LLMChain
from utils import get_llm
from prompts import summary_template

def summarize_text(text: str) -> str:
    llm = get_llm()
    chain = LLMChain(llm=llm, prompt=summary_template)
    result = chain.run(text=text)
    return result

if __name__ == "__main__":
    # 测试文本
    sample_text = """
    人工智能(AI)是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。自从20世纪50年代诞生以来,AI经历了多次起伏,如今随着大数据和计算能力的提升,深度学习技术取得了突破性进展,AI应用已经渗透到医疗、金融、制造等各行各业。
    """
    output = summarize_text(sample_text)
    print(output)

运行 python summarizer.py,你将看到类似输出:

摘要:人工智能是计算机科学的分支,旨在模拟人类智能。其研究涵盖机器人、语言识别等领域。随着大数据和算力提升,深度学习取得突破,AI已广泛应用于医疗、金融等行业。
关键词:人工智能, 深度学习, 机器人, 自然语言处理, 大数据

3.4 增加输出解析(结构化结果)

为了后续更方便地处理结果(比如存入数据库或展示在前端),我们可以使用 LangChain 的 PydanticOutputParser 将输出解析为结构化数据。

安装额外依赖:

pip install pydantic

修改代码,定义输出模型:

# schemas.py
from pydantic import BaseModel, Field
from typing import List

class SummaryOutput(BaseModel):
    summary: str = Field(description="文本摘要")
    keywords: List[str] = Field(description="关键词列表")

更新 summarizer.py,加入输出解析:

# summarizer.py (增强版)
from langchain.output_parsers import PydanticOutputParser
from langchain.prompts import PromptTemplate
from utils import get_llm
from schemas import SummaryOutput

def summarize_structured(text: str) -> SummaryOutput:
    parser = PydanticOutputParser(pydantic_object=SummaryOutput)
    
    prompt = PromptTemplate(
        template="根据用户输入的文本,生成摘要和关键词。\n{format_instructions}\n文本:{text}",
        input_variables=["text"],
        partial_variables={"format_instructions": parser.get_format_instructions()}
    )
    
    llm = get_llm()
    chain = prompt | llm | parser  # LangChain 的管道操作符
    result = chain.invoke({"text": text})
    return result

# 测试
if __name__ == "__main__":
    sample_text = "人工智能正在改变世界..."
    output = summarize_structured(sample_text)
    print(f"摘要:{output.summary}")
    print(f"关键词:{', '.join(output.keywords)}")

第四步:构建命令行交互界面

为了更友好的用户体验,我们构建一个简单的 CLI 工具。

创建 cli.py

# cli.py
import sys
from summarizer import summarize_text

def main():
    print("=== AI 文本摘要与关键词提取工具 ===")
    print("请输入文本(输入 'quit' 退出):")
    while True:
        print("\n> ", end="")
        text = sys.stdin.readline().strip()
        if text.lower() == "quit":
            break
        if not text:
            continue
        try:
            result = summarize_text(text)
            print("\n结果:")
            print(result)
        except Exception as e:
            print(f"错误:{e}")

if __name__ == "__main__":
    main()

运行 python cli.py,即可在终端中交互使用。

第五步:扩展与优化

一个能用的工具只是开始,我们可以从以下几个方向继续优化:

5.1 增加文件读取功能

支持从 .txt.md 文件读取内容,处理长文档。

def read_file(filepath: str) -> str:
    with open(filepath, 'r', encoding='utf-8') as f:
        return f.read()

5.2 缓存与成本控制

对于重复输入的文本,可以使用本地缓存(如 diskcache)避免重复调用 API,节省费用。

from diskcache import Cache
cache = Cache("llm_cache")
if text in cache:
    result = cache[text]
else:
    result = chain.run(text=text)
    cache[text] = result

5.3 部署为 Web API

使用 FastAPI 快速包装成 RESTful 接口。

# api.py
from fastapi import FastAPI
from pydantic import BaseModel
from summarizer import summarize_structured

app = FastAPI()

class TextRequest(BaseModel):
    content: str

@app.post("/summarize")
def summarize(request: TextRequest):
    result = summarize_structured(request.content)
    return {"summary": result.summary, "keywords": result.keywords}

# 启动:uvicorn api:app --reload

第六步:实际应用场景

这个工具可以直接应用到以下场景:

  1. 学术研究:快速阅读论文摘要,提取关键概念。
  2. 内容运营:批量处理文章,生成 SEO 描述和标签。
  3. 商务沟通:将冗长的邮件或会议记录浓缩为要点。
  4. 学习辅助:整理笔记,生成复习提纲。

总结

本文展示了如何利用 AI(特别是 LLM)在短短几十分钟内搭建一个实用的文本处理工具。核心要点包括:

  • Prompt 工程:清晰、具体的指令是得到高质量输出的关键。
  • 框架选型:LangChain 极大地简化了与 LLM 的交互、输出解析和链式调用。
  • 渐进式开发:从 CLI 到 Web API,从简单输出到结构化数据,逐步完善。

AI 工具开发的魅力在于,你不再需要处理复杂的规则或训练自己的模型,而是通过“语言”直接与智能体协作。现在,打开你的编辑器,开始搭建属于你的第一个 AI 小工具吧!

文档信息

Search

    Table of Contents