当前位置: 首页 > article >正文

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

在本教程中,我们将一步步构建一个 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 服务器,避免阻塞主线程。
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.kler.cn/a/528777.html

相关文章:

  • labelme_json_to_dataset ValueError: path is on mount ‘D:‘,start on C
  • vue虚拟列表优化前端性能
  • 深度解析:网站快速收录与服务器性能的关系
  • Docker小游戏 | 使用Docker部署2048网页小游戏
  • 使用langchain ollama gradio搭建一个本地基于deepseek r1的RAG问答系统
  • 数据分析系列--⑤RapidMiner进行关联分析(中文数据案例)
  • 为什么LabVIEW适合软硬件结合的项目?
  • Redisson详解
  • 【学习笔记之coze扣子】应用创建
  • 编程题-最接近的三数之和
  • Http协议详解以及GET和POST请求
  • 吴恩达深度学习——超参数调试
  • WSL2 Ubuntu20.04 无法联网,解决方案
  • 一个缓冲区重叠漏洞分析与利用
  • 杨波 简单逻辑学:理性思考、清晰表达并解决问题 - 读书笔记
  • Vue.js 新的生命周期钩子:`onMounted`, `onUpdated` 等
  • 5.4.2 结构化设计方法+结构化程序设计方法
  • 基于Python的药物相互作用预测模型AI构建与优化(上.文字部分)
  • 自适应细粒度通道注意力机制FCA详解及代码复现
  • 使用C#开发一款通用数据库管理工具
  • 攻防世界_simple_php
  • c++ linux recv的概念和使用案例(服务端和客户端都有)
  • 【数据结构篇】时间复杂度
  • 读书笔记-《你的灯亮着吗?》
  • 嵌入式硬件篇---CPUGPUTPU
  • taskset -c 1-60