Python从零构建macOS状态栏应用(仿ollama)并集成AI同款流式聊天 API 服务(含打包为独立应用)

news/2025/2/9 1:41:18 标签: python, macos, 人工智能

在本教程中,我们将一步步构建一个 macOS 状态栏应用程序,并集成一个 Flask 服务器,提供流式响应的 API 服务。
如果你手中正好持有一台 MacBook Pro,又怀揣着搭建 AI 聊天服务的想法,却不知从何处迈出第一步,那么这篇文章绝对是你的及时雨。
最终,我们将实现以下功能:

  1. 在 macOS 状态栏显示应用程序图标。
  2. 点击菜单项触发操作。
  3. 集成 Flask 服务器,提供流式响应的 API。

在这里插入图片描述

1.准备工作

1.1 安装依赖

首先,确保你已经安装了以下工具和库:

  • Python 3.x
  • rumps:用于创建 macOS 状态栏应用程序。
  • Flask:用于创建 API 服务器。

可以通过以下命令安装依赖:

pip install rumps flask

1.2 创建项目目录

创建一个项目目录,并初始化文件结构:

my_app/
├── ai_server.iconset/  # 存放应用程序图标
├── app.py              # 状态栏应用程序主文件
└── server.py           # Flask 服务器文件

2、创建 Flask 服务器

2.1 编写 server.py

在 server.py 中,我们实现一个简单的 Flask 服务器,提供流式响应的 API。
主要功能:
1、API 路由:

  • /chat:处理 POST 请求,返回流式响应。
  • /:根路由,返回欢迎信息。

2、流式响应:

  • 使用 Server-Sent Events (SSE) 逐步返回数据,模拟聊天生成器。

3、多线程支持:

  • 通过多线程运行 Flask 服务器,避免阻塞主线程。
python">from flask import Flask, Response, request
import time
import threading


class ChatServer:
    def __init__(self, host='127.0.0.1', port=5000):
        self.host = host
        self.port = port
        self.app = Flask(__name__)
        self._setup_routes()

    def _setup_routes(self):
        """设置 Flask 路由"""
        @self.app.route('/chat', methods=['POST'])
        def chat():
            message = request.json.get('message', '')
            return Response(self

http://www.niftyadmin.cn/n/5840109.html

相关文章

因果推断与机器学习—因果推断入门(1)

在机器学习被广泛应用于对人类产生巨大影响的场景(如社交网络、电商、搜索引擎等)的今天,因果推断的重要性开始在机器学习社区的论文和演讲中被不断提及。图灵奖得主 Yoshua Bengio 在对系统 2(system 2,这个说法来自心理学家 Daniel Kahneman 的作品,人类大脑由两套系统…

neo4j入门

文章目录 neo4j版本说明部署安装Mac部署docker部署 neo4j web工具使用数据结构图数据库VS关系数据库 neo4j neo4j官网Neo4j是用ava实现的开源NoSQL图数据库。Neo4作为图数据库中的代表产品,已经在众多的行业项目中进行了应用,如:网络管理&am…

机器学习优化算法:从梯度下降到Adam及其变种

机器学习优化算法:从梯度下降到Adam及其变种 引言 最近deepseek的爆火已然说明,在机器学习领域,优化算法是模型训练的核心驱动力。无论是简单的线性回归还是复杂的深度神经网络,优化算法的选择直接影响模型的收敛速度、泛化性能…

一、html笔记

(一)前端概述 1、定义 前端是Web应用程序的前台部分,运行在PC端、移动端等浏览器上,展现给用户浏览的网页。通过HTML、CSS、JavaScript等技术实现,是用户能够直接看到和操作的界面部分。上网就是下载html文档,浏览器是一个解释器,运行从服务器下载的html文件,解析html、…

电脑优化大师-解决电脑卡顿问题

我们常常会遇到电脑运行缓慢、网速卡顿的情况,但又不知道是哪个程序在占用过多资源。这时候,一款能够实时监控网络和系统状态的工具就显得尤为重要了。今天,就来给大家介绍一款小巧实用的监控工具「TrafficMonitor」。 「TrafficMonitor 」是…

使用PyTorch实现逻辑回归:从训练到模型保存与性能评估

1. 引入必要的库 首先,需要引入必要的库。PyTorch用于构建和训练模型,pandas和numpy用于数据处理,scikit-learn用于计算性能指标。 import torch import torch.nn as nn import torch.optim as optim import pandas as pd import numpy as …

电子电气架构 --- 汽车电子拓扑架构的演进过程

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活…

三、js笔记

(一)JavaScript概述 1、发展历史 ScriptEase.(客户端执行的语言):1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端执行的语言)Javascript:Netscape(网景)接收Nombas的理念,(Brendan Eich)在其Netscape Navigat…