Python 调用 LLM API 进行文本分类实战指南

# Python 调用 LLM API 进行文本分类实战指南

在 AI 应用开发中,文本分类是最基础也最实用的能力之一。不管是垃圾邮件过滤、情感分析还是意图识别,本质上都是分类问题。这篇文章手把手教你用 Python 调用 LLM API 实现一个完整的文本分类系统。

## 背景介绍

传统文本分类需要大量标注数据和复杂的特征工程。2017 年 Transformer 出现后,预训练语言模型开始主导这个领域。现在有了 GPT 等大模型,我们可以用 few-shot learning 的方式——只需要给几个示例,模型就能理解分类任务的需求。

这篇文章使用的方案不依赖任何本地模型,直接调用 OpenAI 的 GPT API。我们的目标是:给定一段文本,让 LLM 判断它的情感类别(正面、负面、中性)。

## 问题描述

很多开发者想用 LLM 做文本分类,但不知道如何设计 prompt,也不清楚怎样解析返回结果。这篇文章帮你解决这些问题。

具体需求:
– 输入:用户评论文本
– 输出:分类结果(positive、negative、neutral)
– 要求:支持 few-shot 示例,代码要能直接跑通

## 详细步骤

### 第一步:获取 API Key

访问 https://platform.openai.com 注册账号,然后创建 API Key。注意免费额度有限,生产环境建议绑定信用卡获取更高额度。

### 第二步:安装依赖库

“`bash
pip install openai requests
“`

### 第三步:设计 Prompt

Few-shot prompt 的核心是给出几个示例,让模型理解任务。我们这样设计:

“`
你是一个情感分类器。请根据文本内容,将其分类为 positive、negative 或 neutral。

示例:
“这个产品太棒了,完全超出预期” -> positive
“质量很差,体验很糟糕” -> negative
“今天天气不错” -> neutral

请只输出分类结果,不要其他内容。
“`

### 第四步:调用 API 并解析结果

使用 `openai.chat.completions.create` 接口,模型选择 `gpt-4o-mini`(便宜好用)。

## 完整代码示例

“`python
import openai
import os

# 配置 API Key(建议用环境变量)
openai.api_key = os.getenv(“OPENAI_API_KEY”, “your-api-key-here”)

def classify_sentiment(text: str, examples: list = None) -> str:
# 使用 LLM 进行情感分类

# 默认示例
if examples is None:
examples = [
{“text”: “这个产品太棒了,完全超出预期”, “label”: “positive”},
{“text”: “质量很差,体验很糟糕”, “label”: “negative”},
{“text”: “今天天气不错”, “label”: “neutral”}
]

# 构建 prompt
prompt = ”’你是一个情感分类器。请根据文本内容,将其分类为 positive、negative 或 neutral。

规则:
– positive: 正面评价,表达喜爱、满意、推荐
– negative: 负面评价,表达失望、不满、抱怨
– neutral: 中性评价,既不明显正面也不明显负面

”’

# 添加示例
for ex in examples:
prompt += f'”{ex[“text”]}” -> {ex[“label”]}

prompt += f’
请分析以下文本:
“{text}”

只输出分类结果,不要其他内容。’

try:
response = openai.chat.completions.create(
model=”gpt-4o-mini”,
messages=[
{“role”: “system”, “content”: “你是一个情感分类助手。”},
{“role”: “user”, “content”: prompt}
],
temperature=0,
max_tokens=10
)

result = response.choices[0].message.content.strip().lower()

# 提取分类结果
valid_labels = {“positive”, “negative”, “neutral”}
for label in valid_labels:
if label in result:
return label

return “neutral” # 默认返回

except Exception as e:
print(f”API 调用错误: {e}”)
return “neutral”

def batch_classify(texts: list) -> list:
# 批量分类

results = []
for text in texts:
result = classify_sentiment(text)
results.append(result)
print(f”文本: {text[:30]}… -> {result}”)

return results

if __name__ == “__main__”:
# 测试文本
test_texts = [
“这个产品太棒了,完全超出预期”,
“质量很差,体验很糟糕”,
“今天天气不错”,
“物流很快,包装也很好,推荐购买”,
“完全不符合描述,浪费钱”,
“一般般,没什么特别的”
]

print(“开始情感分类测试…
“)
results = batch_classify(test_texts)

print(”
=== 分类结果汇总 ===”)
for text, result in zip(test_texts, results):
print(f”{result:>10} | {text}”)
“`

## 运行结果

运行上面的代码,你会看到类似这样的输出:

“`
开始情感分类测试…

文本: 这个产品太棒了,完全超出预期 -> positive
文本: 质量很差,体验很糟糕 -> negative
文本: 今天天气不错 -> neutral
文本: 物流很快,包装也很好,推荐购买 -> positive
文本: 完全不符合描述,浪费钱 -> negative
文本: 一般般,没什么特别的 -> neutral

=== 分类结果汇总 ===
positive | 这个产品太棒了,完全超出预期
negative | 质量很差,体验很糟糕
neutral | 今天天气不错
positive | 物流很快,包装也很好,推荐购买
negative | 完全不符合描述,浪费钱
neutral | 一般般,没什么特别的
“`

可以看到,模型正确识别了所有测试文本的情感倾向。第三个和第六个文本比较模糊,模型正确归类为 neutral。

## 总结

这篇文章展示了如何使用 Python 调用 LLM API 实现文本分类。核心要点:

1. **API 调用很便宜**:gpt-4o-mini 价格很低,几分钱就能分类大量文本
2. **Few-shot 效果很好**:只需要几个示例,模型就能理解分类任务
3. **代码可直接扩展**:修改 prompt 中的 labels,就能用于其他分类任务
4. **注意 API 成本**:生产环境要加缓存、控制调用频率

进阶方向:
– 支持多分类(不只是正面负面中性)
– 用更复杂的 prompt 处理细粒度情感
– 加结果置信度判断,过滤低置信度结果
– 本地部署避免 API 调用延迟和费用

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇