我用 Flowise + 本地 InternLM-3 搭了个 AI 兼职筛选器,踩了 3 个坑才跑通

上周我在某招聘平台刷到第 37 条兼职信息的时候,意识到我已经在这件事上浪费了整整 2 个小时。

那 37 条里,有 12 条是"日结 500 轻松赚"的模糊广告,有 8 条要先交押金,有 6 条薪资标注的是"面议"——实际上就是不想给你看。真正值得点进去的,可能就 3 条。

我当时就想:这件事,能不能让 AI 替我干?

然后我花了一个周末,搭出来了。代价是踩了 3 个坑,其中一次直接把我的电脑干卡死了。

---

为什么是 Flowise + InternLM-3 这个组合?

在动手之前,我想了一下自己的诉求:

1. 数据不能出门——兼职信息里夹杂着我的求职偏好、地理位置、薪资预期,我不想这些数据上传到任何云端

2. 最好不用写代码——我会一点 Python,但不想为了筛兼职变成全栈工程师

3. 调用成本要低——最好免费,或者接近免费

这三个条件框下来,答案就比较清晰了:

  • Flowise:开源的可视化 AI 工作流编排工具,拖拽节点就能组装 Agent,对不想写代码的人非常友好
  • InternLM-3:上海 AI Lab 开源的中文大模型,通过 Ollama 在本地跑,推理免费,中文理解能力在同量级模型里算扎实的
  • Ollama:负责在本地管理和运行模型,提供兼容 OpenAI 格式的 API,Flowise 可以直接对接

用一句话描述这个组合的逻辑:Flowise 是大脑的调度中枢,Ollama 是模型的运行容器,InternLM-3 是实际做判断的那个"人"。

---

整体方案长什么样?

系统的数据流大概是这样:

数据输入层

├── RSS 订阅(部分平台支持)

└── 网页抓取(Flowise HTTP 节点)

Flowise Flow 编排层

├── 文本预处理节点(清洗格式)

├── Prompt 注入节点(角色设定 + 任务指令)

└── InternLM-3 推理节点(via Ollama)

结构化输出层

├── 综合评分(1-10 分)

├── 一句话摘要

└── 风险标签(如:押金陷阱 / 薪资模糊 / 信息不完整)

本地环境配置清单: | 项目 | 版本/规格 | | 操作系统 | macOS 14.5 / Ubuntu 22.04 均可 | | Flowise | v2.1.4 | | Ollama | v0.3.12 | | InternLM-3 模型 | internlm3:8b-instruct-q4_K_M | | 显卡 | NVIDIA RTX 3060 12GB(最低建议 8GB 显存) | | 内存 | 32GB(16GB 勉强够,但容易触发坑 3) | | Node.js | v18.x(Flowise 依赖) |
⚠️ 重要提示:InternLM-3 的 8B 量化版本(Q4_K_M)在 8GB 显存下能跑,但如果你的机器只有集成显卡或者 4GB 以下独显,建议直接跳到文末看 API 方案,别硬撑。

---

踩坑实录:3 个让我想摔键盘的问题

坑 1:中文 Prompt 全变问号,Flowise 连 Ollama 乱码

【现象】

Flowise 里配置好 Ollama 节点,连接测试通过,但一发送中文 Prompt,模型返回的内容全是乱码,或者干脆返回一堆问号。英文 Prompt 完全正常。

【排查过程】

一开始我以为是 InternLM-3 的问题,换了模型还是一样。后来用 curl 直接调 Ollama 的 API,中文完全正常——说明模型本身没问题。

问题出在 Flowise 的 HTTP 请求头上。Flowise 在发送请求时,默认没有显式声明 Content-Type: application/json; charset=utf-8,某些版本下会导致编码传递异常。

【解决方案】

在 Flowise 的 Ollama Chat Model 节点里,找到 Additional Parameters,手动加入:

{

"headers": {

"Content-Type": "application/json; charset=utf-8"

}

}

如果你用的是较新版本的 Flowise(v2.1.x 以上),还需要在 Ollama 启动时加环境变量:

OLLAMA_ORIGINS="*" ollama serve
【避坑口诀】:Flowise 对接本地 Ollama,先跑英文测通,再测中文,发现乱码先查请求头,别急着换模型。

---

坑 2:InternLM-3 输出格式一塌糊涂,完全不听指令

【现象】

我让模型输出结构化的 JSON 格式评估报告,结果它有时候给我一段散文,有时候 JSON 里夹着解释性文字,有时候直接忽略我要求的字段,自己发挥。

【排查过程】

这个坑本质是 Prompt Engineering 问题,不是模型 bug。InternLM-3 对"开放任务"的理解比较自由,如果你的 System Prompt 写得模糊,它就会按自己的理解来。

我最初的 Prompt 是这样的(优化前):

你是一个兼职筛选助手,请帮我分析以下兼职信息,

给出评分和风险提示。

这个 Prompt 的问题在于:没有指定输出格式,没有给评分标准,没有约束输出长度,模型自由发挥空间太大。

【解决方案】

经过大概 6 轮迭代,我的 System Prompt 变成了这样(优化后):

你是一个专业的兼职信息审核员。你的任务是分析用户提供的兼职招聘文本,

并严格按照以下 JSON 格式输出,不得添加任何额外文字:

{

"score": <1-10的整数,10分为最优质>,

"summary": "<不超过50字的一句话摘要>",

"risks": ["<风险标签1>", "<风险标签2>"],

"recommendation": "<推荐/观望/跳过 三选一>"

}

评分标准:

  • 薪资明确(标注具体金额):+2分
  • 公司信息完整(有营业执照/官网):+2分
  • 工作内容描述清晰:+2分
  • 无需提前付费:+2分
  • 有真实联系方式:+2分
  • 每出现一个风险信号:-1分

风险标签参考(可多选):

押金陷阱、薪资模糊、信息不完整、联系方式可疑、疑似诈骗、平台未认证

只输出 JSON,不输出其他任何内容。

优化后,格式稳定性从大约 40% 提升到了 90% 以上。剩下 10% 的异常,我在 Flowise 里加了一个 Output Parser 节点做兜底处理。

【避坑口诀】:给 AI 出题,要像给实习生写工作手册——评分标准、输出格式、边界条件,一个都不能少。

---

坑 3:Agent 循环调用工具,内存爆炸,机器直接卡死

【现象】

这是最严重的一个坑。我给 Agent 加了"自动搜索补充信息"的工具节点,结果某次运行时,Agent 陷入了循环——它不断调用搜索工具,搜索结果又触发新的搜索,内存在 3 分钟内从 8GB 飙到 28GB,然后整台机器失去响应,强制重启。

【排查过程】

Flowise 的 Agent 节点默认没有设置最大迭代次数上限。当 Agent 遇到模糊任务时,它可能会陷入"我需要更多信息 → 去搜索 → 搜索结果还不够 → 继续搜索"的死循环。

【解决方案】

两个层面同时设防:

① Flowise Agent 节点设置最大迭代次数:

在 Agent 节点的 Max Iterations 参数里,把默认值从无限制改为 5。超过 5 次工具调用,强制返回当前结果。

② Ollama 层面限制内存占用:

编辑 Ollama 的 Modelfile,或者通过环境变量控制:

# 限制模型最大使用内存(根据你的机器调整)

export OLLAMA_MAX_LOADED_MODELS=1

export OLLAMA_NUM_PARALLEL=1

启动时限制上下文长度,减少内存占用

ollama run internlm3:8b-instruct-q4_K_M --ctx-size 2048

③ 在 System Prompt 里加约束:
注意:你最多只能调用工具 3 次。

如果 3 次内无法获得足够信息,请基于现有信息给出评估,

并在 risks 字段中标注"信息不完整"。

三管齐下之后,再没出现过循环卡死的情况。

【避坑口诀】:给 Agent 加工具,必须同时加上"刹车"——迭代上限、内存上限、Prompt 层的次数约束,三重保险缺一不可。

---

实际效果怎么样?

搭好之后,我拿 50 条真实兼职信息做了测试。这 50 条是我从 3 个平台手动收集的,涵盖了设计、文案、数据标注、线下促销等不同类型。

效率对比: | 指标 | 手动筛选 | AI Agent | | 处理 50 条耗时 | 约 2 小时 | 约 8 分钟 | | 平均每条耗时 | ~2.4 分钟 | ~9.6 秒 | | 需要我盯着 | 是 | 否 | 准确率分析:
  • 50 条中,AI 正确识别"值得关注"的优质信息:18 条中识别 16 条,漏掉 2 条(原因:这两条薪资用图片展示,文字部分信息不完整)
  • 正确识别风险信息:24 条中识别 22 条,误判 2 条(把一家正规公司的简洁风格误判为"信息不完整")
  • 整体准确率约 76%,对于一个周末搭出来的本地方案,我觉得够用了
一条完整的输出样例:
{

"score": 7,

"summary": "某电商公司招周末兼职客服,时薪35元,需有淘宝购物经验,工作地点在市区",

"risks": ["联系方式仅微信,未提供公司官网"],

"recommendation": "观望"

}

客观说局限性:这套方案对纯图片信息完全无能为力,遇到那种"薪资写在截图里"的帖子,AI 只能看到空白。另外,InternLM-3 对某些垂直行业的黑话理解偏差较大,比如"MCN 运营"这类新兴职位,偶尔会给出奇怪的风险标签。

---

想继续玩?三个扩展方向

系统跑通之后,我想了几个可以继续深挖的方向:

① 接入飞书/微信机器人,主动推送

Flowise 支持 Webhook 触发,可以定时跑 Flow,把评分 8 分以上的信息自动推送到飞书群或者微信。这样我连打开软件都不需要,信息自己找上门。

② 换用更强的模型 API 提升准确率

本地跑 8B 量化模型,准确率有天花板。如果换成参数量更大的模型,识别细节的能力会有明显提升。

这里要说一个本地方案的现实问题——你的电脑不是服务器,它要睡觉,你也要睡觉。 如果你希望 Agent 7×24 小时待命,或者你的显卡撑不住 InternLM-3,可以考虑接入稳定的第三方 API 服务。

我目前测试下来,[api.884819.xyz](https://api.884819.xyz) 的兼容性不错,支持 OpenAI 格式直接对接 Flowise,切换成本很低——基本就是把 Ollama 节点换成 OpenAI 节点,改一行 Base URL 的事。平台上有 Claude Sonnet 4.6、Gemini 3.1 Pro 这类旗舰模型可以选,注册即送体验额度,国产模型(Deepseek R1/V3、Kimi K2.5 等)完全免费调用,没有月租。即日起新注册用户系统自动送 50 万 token,想要更多可以通过工单联系客服申请,再手动赠送 200 万 token。 有需要的同学可以去看看。

③ 加入向量数据库做历史去重

同一条兼职信息经常在多个平台反复出现,浪费评估资源。接入 Chroma 或者 Milvus 做向量去重,可以让 Agent 只处理真正的新信息。

---

如果让我重来一次,我会先把 Prompt 写好再动手搭 Flow。那 3 个坑里,坑 2 的折腾时间最长,根本原因就是我低估了"让模型听话"这件事的难度。

行动建议:先装好 Ollama,把 InternLM-3 跑起来,用 curl 测一下中文响应正常,再去装 Flowise。顺序别搞反,否则你不知道问题出在哪一层。

---

顺带一提,这套 Agent 现在只能处理文字类的兼职信息。

>

但你知道吗,很多骗局藏在图片里——截图发工资、PS 合同、假营业执照……

>

我正在研究怎么给它加上多模态识别的能力,让它连图片里的猫腻也看穿。

>

下篇见。

---

本文由8848AI原创,转载请注明出处。关注8848AI,带你从零开始学AI。

#AI Agent #Flowise #本地部署 #InternLM #Prompt技巧 #AI教程 #8848AI #开源工具