cpp-httplib v0.40.0

Building a Desktop LLM App with cpp-httplib

自分のC++ライブラリにWeb APIを追加したい、Electronライクなデスクトップアプリをサクッと作りたい―そう思ったことはありませんか? Rustなら「Tauri + axum」という選択肢がありますが、C++では難しいと諦めていませんか?

cpp-httplibwebview/webview、そしてcpp-embedlibを組み合わせれば、C++だけで同じアプローチが取れます。しかも配布しやすい、小さなシングルバイナリーのアプリケーションを作れます。

今回は、llama.cppを組み込んだLLM翻訳アプリを題材に、「REST API → SSEストリーミング → Web UI→デスクトップアプリ」と段階的に構築しながら、そのやり方を学んでいきましょう。もちろん、翻訳はあくまで題材です。llama.cppを自分のライブラリに置き換えれば、同じ構成で自分だけのアプリが作れます。

Desktop App

C++17の基本文法とHTTP(REST API)の基本がわかれば、すぐに始められます。🚀

目次

  1. プロジェクト環境を作る — 依存ライブラリの取得、ビルド設定、雛形コード
  2. llama.cppを組み込んでREST APIを作る — JSONで翻訳結果を返すAPIの実装
  3. SSEでトークンストリーミングを追加する — トークン単位の逐次レスポンス
  4. モデルの取得・管理機能を追加する — Hugging Faceからのダウンロードと切り替え
  5. Web UIを追加する — ブラウザから操作できる翻訳画面
  6. WebViewでデスクトップアプリ化する — シングルバイナリのデスクトップアプリ
  7. llama.cpp本家のサーバー実装をコードリーディング — プロダクション品質のコードとの比較
  8. 自分だけのアプリにカスタマイズする — 自分のライブラリへの差し替えと応用
ESC