リアクティブなコンポーザブル
ストリーミング、中断、再生成、ステータスの ref を備えた useChat、useCompletion、useObject。
ストリーミングチャット、Generative UI、ブラウザ内モデルを Vue コンポーザブルで。OpenAI、Anthropic、Gemini、Ollama、WebGPU に対応。
vue-llm は、Vue 3 と Nuxt のアプリに AI・LLM 機能を追加するオープンソースの TypeScript ライブラリです。モデルの出力をリアクティブな状態にストリーミングする useChat などのコンポーザブル、OpenAI、Anthropic Claude、Google Gemini、Ollama、ブラウザ内 WebGPU モデル 向けのプロバイダー、そして Generative UI のためのコンポーネントを提供します。
<script setup lang="ts">
import { useChat } from 'vue-llm'
import { createSSEProvider } from 'vue-llm/providers'
const { messages, input, handleSubmit, status } = useChat({
provider: createSSEProvider({ url: '/api/chat' }), // your server keeps the API key
model: 'gpt-4o',
})
</script>
<template>
<div v-for="m in messages" :key="m.id">{{ m.role }}: {{ m.parts.map(p => p.type === 'text' ? p.text : '').join('') }}</div>
<form @submit="handleSubmit">
<input v-model="input" :disabled="status === 'streaming'">
</form>
</template>vue-llm は、Vue と Nuxt のアプリに AI・LLM 機能を追加するオープンソースの TypeScript ライブラリです。モデルの出力をリアクティブな状態にストリーミングする useChat、useCompletion、useObject などのコンポーザブルに加え、OpenAI、Anthropic、Google Gemini、Ollama、ブラウザ内 WebGPU モデル向けのプロバイダーを提供します。
vue-llm をインストールし、プロバイダーを作成して(たとえば createLLMHandler によるサーバープロキシや、サーバー上の createOpenAI)、コンポーネントで useChat を呼び出します。useChat はリアクティブな messages、input、status、sendMessage を返し、応答をトークン単位でストリーミングします。
はい。createWebLLM は、Llama 3.2、Qwen、SmolLM などのオープンモデルを WebGPU を通じてユーザーの GPU 上で実行します。リクエストがデバイスの外に出ることはなく、サーバーも API キーも必要ありません。
はい。nuxt.config の modules に 'vue-llm/nuxt' を追加すると、コンポーザブルとプロバイダーが自動インポートされ、チャットコンポーネントが登録されます。createLLMHandler を使えば、Nuxt のサーバールートをモデルへの安全なプロキシにできます。
コンポーザブル(useChat、useCompletion、useObject、usePrompt)は Vue 2.7 と Vue 3.3 以降で動作します。コンポーネントには Vue 3 が必要です。
vue-llm は Vue を第一に考えて作られています。Nuxt モジュール、Generative UI 用の Vue コンポーネント、ブラウザ内モデル向けの WebGPU プロバイダー、コンポーザブルの Vue 2.7 サポート、既存の Server-Sent Events バックエンド向けのプロバイダーを備え、Vue 以外のランタイム依存関係はありません。
はい。vue-llm は MIT ライセンスで、商用利用も無料です。