背景
最近搭建了一个导航站点,主体框架已完成。由于第一版数据来源于第三方,仅包含基础信息,缺乏分类标签。目前的快捷筛选完全依赖关键字匹配检索,这种方式过于粗糙且准确性不足。
随着数据量增加,基于关键词的筛选越来越不准确。有时站点信息中不包含特定关键字,但实际分类一致。为了更精准地按类型区分站点,考虑了以下方案:
- 人工标记:历史数据量大,耗时费力。
- 云端大模型 API:如 Kimi 或 ChatGPT-3.5,存在 API 成本。
- 本地大模型:测试本地模型的性能和准确性,无 API 成本。
最终选择了第三种方案,利用本地部署的大模型进行批量数据分类。
使用 Ollama 运行本地模型
使用 Ollama 可以便捷地运行本地大模型。Ollama 支持多种常见模型,安装后通过命令行即可启动。
安装与运行
下载并安装 Ollama 后,可以通过以下命令运行指定模型(以 llama3 为例):
ollama run llama3
默认情况下,Ollama 服务会监听在 11434 端口。如果未启动,可执行以下命令确保服务运行:
ollama serve
使用 API 调用模型
虽然命令行支持对话,但面对数百条数据的批量处理需求,必须通过 API 自动化执行。
API 端点
参考 Ollama 官方文档,主要涉及 /api/generate 端点。该端点适用于文本生成任务,无需维护对话记忆。
需要处理的数据结构通常包含 URL、标题和描述信息。请求体需符合 Ollama API 规范。
编写提示词与调试
提示词工程是核心环节。经过多轮迭代,确定了最终的 Prompt 策略。主要诉求是:根据给定的网站信息,输出限定范围内的分类标签。
关键代码逻辑
以下是一个完整的 Python 脚本示例,展示了如何批量调用 Ollama API 进行分类:
import requests
import json
import time
OLLAMA_API_URL = "http://localhost:11434/api/generate"
MODEL_NAME = "llama3"
# 模拟数据源
sites_data = [
{"url": "https://example.com", "desc": "一个关于 AI 编程助手的工具"},
{"url": "https://example2.com", "desc": "低代码开发平台"},
]
# 优化后的系统提示词
SYSTEM_PROMPT = """
你是一个专业的网站分类助手。请根据提供的网站描述,将其归类到以下类别之一:
Code&IT, Design, Productivity, Education, Entertainment, Other.
注意:所有输入网站均与 AI 相关,不要简单地归类为 Code&IT 或 AI,除非它明显是代码助手、低代码或建站工具。请结合人工智能特性给出更具体的分类。
输出格式必须为 JSON 数组,包含 url 和 category 字段。
"""
def ():
payload = {
: MODEL_NAME,
: ,
: SYSTEM_PROMPT,
: ,
:
}
:
response = requests.post(OLLAMA_API_URL, json=payload)
response.status_code == :
result = response.json()
json.loads(result.get(, ))
:
()
Exception e:
()
results = []
site sites_data:
classification = classify_site(site)
classification:
results.append({: site[], : classification})
time.sleep()
(json.dumps(results, ensure_ascii=))


