0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ローカルLLM(gpt-oss:20b)でmastaraを動かす

Posted at

0.概要

ollama(gpt-oss:20b)のローカルLLMを使用してmastaraを動かす

1.mastraとは

  • 「Mastra(マストラ)」とは、大規模言語モデル(LLM)を活用したAIエージェントやAIアプリケーションを構築するための、TypeScriptベースのオープンソースフレームワークです。

主な特徴

  • TypeScript/JavaScript中心: 多くのAIツールがPythonベースであるのに対し、MastraはJavaScript/TypeScript開発者向けに設計されています。これにより、既存のモダンなウェブ開発スタック(Next.jsなど)とシームレスに統合できます。
  • AIエージェント開発: AIエージェント(特定のタスクを自律的に実行するAI)の開発を効率化するために必要な機能(エージェント定義、ツール呼び出し、ワークフロー、メモリ管理、RAGなど)を包括的に提供しています。
  • フルスタック対応: プロトタイプ作成から本番環境での運用までをカバーし、評価(Evals)やモニタリング、ログ管理といった品質管理機能も備えています。
  • オープンソース: Gatsbyの開発チームによって開発され、GitHub上で活発に開発が進められています。
  • 簡単に言えば、MastraはTypeScriptを使ってAIを活用したアプリケーションを開発するための「オールインワンの土台」を提供するツールです。

2.ollamaの導入

## インストーラーを起動

## バージョン確認
ollama --version
 >> ollama version is 0.12.11

## gpt-oss:20bモデルをダウンロード
ollama pull gpt-oss:20b

## gpt-oss:20bモデルを実行
ollama run gpt-oss:20b

## 実行状況の確認
ollama ps

3.mastraの導入

npm create mastra@latest
> npx
> create-mastra
┌   Mastra Create
│  ## プロジェクト名
◇  What do you want to name your project?
│  mastra_local
│  ## srcディレクトリの設定
◇  Where should we create the Mastra files? (default: src/)
│  src/
│  ## LLMプロバイダーの設定(localなのでとりあえず)
◇  Select a default provider:
│  OpenAI
│  ## APIkey設定(localでKey発行していない場合はskip)
◇  Enter your OpenAI API key?
│  Skip for now
│  ## IDEにMastraを入れるか?
◇  Make your IDE into a Mastra expert? (Installs Mastra's MCP server)
│  Skip for now
│
◇  Project structure created
◇  npm dependencies installed
◇  Mastra CLI installed
◇  Mastra dependencies installed
◇  .gitignore added
└  Project created successfully

4.プロジェクト作成後

  • 必要なモジュールを導入
cd mastra_local/

## 必要なモジュールを入れる
## 導入中「warn」はpeerDependencies のバージョン衝突を “適切に解決した” の通知
## エラー(ERROR)がなければOK
npm install ollama-ai-provider-v2 @mastra/mcp @mastra/core dotenv

  • tsconfig.jsonの作成
{
  "compilerOptions": {
    "target": "ES2022",
    "module": "ES2022",
    "moduleResolution": "bundler",
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "skipLibCheck": true,
    "noEmit": true,
    "outDir": "dist"
  },
  "include": ["src/**/*"]
}
  • 環境ファイルの作成
cp .env.example .env

ollama(gpt-oss:20b)のローカルLLMを使用したエージェントファイルを作成

  • 作成場所: src\mastra\agentsの配下
  • ファイル名: mcpAgent.ts
import { Agent } from '@mastra/core/agent';
import { Memory } from '@mastra/memory';
import { LibSQLStore } from '@mastra/libsql';
import { MCPClient } from "@mastra/mcp";
import { createOllama } from 'ollama-ai-provider-v2';
import 'dotenv/config';
import path from 'path';

const ollama = createOllama({
  baseURL: process.env.OLLAMA_BASE_URL || 'http://localhost:11434/api',
});
const mcp = new MCPClient({
  servers: {
    "dice-roller": {
      "command": "npx",
      "args": [
        "-y", "@mastra/mcp-docs-server"
      ],
    },
  },
});

export const OllamaAgent = new Agent({
  name: 'Ollama Agent',
  instructions: `
      あなたはプログラミングが得意なAIエージェントです。
  `,
  model: ollama(process.env.OLLAMA_MODEL || 'gpt-oss:20b'),
  tools: await mcp.getTools(),
  memory: new Memory({
    storage: new LibSQLStore({
      // パスは.mastra/outputディレクトリからの相対パス
      url: `file:${path.resolve(process.cwd(), 'mastra.db')}`,
    }),
  }),
});

作成したエージェントファイルの使用

  • 修正ファイル: src\mastra\index.ts

  • 追加するコード

// ### {省略} ###

// 下記を追加
import { OllamaAgent } from './agents/mcpAgent';

export const mastra = new Mastra({
  workflows: { weatherWorkflow },
  // 下記の様にOllamaAgentを追加
  agents: { weatherAgent, OllamaAgent },
  
  // ### {省略} ### 
  },
});

mastraのサーバーを立ち上げる

# 開発サーバーの起動
npm run dev

# アプリケーションのビルド
npm run build
# プロダクション環境での起動
npm run start

ブラウザ画面

localhost:4111/agents

ブラウザ画面

作成したエージェントの使用例

作成したエージェントの使用例

天気エージェント例(gpt-oss:20bモデル様に改変)

天気エージェント例1

天気エージェント例2

【ソース公開】GitHub

後記

  • ローカルだけでなくOpenAIやGminiなどのプロバイダがあるのでAPIを通して使用可能になります。
  • 最後まで読んで下さりありがとうございます。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?