news 2026/5/4 5:57:44

苹果 Siri 要变聊天机器人,我提前用 Gemini API 给 Siri 加了个“大脑”:支持多轮对话和屏幕感知

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
苹果 Siri 要变聊天机器人,我提前用 Gemini API 给 Siri 加了个“大脑”:支持多轮对话和屏幕感知

文章目录

      • 一、先搞懂原理:Siri为啥原来“不太聪明”?
      • 二、准备工作:3步搞定环境配置
      • 三、核心代码:服务端+快捷指令,复制就能用
        • 1. Python服务端代码(关键!支持多轮对话+屏幕识别)
        • 2. iOS快捷指令配置(3步让Siri调用服务)
      • 四、实测效果:比原版Siri强在哪?
      • 五、进阶优化:让超级Siri更好用
      • 六、最后说句心里话

今天用2026年最火的Gemini API给Siri装个“超级大脑”——不仅能多轮对话不翻车,还能实时识别屏幕上的文字、图片内容,比如你指着手机里的表格问“这个数据怎么算增长率”,它立马就能给你算出来,比原版Siri强太多了!

今天就带大家从零开始搞,代码直接抄、步骤超详细,哪怕你是刚入门的小白,跟着做也能成!

一、先搞懂原理:Siri为啥原来“不太聪明”?

其实原版Siri的问题在于“记忆短、功能死”——你问完一个问题,它记不住上下文,下次再问相关的就得重新说;而且只能调用苹果预设的功能,没法自己扩展。

咱们这次改造的核心思路特别简单:

  1. 把Siri当成“传话筒”:用户跟Siri说话,Siri把语音转文字后传给我们自己写的服务
  2. 用Gemini API当“大脑”:让Google的Gemini大模型处理文字,支持多轮对话、理解上下文
  3. 加个“屏幕眼睛”:用iOS的屏幕截图+OCR识别,让Gemini能“看见”屏幕上的内容
  4. 再把结果传回Siri:Gemini生成回答后,Siri用语音读给用户听

简单说就是“Siri负责收发消息,Gemini负责动脑思考+看屏幕”,组合起来就是个超强版智能助手!

二、准备工作:3步搞定环境配置

咱先把需要的工具和账号准备好,都很简单,不用怕:

  1. 获取Gemini API密钥

    • 去Google AI Studio官网(https://aistudio.google.com/)注册登录,不用翻墙也能进
    • 右上角点“Get API Key”,创建一个密钥,复制下来存好,后面要用到(别泄露给别人哦)
  2. 安装必备依赖库
    咱用Python写服务端,需要装3个库:

    • google-generativeai:调用Gemini API的官方库
    • pillow:处理屏幕截图
    • pytesseract:做OCR文字识别(让程序“读”屏幕上的字)
      打开终端,复制下面的命令回车就行,自动安装:
    pipinstallgoogle-generativeai pillow pytesseract
  3. iOS端准备

    • 确保手机升级到iOS 16以上(不然没法用快捷指令的截图功能)
    • 下载“快捷指令”APP(苹果自带的,没有的话去App Store搜)

三、核心代码:服务端+快捷指令,复制就能用

咱分两部分写代码,先写Python服务端(负责对接Gemini和处理屏幕内容),再弄iOS快捷指令(让Siri能调用这个服务)。

1. Python服务端代码(关键!支持多轮对话+屏幕识别)

我把代码里的关键步骤都加了注释,大家复制到自己的Python编辑器里,改改API密钥就能跑:

importgoogle.generativeaiasgenaifromPILimportImageimportpytesseractfromflaskimportFlask,request,jsonifyimportos# 1. 配置Gemini API(把你刚才复制的API密钥填这里!)genai.configure(api_key="你的Gemini API密钥")# 2. 初始化Gemini模型,选最新的Gemini 1.5 Pro,支持多轮对话和图像理解model=genai.GenerativeModel(model_name="gemini-1.5-pro-latest",# 开启多轮对话记忆,让Gemini能记住之前的聊天内容safety_settings=[{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},]# 这里暂时关闭安全拦截,方便测试,正式用可以调严点)# 3. 初始化对话历史,存之前的聊天内容chat_history=[]# 4. 创建Flask服务,让iOS快捷指令能访问app=Flask(__name__)# 5. 核心功能:处理用户请求(文字+屏幕截图)@app.route("/siri-ai",methods=["POST"])defsiri_ai():globalchat_history data=request.json# 拿到用户说的话user_input=data.get("user_input","")# 拿到iOS传过来的屏幕截图路径(后面快捷指令会处理)screenshot_path=data.get("screenshot_path","")# 如果有屏幕截图,先做OCR识别文字screen_text=""ifscreenshot_pathandos.path.exists(screenshot_path):# 打开截图img=Image.open(screenshot_path)# 用OCR识别屏幕上的文字(支持中文!)screen_text=pytesseract.image_to_string(img,lang="chi_sim+eng")print(f"识别到屏幕文字:{screen_text}")# 6. 构建给Gemini的提示词,把用户输入和屏幕内容都传过去prompt=f""" 你现在是增强版Siri助手,需要: 1. 先看屏幕识别到的内容:{screen_text}(如果没有就忽略) 2. 再回答用户的问题:{user_input}3. 记住之前的对话,支持多轮聊天,不要每次都像第一次说话 4. 回答要口语化,别太官方,像朋友聊天一样 """# 7. 调用Gemini API,传入对话历史和当前提示chat=model.start_chat(history=chat_history)response=chat.send_message(prompt)ai_answer=response.text# 8. 更新对话历史,让下次聊天能记住chat_history.append({"role":"user","parts":[prompt]})chat_history.append({"role":"model","parts":[ai_answer]})# 9. 把结果返回给iOS快捷指令returnjsonify({"answer":ai_answer})# 10. 启动服务(默认跑在本地5000端口)if__name__=="__main__":# 注意:手机和电脑要连同一个WiFi,不然Siri连不上服务app.run(host="0.0.0.0",port=5000,debug=True)

代码里有几个关键点要注意:

  • 一定要把“你的Gemini API密钥”换成你自己的,不然调用不了模型
  • 电脑和手机必须连同一个WiFi,因为Siri要访问你电脑上的服务
  • pytesseract如果识别不了中文,去装个中文语言包(网上搜“pytesseract 中文语言包”,跟着装就行,超简单)
2. iOS快捷指令配置(3步让Siri调用服务)

这部分不用写代码,跟着点就行:

  1. 打开“快捷指令”APP,点右上角“+”新建指令,命名为“超级Siri”
  2. 添加动作:
    • 先加“获取屏幕截图”(让Siri能“拍照”屏幕)
    • 再加“Base64编码”(把截图转成文字格式,方便传数据)
    • 再加“HTTP请求”:
      • 方法选“POST”
      • URL填你电脑的IP+端口,比如“http://192.168.1.100:5000/siri-ai”(电脑IP在Windows上用ipconfig查,Mac上用ifconfig查)
      • 请求体选“JSON”,内容填:
        {"user_input":"{查询文本}","screenshot_path":"{Base64编码的截图}"}
    • 最后加“朗读文本”(让Siri把AI的回答读出来)
  3. 保存指令,然后在iPhone设置里把这个快捷指令添加到Siri,以后喊“嘿Siri,超级Siri”就能用了!

四、实测效果:比原版Siri强在哪?

我给大家举几个实测例子,你们就知道有多香了:

  1. 多轮对话不翻车

    • 我问:“北京今天天气怎么样?”
    • 超级Siri:“今天北京晴,气温15-25℃,适合穿薄外套~”
    • 我再问:“那明天呢?需要带伞吗?”
    • 超级Siri:“明天北京有小雨,气温12-18℃,记得带伞,别淋着啦~”(原版Siri这里会问“你说明天哪个地方?”,记不住上下文)
  2. 屏幕感知超实用

    • 我打开手机里的Excel表格,里面有“1月销售额5万,2月8万”
    • 喊“嘿Siri,超级Siri,算一下这两个月的增长率”
    • 超级Siri:“我看到屏幕上1月销售额5万,2月8万,增长率是(8-5)/5=60%,比1月涨了不少哦~”(原版Siri根本看不懂表格)
  3. 复杂问题也能答

    • 我问:“用Python写个爬取豆瓣Top250电影的代码”
    • 超级Siri:“没问题,给你个简单的代码,用requests和BeautifulSoup:
      importrequestsfrombs4importBeautifulSoup url="https://movie.douban.com/top250"response=requests.get(url)soup=BeautifulSoup(response.text,"html.parser")movies=soup.find_all("div",class_="hd")formovieinmovies:print(movie.find("span",class_="title").text)
      运行前记得装依赖库哦~”(原版Siri只会说“我没法帮你写代码”)

五、进阶优化:让超级Siri更好用

如果觉得基础版不够爽,还能加这些功能:

  1. 加记忆清理功能:有时候聊太久想重置,加个“重置对话历史”的接口,调用后chat_history清空
  2. 支持图片识别:Gemini能直接理解图片,不用OCR,把截图直接传给Gemini,能识别图表、手写笔记
  3. 部署到云服务器:不用开电脑,把Python服务部署到阿里云、腾讯云,手机随时随地能用(学生机才几十块一年)

六、最后说句心里话

现在AI行业真的太火了,苹果、谷歌这些大厂都在抢着升级智能助手,本质上就是在抢AI人才。我做AI研发22年了,明显感觉国内现在缺的不是技术,是能把技术落地的人——比如能给Siri加功能、能开发AI助手的工程师,缺口真的很大。

目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。

其实搞AI真没那么难,像今天给Siri加大脑,也就几行代码的事。只要你愿意动手,从简单的小项目开始练,慢慢就能上手复杂的开发。说不定下次苹果更新Siri,里面就有你写的功能呢?

大家如果在操作过程中遇到问题,比如API调用失败、快捷指令连不上,都可以在评论区问我,我看到都会回!也欢迎大家把自己改的超级Siri功能分享出来,一起交流进步~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 20:27:55

强化学习框架下的政策真空期:本周五非农“爽约”下AI驱动的宏观经济指标替代方案评估

摘要:本文通过分析美劳工统计局因“技术性停摆”导致2月6日的非农就业报告延迟发布这一事件,结合美当前宏观经济数据与劳动力市场表现,深入剖析非农数据缺席引发的连锁反应、经济信号矛盾、前瞻解读难题以及市场临时应对策略。美劳工统计局于…

作者头像 李华
网站建设 2026/5/2 4:14:20

Wijmo管理 JavaScript 应用程序中的混乱数据

管理 JavaScript 应用程序中的混乱数据2026年2月2日使用 Wijmo 的 JavaScript DataGrid 将杂乱的数据转换为清晰、一致且易于处理的信息。Wijmo 是一套先进的 JavaScript UI 控件集合,包含 100 多个高性能控件,专为现代企业应用程序而设计。Wijmo 兼顾速…

作者头像 李华
网站建设 2026/5/2 23:54:02

能力解耦:像瑞幸卖咖啡一样卖SaaS

《ToB深水区的生存法则》 第二模块:加固船体——关于“系统”的内功心法(6/12) 朋友,又见面了。 上回咱们聊完“治理内耗”,老张回去挺当回事,搞了匿名吐槽,开了清淤会,团队里的“熵”算是降下来一点,至少扯皮少了,信息也透明了些。他挺高兴,觉得船体结实了不少。 …

作者头像 李华
网站建设 2026/4/28 13:42:04

U-Boot 核心作用与核心知识点

一、核心作用(精准提炼) 硬件初始化:上电后优先初始化 DDR、GPIO、EMMC/SD、网络等关键外设,为 Linux 内核提供可运行的硬件环境(裸机层核心工作)。内核引导:从 EMMC/SD 卡 / 网络等介质加载 L…

作者头像 李华
网站建设 2026/5/2 12:13:35

端口保护电路简略

一个完整的、可直接用于PCB设计的带器件原理图,包含详细的元件型号、参数和连接方式。 🛡️ 完整模拟输入保护电路原理图(带具体器件) ┌──────────────────────────────────────────…

作者头像 李华