🙂

mastraをgranite3.2で実行してみた

2025/03/13に公開

mastraとは

mastra.aiより
Mastra は、AI アプリケーションと機能を迅速に構築するのに役立つ、独自の TypeScript フレームワークです。ワークフロー、エージェント、RAG、統合、評価など、必要なプリミティブのセットを提供します。Mastra は、ローカル マシンで実行することも、サーバーレス クラウドにデプロイすることもできます。

前提条件

  • ollamaの環境
  • nodeの実行環境

構成

  • Ryzen3700X
  • mem 32G
  • RTX2070super
  • win11

動作手順

  1. ollamaのインストール
    2. ollamaをダウンロードしてください。
  2. Granite3.2のインストール
    4. ollama run granite3.2:8b を実行してください。
  3. mastraのインストール
    6. npx create-mastra@latest を実行
    providerはあとで変更するのでそのままでもいい
    npm run dev を実行して実行できるか確認。
  4. ollama-providerのインストール
    8. npm install ollama-ai-provider を実行して、ollamaoroviderをインストール
  5. デモコードの修正
    10. srs\mastra\agents\index.tsのimport{ OpenAI }の1文を、import { ollama } from '@ai-sdk/ollama-ai-provider';のように変更(from文は環境に合わせて)
    11. .env.developmentを次のように修正
    OLLAMA_BASE_URL=http://localhost:11434/api/v1
    ```のように変更(URLは環境に合わせて)
    
  6. 実行
    11. 次のコードを実行
    $body = @{ messages = @("What is the weather in London?") } | ConvertTo-Json; Invoke-WebRequest -Uri "http://localhost:4111/api/agents/weatherAgent/generate" -Method Post -ContentType "application/json" -Body $body
    出力例
StatusCode        : 200
StatusDescription : OK
Content           : {"text":"The current weather in London is 15°C with partly cloudy skies. Humidity is at 60%, and
                    winds are light at 7 km/h. No significant precipitation is expected.","reasoningDetails":[],"toolCa
                    lls...
RawContent        : HTTP/1.1 200 OK
                    access-control-allow-origin: *
                    access-control-expose-headers: Content-Length,X-Requested-With
                    Connection: keep-alive
                    Keep-Alive: timeout=5
                    Content-Length: 4084
                    Content-Type: appl...
Forms             : {}
Headers           : {[access-control-allow-origin, *], [access-control-expose-headers, Content-Length,X-Requested-With]
                    , [Connection, keep-alive], [Keep-Alive, timeout=5]...}
Images            : {}
InputFields       : {}
Links             : {}
ParsedHtml        : mshtml.HTMLDocumentClass
RawContentLength  : 4084

Discussion