[Meetily后端框架] 配置指南 | 后端API網關 | API文檔體系

鏈接: https://github.com/Zackriya-Solutions/meeting-minutes

在這里插入圖片描述

docs:會議紀要管理系統

本項目是一個專門用于**處理會議記錄**的后端系統
系統接收會議文本內容,利用先進的AI模型自動識別關鍵信息,包括行動項決策內容以及截止期限
處理結果將存入數據庫并格式化為清晰的結構化的摘要報告。系統整合了*音頻轉文字*工具鏈,并提供自動化部署腳本實現后端服務的快速搭建與運行。

系統架構

在這里插入圖片描述
結構化處理會議內容后,即可通過mcp協議 傳回llm了

章節目錄

  1. 后端API網關
  2. API文檔
  3. 摘要數據結構(Pydantic模型)
  4. 文本處理邏輯
  5. AI模型交互層(Pydantic-AI代理)
  6. 數據庫管理
  7. Whisper語音轉寫服務
  8. 后端服務管理腳本

Meetily AI會議助手配置指南

Meetily是一款本地化AI會議助手,支持實時音頻采集語音轉寫智能摘要生成,具備以下核心優勢:

  • 🔒 隱私優先:所有處理在本地設備完成
  • 💰 經濟高效:采用開源AI模型替代付費API
  • 🛠? 靈活部署:支持Windows/macOS雙平臺離線運行
  • 🧠 智能分析:內置知識圖譜實現語義檢索

二、系統架構

在這里插入圖片描述

核心組件

  1. 音頻采集服務

    • Rust/Python雙棧實現
    • 支持麥克風/系統音頻雙通道采集
  2. 轉錄引擎

    • 基于Whisper.cpp本地引擎
    • 支持GPU加速(tiny->large-v3多尺寸模型)
  3. LLM編排器

    • 統一接口適配多模型提供商
    • 自動分塊重疊處理(默認分塊4K/重疊1K)

三、安裝部署

先決條件

  • Node.js 18+
  • Python 3.10+
  • FFmpeg
  • Rust 1.65+(可選特性)
  • Cmake 3.22+

Windows部署

前端安裝
# 方式1:EXE安裝(推薦)
meetily-frontend_0.0.4_x64-setup.exe# 方式2:MSI安裝
meetily-frontend_0.0.4_x64_en-US.msi# 安全警告處理
右鍵安裝包 > 屬性 > 勾選"解除鎖定"
后端部署
git clone https://github.com/Zackriya-Solutions/meeting-minutes
cd meeting-minutes/backend# 手動部署
.\build_whisper.cmd
.\start_with_output.ps1# Docker部署
.\docker-build.bat

在這里插入圖片描述
在這里插入圖片描述


四、模型配置

Whisper模型選擇

模型類型適用場景示例型號
標準模型平衡精度與速度small, medium
英語優化純英文環境加速small.en, medium.en
量化模型存儲空間受限tiny-q5_1, base-q5_1
高級模型專業場景需求large-v3-turbo
# 模型下載命令
meetily-download-model small

五、LLM集成

在這里插入圖片描述

配置要點

  1. backend/config.yaml中設置API密鑰
  2. 啟用多模型回退機制
  3. 驗證函數調用支持:
    curl http://localhost:5167/validate-llm
    

六、故障排除

后端問題

# 端口占用檢查
lsof -i :8178 && lsof -i :5167# FFmpeg驗證
ffmpeg -version | grep 'configuration'# 日志查看
tail -f $(brew --prefix)/var/log/meetily-backend.log

前端問題

# 連接測試
nc -zv localhost 5167# 權限重置
xattr -cr /Applications/meetily-frontend.app

七、開發指南

代碼結構

meeting-minutes/
├── frontend/          # Tauri+Next.js前端
├── backend/           # FastAPI后端
│   ├── whisper-server-package/
│   └── transcript_processor.py
└── docker-build.bat   # 跨平臺構建腳本

貢獻流程

  1. Fork項目倉庫
  2. 創建特性分支
  3. 提交PR時包含:
    • 測試用例
    • API變更文檔
    • 類型注解說明

八、擴展配置

知識圖譜啟用

# config.yaml
knowledge_graph:enable: truestorage_path: /var/meetily/kgindexing_interval: 300 # 秒

Obsidian集成

  1. 安裝社區插件Meetily Bridge
  2. 配置同步路徑:
    {"vault_path": "/Users/<username>/Documents/Obsidian","sync_interval": 600
    }
    

提示:完整開發文檔可通過meetily-docs --web啟動本地文檔服務器查看

本教程持續更新,建議通過brew upgrade meetily獲取最新版本。


第一章:后端API網關

歡迎來到meeting-minutes后端部分的首個章節!

我們將深入探索該項目的后臺運作機制。后端如同系統的"大腦",承擔著處理會議轉錄生成行動項數據存儲等核心任務。

本章將聚焦系統的入口組件——后端API網關

API網關解決的問題

想象我們身處大型企業總部,訪客需要辦理各類事務:會面、快遞、求職、設備維護等。所有流程都始于前臺接待,其核心價值在于:

  1. 作為唯一入口點無需知曉內部辦公室分布
  2. 精準理解需求并引導至對應部門
  3. 高效處理登記、簽收等標準化流程

meeting-minutes系統中,后端服務器如同企業大樓,前端應用(網頁/桌面端)則是需要服務的訪客。

前端需要與后端進行多種交互:

  • 提交新會議轉錄文本
  • 獲取處理完成的會議摘要
  • 查詢歷史會議記錄
  • 保存用戶配置參數

若無統一入口,前端將不知如何定向請求。

這正是后端API網關的價值所在——它如同數字前臺,接收所有前端請求并路由至對應處理模塊


API網關的核心職能

該組件承擔四大核心角色:
在這里插入圖片描述

技術實現基于Python的FastAPI框架,通過定義端點(endpoints)提供服務接入

實戰案例:轉錄處理流程

以前端提交會議轉錄為例,演示網關工作流程。根據API文檔,處理端點地址為/process-transcript,采用POST方法。

可通過curl命令模擬請求:

curl -X POST \http://localhost:5167/process-transcript \-H "Content-Type: application/json" \-d '{"text": "本次會議討論季度目標...","model": "claude","model_name": "claude-3-5-sonnet-latest","meeting_id": "dummy-123"
}'

參數解析:

  • -X POST:指定POST請求方法
  • http://localhost:5167/process-transcript:網關地址與端點路徑
  • -H:聲明JSON數據格式
  • -d:傳輸的JSON有效載荷

后端代碼解析

查看backend/app/main.py中的網關實現:

1. FastAPI應用初始化

from fastapi import FastAPIapp = FastAPI(title="會議摘要生成API",description="處理與生成會議轉錄摘要的接口服務",version="1.0.0"
)

2. 數據模型定義

from pydantic import BaseModelclass TranscriptRequest(BaseModel):text: str  # 轉錄文本model: str  # AI模型類型model_name: str  # 具體模型版本meeting_id: str  # 會議唯一標識chunk_size: int | None = 5000  # 文本分塊大小overlap: int | None = 1000  # 分塊重疊區間

3. 端點邏輯實現

@app.post("/process-transcript")
async def process_transcript_api(transcript: TranscriptRequest, background_tasks: BackgroundTasks
):try:# 創建處理記錄process_id = await db.create_process(transcript.meeting_id)# 啟動后臺任務background_tasks.add_task(process_transcript_background,process_id,transcript)# 立即返回響應return JSONResponse({"message": "處理任務已啟動","process_id": process_id})except Exception as e:raise HTTPException(status_code=500, detail=str(e))

4. 后臺任務處理

async def process_transcript_background(process_id: str, transcript: TranscriptRequest):"""模擬異步處理任務"""await asyncio.sleep(5)  # 模擬AI處理耗時await db.update_process(process_id, status="completed",result='{"MeetingName": "測試會議", "SectionSummary": {...}}')

系統交互流程圖

在這里插入圖片描述

總結

后端API網關作為系統的神經中樞,主要承擔:

  1. 統一接入聚合所有服務端點
  2. 流量調度智能路由請求
  3. 異步處理解耦耗時操作
  4. 狀態管理:維護處理生命周期
  5. 異常處理統一錯誤響應機制

通過FastAPI的異步特性后臺任務管理,實現了高并發下的請求吞吐與資源優化。

了解端點功能后,如何掌握完整的API規范

下一章將詳解API文檔生成與管理機制。

第二章:API文檔體系


第二章:API文檔體系

在第一章:后端API網關中,我們了解到API網關是后端系統的入口樞紐,如同企業大樓的前臺接待處。

本章將揭示如何通過API文檔體系,清晰定義這個"數字前臺"的服務目錄

API文檔的價值定位

假設我們正在構建會議紀要系統的前端界面,需要向后端提交轉錄文本

此時必須明確以下問題:

  • 請求地址是/submit還是/process-transcript
  • 應該使用GET還是POST方法?
  • 請求體需要包含哪些字段?采用JSON還是XML格式?
  • 響應數據包含處理ID還是直接返回摘要?

API文檔正是解決這些疑問的開發者手冊定義了前后端交互的契約規范

其核心作用如同餐廳菜單:
在這里插入圖片描述

API文檔要素

完整的API文檔應包含:

要素類別說明示例
服務端點接口訪問路徑/process-transcript
HTTP方法請求類型(POST/GET等)POST
請求格式數據結構與必填字段JSON包含text/model等字段
響應格式返回數據結構與狀態碼200成功,202處理中,404未找到
鑒權方式身份驗證機制本項目暫無需鑒權

項目文檔實現方式

本項目采用雙軌制文檔體系

1. 靜態文檔文件(API_DOCUMENTATION.md)

位于后端目錄的Markdown文件,提供完整的配置說明:

# Meetily API 文檔## 基礎配置
```http
http://localhost:5167

端點說明

1. 處理轉錄文本

端點路徑/process-transcript
請求方法:POST
內容類型application/json

請求體示例
{"text": "會議討論三季度目標...","model": "ollama","model_name": "qwen2.5:14b","chunk_size": 40000
}
響應示例
{"process_id": "3fa85f64-5717-4562","message": "處理任務已啟動"
}

3. 獲取摘要

端點路徑/get-summary/{process_id}
請求方法:GET

路徑參數
參數類型必填說明
process_id字符串處理任務唯一標識
響應狀態碼
狀態碼說明
200摘要生成完成
202處理進行中
404任務ID不存在

2. 動態交互文檔(/docs)

通過FastAPI自動生成的Swagger UI界面,訪問http://localhost:5167/docs即可獲得:

在這里插入圖片描述

該文檔具備三大特性:

  1. 實時同步:隨代碼變更自動更新
  2. 交互測試:支持在線發送測試請求
  3. 結構可視化:展示嵌套數據模型

文檔生成原理

動態文檔的生成基于代碼注解:

from fastapi import FastAPI
from pydantic import BaseModelclass TranscriptRequest(BaseModel):"""轉錄處理請求數據結構"""text: strmodel: str = "claude"app = FastAPI(title="智能會議摘要系統",description="基于AI的會議內容分析服務"
)@app.post("/process-transcript")
async def handle_transcript(req: TranscriptRequest):"""接收轉錄文本并啟動處理流程"""return {"process_id": "123"}

FastAPI通過裝飾器@app.post捕獲端點信息,結合Pydantic模型定義生成文檔結構。

函數文檔字符串(docstring)將直接呈現在交互界面上。

總結

  1. 契約定義:API文檔明確前后端交互規則
  2. 雙軌體系:靜態文檔提供完整配置說明,動態文檔支持實時測試
  3. 自描述性代碼即文檔,通過類型注解自動生成規范
  4. 開發者友好:降低接入成本,提升協作效率

了解了數據交互規范后,我們將深入第三章:摘要數據結構(Pydantic模型),解析系統核心數據結構的定義校驗機制

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/86457.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/86457.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/86457.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Flink2.0 配置 historyserver

Flink2.0 配置 historyserver 主要是去修改config.yaml配置文件 主要修改的點有兩個 網上很多文檔都是寫的只配置一個 都是坑啊 historyserver :歷史服務器 運行 Flink job 的集群一旦停止(例如yarn模式&#xff0c;程序一旦停止&#xff0c;集群也就關閉了)&#xff0c;只能去…

LLM的訓練過程

一般而言&#xff0c;訓練一個完整的 LLM 需要經過圖1中的三個階段——Pretrain、SFT 和 RLHF。 1.預訓練 Pretrain&#xff0c;即預訓練&#xff0c;是訓練 LLM 最核心也是工程量最大的第一步。LLM 的預訓練和傳統預訓練模型非常類似&#xff0c;同樣是使用海量無監督文本對隨…

用 AI + Canvas 生成圖形、動畫與圖表

摘要 隨著人工智能&#xff08;AI&#xff09;技術與 Web 可視化的結合&#xff0c;前端開發者可以通過自然語言生成復雜的圖表、動畫和交互式畫布&#xff0c;極大地提升了開發效率和用戶體驗。本文作為《AI 前端&#xff1a;構建智能化 Web 應用的未來》專欄的第七篇&#…

SQL Server for Linux 如何實現高可用架構

關鍵詞&#xff1a;SQL Server for Linux、高可用、讀寫分離、動態擴容、Always On、可用性組 &#x1f4cb; 文章目錄 前言&#xff1a;Linux上的SQL Server不再是夢高可用架構設計 Always On 可用性組故障轉移集群實例 讀寫分離架構 可用性組讀寫分離應用層讀寫分離 動態擴…

【51單片機流水燈控制4種造型,按下1,2,3,4時,數碼管對應顯示鍵號,同時流水燈對應四種造型】2022-6-1

緣由流水燈控制4種造型&#xff0c;按下1,2,3,4時&#xff0c;數碼管對應顯示鍵號&#xff0c;同時流水燈對應四種造型-編程語言-CSDN問答 #include "REG52.h" unsigned char code smgduan[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5…

設計模式 - 工廠方法

工廠方法是一種設計模式&#xff0c;對工廠制造方法進行接口規范化&#xff0c;允許子類工廠決定具體知道哪類產品的實例&#xff0c;最終降低系統耦合&#xff0c;使系統的可維護性、可擴展性等得到提升。 一、工廠的多元化與專業化 要實例化對象&#xff0c;就得用到關鍵詞“…

數據應該如何組織,才能讓Excel“讀懂”?

前言&#xff1a;如果你希望Excel能“讀懂”你的數據&#xff0c;就得學會讓排序、篩選、數據透視表、函數等這些功能為我們服務。 假設你在和一個非常聰明但有點“死板”的機器人&#xff08;Excel&#xff09;對話&#xff0c;你必須用它能理解的語言來組織信息。 “一維表”…

js防止重復提交的3種解決方案

防止 javascript 重復點擊和提交的關鍵方法有三種&#xff1a;1. 禁用按鈕法&#xff0c;點擊后立即禁用按鈕并更改文本提示&#xff0c;請求完成后恢復&#xff1b;2. 節流函數&#xff08;throttle&#xff09;&#xff0c;限制函數在設定時間間隔內僅執行一次&#xff0c;適…

【信創-k8s】銀河麒麟V10國防版+鯤鵬/飛騰(arm64架構)在線/離線部署k8s1.30+kubesphere

銀河麒麟作為國家核高基專項的重要成果&#xff0c;國防版憑借其卓越的安全性和可靠性&#xff0c;已成為軍工領域的首選操作系統。之前我們在適配麒麟V4國防版的過程中已發現諸多安全性要求&#xff0c;而麒麟V10國防版在安全防護等級上又達到了更高的級別。 本文將主要演示離…

解鎖單周期MIPS硬布線:Logisim實戰全攻略

目錄 一、引言二、MIPS 架構與單周期設計原理2.1 MIPS 架構概述2.2 單周期設計原理剖析 三、Logisim 工具基礎3.1 Logisim 簡介3.2 基本操作與組件認識 四、單周期 MIPS 硬布線設計步驟4.1 了解 MIPS 指令集4.2 搭建數據通路4.3 設計硬布線控制器4.4 在 Logisim 中創建電路 五、…

7.4.2B+樹

B樹&#xff1a; (1)每個分支節點最多有m個子樹(孩子節點)。 階&#xff1a;即看當前的B樹是幾階B樹&#xff0c;就看每個分支節點最多有幾個子樹&#xff0c;還是看最下一層有幾個分叉就是幾階&#xff1f;&#xff1f;&#xff1f; 葉子節點&#xff1a;最下邊的一層叫葉子…

MFC獲取本機所有IP、局域網所有IP、本機和局域網可連接IP

獲取本機所有IP地址 // 獲取本機所有IP地址 int CMachine::GetLocalIPs(std::vector<CString>& vIPValue) {//返回IP數量&#xff0c; -1表示獲取失敗vIPValue.clear();int IpNum 0;//1.初始化wsa WSADATA wsaData;int ret WSAStartup(MAKEWORD(2, 2), &wsaD…

【C語言】貪吃蛇小游戲

1. 所需知識 C語言函數、枚舉、結構體、動態內存管理、預處理指令、鏈表、Win32 API... 2. Win32 API介紹 2.1 Win32 API windows這個多作業系統除了協調應用程序的執行、分配內存、管理資源之外&#xff0c;它同時也是一個很大的服務中心&#xff0c;調用這個服務中心的各種…

PostgreSQL 容器化分布式技術方案

&#x1f4cb; 目錄 引言&#xff1a;為什么選擇容器化PostgreSQLPostgreSQL容器化基礎分布式架構設計高可用實現方案讀寫分離架構動態擴縮容策略生產環境實踐總結與展望 引言&#xff1a;為什么選擇容器化PostgreSQL 在數字化轉型的浪潮中&#xff0c;數據庫作為企業的"…

NV025NV033美光固態閃存NV038NV040

美光固態閃存技術突破與市場布局深度解析 一、技術突破&#xff1a;232層NAND閃存與高密度存儲的革新 美光NV系列固態閃存的核心競爭力源于其232層NAND閃存技術&#xff0c;這一技術通過垂直堆疊工藝&#xff0c;將存儲單元層層疊加&#xff0c;宛如在指甲蓋面積內構建超過20…

Matplotlib 繪圖庫從入門到精通:Python 數據可視化全解析

引言 在數據科學的世界里&#xff0c;"一圖勝千言" 這句話有著深刻的含義。數據可視化不僅是數據分析師展示成果的重要手段&#xff0c;更是數據科學家探索數據、發現規律的強大工具。Matplotlib 作為 Python 生態系統中最著名的數據可視化庫&#xff0c;為我們提供…

北斗導航 | 基于CNN-LSTM-PSO算法的接收機自主完好性監測算法

接收機自主完好性監測 原理概述1. 算法架構2. 核心創新點3. 工作流程數學模型1. CNN特征提取2. LSTM時序建模3. PSO優化決策MATLAB完整代碼算法優勢性能對比應用場景擴展方向原理概述 1. 算法架構 #mermaid-svg-fITV6QrXL1fNYFwG {font-family:"trebuchet ms",verda…

【微信小程序】9、用戶拒絕授權地理位置后再次請求授權

1、獲取用戶當前的地理位置 在本專欄的上一篇文章中講了如何 獲取用戶當前的地理位置 首次請求 wx.getLocation API 后&#xff0c;會拉起用戶授權界面 但這時用戶可能會拒絕授權&#xff0c;當你再次請求 wx.getLocation API 后&#xff0c;沒有任何效果。 2、打開設置 用…

嵌入式Linux驅動開發基礎-1 hello驅動

1:APP打開的文件在內核中如何表示 1.1 APP 打開文件時&#xff0c;可以得到一個整數&#xff0c;這個整數被稱為文件句柄。對于 APP 的每一個文件句柄&#xff0c;在內核里面都有一個“struct file ”與之對應 當我們使用 open 打開文件時&#xff0c;傳入的 flags 、 mode…

目標跟蹤存在問題以及解決方案

3D 跟蹤 一、數據特性引發的跟蹤挑戰 1. 點云稀疏性與遠距離特征缺失 問題表現&#xff1a; 激光雷達點云密度隨距離平方衰減&#xff08;如 100 米外車輛點云數不足近距離的 1/10&#xff09;&#xff0c;導致遠距離目標幾何特征&#xff08;如車輪、車頂輪廓&#xff09;不…