开完会,群里留下几条安排,你可以把它们整理成可复制的行动清单。本教程用 Python 调用电脑上运行的 Ollama,把一段虚构工作记录转换为 JSON;内容留在本机,不需要云端 API Key。
我们选 Qwen3.8-27B,是因为这次任务要读懂中文时间表达,并按固定字段输出结构化结果。本机已有这个模型。一次测试正确提取了三项安排;这只是一个样例,不能当成模型准确率保证。
先准备本地模型
Ollama 是在电脑上运行大模型的软件。若还没安装,可先看本站 Ollama 安装教程。安装后打开终端检查:
ollama --version
ollama list
从 Ollama 官方模型库下载 Qwen3.8:
ollama pull qwen3.8
本机模型标签可能显示为 qwen3.8:latest、qwen3.8-27b:latest 等。运行 ollama list,记下实际名称。Qwen3.8 模型比较大;这次在 M1 Max、64GB 统一内存的电脑上实测,运行时 Ollama 显示约 34GB 内存占用。内存较小的电脑先用自己能运行的轻量模型,把练习包里的模型名改成 ollama list 显示的标签再试。
把 API 接进 Python 程序
Ollama 提供本机 Chat API,地址是 http://localhost:11434/api/chat。程序提交模型名和对话内容,收到响应后从 message.content 读取回答。这个小程序使用 Python 自带的 urllib,不必安装第三方库。
下载并解压本地大模型 API 练习包。在终端进入解压后的文件夹,运行:
python3 提取行动项.py
粘贴一段安排,例如:
周五前给小周发合同初稿;周三下午2点和林老师开会讨论春季课程;周五复盘上周报名数据。
脚本会向本机 /api/chat 发送模型名、系统要求和这段文字。stream: false 让 API 一次返回完整回答,程序可以直接读取 JSON;format: "json" 要求模型按 JSON 格式作答。脚本还会检查字段类型和时间格式,格式不对就停止并提示重试。
正常情况下会得到类似这样的结果:
{
"tasks": [
{
"action": "给小周发合同初稿",
"person": "小周",
"due_expression": "周五前",
"time": ""
},
{
"action": "和林老师开会讨论春季课程",
"person": "林老师",
"due_expression": "周三下午2点",
"time": "14:00"
},
{
"action": "复盘上周报名数据",
"person": "",
"due_expression": "周五",
"time": ""
}
]
}
这里保留了“周五前”“周三下午2点”等原始说法,没有猜具体日期。接入自己的应用时,JSON 可以作为后续界面的数据输入;在写入日历、工单或客户系统之前,仍要让人检查任务有没有漏、时间有没有理解错。
改用自己下载的模型
如果 ollama list 显示的模型名不是 qwen3.8:latest,可以在运行时指定它,不用改代码。例如:
OLLAMA_MODEL=qwen3.8-27b:latest python3 提取行动项.py
再运行练习包里的基础自检:
python3 selfcheck.py
自检会用模拟 API 响应检查 JSON 格式、请求参数和输入长度限制,不会生成模型内容。真实模型效果以你本机的测试为准。
我们试了什么
在 Ollama 0.35.1 上,用本机 qwen3.8-27b:latest 处理上面的虚构记录。API 返回 3 项任务,联系人和相对时间与原文一致,明确的“下午2点”转换为 14:00;单次请求约 46 秒,模型加载约 14 秒。这只能说明该样例通过,其他写法、方言和更长的群聊记录都需要单独检查。
Ollama 本机 API 默认不需要云端密钥;它也没有替这个示例加用户登录或权限校验。只在本机使用时,把脚本和服务都留在本机;不要为了让网页方便访问就把 11434 端口直接暴露到公网。练习脚本只把回复打印到终端,不会保存原始工作记录。
练习包里有什么
提取行动项.py:完整的 API 调用程序selfcheck.py:无模型依赖的输入和返回格式自检model_response.json:本次模型响应样例test_record.md:环境、用时和核验结果
要做成团队服务,还需另外设计登录、并发队列、数据保存期限和访问权限。本教程只完成个人电脑上的调用原型。