用 iOS 的快捷指令调用 LLM 实现日常工作的自动化
自从 GPT 3.5 的横空出世已经有三年有余,这几年中 LLM 不局限于文本补全,在各个方面都有了功能上的扩展,例如深度思考、多模态、函数调用等等。本文中笔者将以「从剪贴板中的文本添加 To-do」这一功能为例,展示如何在 iOS 的快捷指令中,利用 LLM 函数调用的功能,实现日常工作的自动化。

背景
iOS 的快捷指令
iOS 的快捷指令是苹果提供的一个自动化工具,允许用户创建自定义的工作流程来简化日常任务。用户可以通过图形化的界面创建指令。快捷指令可以与系统和一些第三方应用交互,以实现自动化操作。
在本文的场景中,主要用到了快捷指令的这些功能:
- 获取剪贴板内容
- 发送网络请求(以调用 LLM 的 API)
- 解析 JSON 响应
- 添加待办事项到 提醒 app
快捷指令的最大缺点是只支持图形化的界面操作,无法直接编写代码,这使得一些复杂的逻辑实现变得困难,也不能让 LLM 辅助编写代码。
LLM 函数调用
将 LLM 用于自动化任务的一个难点是如何让 LLM 理解并执行规范化的操作。
函数调用 (Function Calling), 或者用最近流行的说法是「模型上下文协议」 (Model Context Protocol, MCP), 是指 LLM 在处理请求时,可以调用预定义的函数来获取或处理数据。支持函数调用的模型可以在响应中返回函数调用的参数,而不是直接生成文本。这使得 LLM 可以更精确地执行任务,并减少了对自然语言理解的依赖。
例子
要添加一个待办事项,我们需要的是这个时间的标题、时间和描述。我们根据这一需求定义函数:
"tools": [{
"name": "extract_event_and_time",
"description": "从文本中提取事件和时间信息",
"parameters": {
"type": "object",
"properties": {
"event": {
"type": "string",
"description": "从文本中提取的事件的简单描述"
},
"time": {
"type": "string",
"description": "从文本中提取的时间信息,格式化为 yyyy/MM/dd HH:mm"
},
"description": {
"type": "string",
"description": "可选,从文本中提取的事件的详细描述"
}
},
"required": ["event", "time"]
}
}]
然后加上我们的 system prompt 和 user prompt, 发送请求给 LLM:
{
"model": "gpt-4.1-mini",
"messages": [
{
"role": "system",
"content": "你是一个智能助手。你的任务是从用户提供的文本中提取创建提醒事项所需的信息,并使用 'extract_event_and_time' 函数来结构化这些信息。请特别注意日期和时间的解析,当前的时间是{当前时间}。"
},
{
"role": "user",
"content": "{剪贴板内容}"
}
],
"tools": tools,
"tool_choice": {
"type": "function",
"function": {
"name": "extract_event_and_time"
}
}
}
以输入明天中午吃麦当劳
为例,得到的请求结果如下:
{
"choices": [
{
"finish_reason": "stop",
"index": 0,
"logprobs": null,
"message": {
"annotations": [],
"content": null,
"refusal": null,
"role": "assistant",
"tool_calls": [
{
"function": {
"arguments": "{\"event\":\"中午吃麦当劳\",\"time\":\"2025-05-25-12-00\"}",
"name": "extract_event_and_time"
},
"id": "call_CAttuHgDc49Qvrv8zUa3PubB",
"type": "function"
}
]
}
}
],
"created": 1747378308,
"id": "chatcmpl-BXjD2WiJg93r6pt6EmuGMk7Hcflv5",
"model": "gpt-4.1-mini",
"object": "chat.completion",
"service_tier": "default",
"system_fingerprint": "fp_79b79be41f",
"usage": {
"completion_tokens": 24,
"completion_tokens_details": {
"accepted_prediction_tokens": 0,
"audio_tokens": 0,
"reasoning_tokens": 0,
"rejected_prediction_tokens": 0
},
"prompt_tokens": 137,
"prompt_tokens_details": {
"audio_tokens": 0,
"cached_tokens": 0
},
"total_tokens": 161
}
}
这之后,用快捷指令的「从输入中获取词典」、「获取字典值」、「从列表中获取项目」等操作解析出函数调用的参数,然后用「添加提醒」操作将待办事项添加到提醒 app 中,即可。
已经写好的样例快捷指令可以在这里下载, 只需您填写自己的 API Key 即可使用。