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?

LarAgentをもう少し触ってみよう~エンジンフックとカスタムドライバー~

Posted at

本記事は少し前に投稿した記事を元に作成しています。
前の記事:https://qiita.com/C-Yoshizumi/items/f563ec797b7c46a5e538

はじめに

今回はLarAgentの技術調査として、今盛り上がっているOSSを要約するAIエージェントを作ってみました。
リポジトリはこちら→https://github.com/ChihiroYoshizumi/hot-oss-agent

メイン機能

実際に作ったのはLaravelのバッチコマンドです。実行すると、OSS-insightから今盛り上がってる(StarやForkが多くされている)OSSリポジトリを取得し、LarAgentで作成したAIエージェントがリポジトリのreadmeなどを参照して「OSSの説明」「OSSの使い方」などを要約してくれます。

↓実行するとこんな感じ(エージェントのモデルはgpt-4o-mini)↓

php artisan app:oss-trending-summaries
   INFO  juspay/hyperswitch.  
  主言語 ......................................................................................................................................... Rust  
  期間内スター ....................................................................................................................................... 533  
  期間内フォーク ....................................................................................................................................... 31  
  期間内PR .......................................................................................................................................... 6  
  スコア .................................................................................................................................... 2026.1391  
1. **概要** – Hyperswitchは、迅速で信頼性が高く手頃な価格の決済処理を実現するためのRust製オープンソース決済スイッチです。
2. **主要機能**:
   - **モジュラーアプローチ**:必要な決済モジュールを選んで統合可能。
   - **高度なコスト可視化**:支出の監視と最適化を支援。
   - **知能ルーティング**:各取引を最高の認証率のPSPへルーティング。
   - **PCI準拠のバルクサービス**:安全で再利用可能な顧客の支払い方法を提供。
3. **はじめに**:
   - Dockerを使用してローカルセットアップ:
     ```bash
     git clone --depth 1 --branch latest https://github.com/juspay/hyperswitch
     cd hyperswitch
     scripts/setup.sh
     ```
   - 設定不要のホスティッドサンドボックスを利用可能。
4. **備考**: ドキュメントは基本が整っているが、一部内容が欠けている場合がある。コミュニティ活動は活発で、Slackチャンネルでサポートを受けられる。
   INFO  meshery/meshery.  
  主言語 ................................................................................................................................... JavaScript  
  コレクション ............................................................ Diagram as Code, Configuration Management Tools, Kubernetes Tooling, X as Code  
  期間内スター ....................................................................................................................................... 280  
  期間内フォーク ....................................................................................................................................... 21  
  期間内PR .......................................................................................................................................... 5  
  期間内プッシュ ....................................................................................................................................... 20  
  スコア .................................................................................................................................... 1083.7247  
1. **概要** – Mesheryは、Kubernetesベースのインフラストラクチャとアプリケーションの設計と管理を可能にするオープンソースのクラウドネイティブ管理プラットフォームです。
2. **主要機能**  
   - 視覚的かつ協力的なGitOpsを提供し、YAML依存から解放します。  
   - マルチクラスターデプロイメントの管理を簡素化します。  
   - シミュレーションを用いて最適なクラウドネイティブコンポーネントを選定します。
3. **はじめに**  
   - Dockerイメージを利用してMesheryをセットアップするには、[こちら](https://hub.docker.com/r/meshery/meshery)を参照してください。  
   - また、[Cloud Native Playground](https://play.meshery.io)でMesheryを試すことも可能です。
4. **備考**  
   - コミュニティのサポートが活発で、参加を促進しています。  
   - ドキュメントに関する改善の余地があり、積極的な貢献者を歓迎しています。  
   - MesheryはCNCFプロジェクトであり、信頼性が高いです。
   INFO  tw93/Mole.  
  主言語 ........................................................................................................................................ Shell  
  期間内スター ....................................................................................................................................... 174  
  期間内フォーク ........................................................................................................................................ 4  
  期間内プッシュ ........................................................................................................................................ 5  
  スコア ..................................................................................................................................... 833.3376  
1. **概要** – Moleは、Macの隠れたキャッシュやログを一掃し、ディスクスペースを回復するためのシェルベースのクリーンアップツールです。
2. **主要機能**
   - 🐦 **深部システムクリーニング** – 隠れたキャッシュやログを一度に削除。
   - 📦 **徹底アンインストール** – アプリとその関連ファイルを完全に削除。
   - 📊 **インタラクティブディスクアナライザー** – 大きなファイルを即座に特定して削除。
   - ⚡️ **高速&軽量** – ターミナルベースでスムーズなナビゲーション。
3. **はじめに**
   - インストールは次のコマンドで実行します:  
     ```bash
     curl -fsSL https://raw.githubusercontent.com/tw93/mole/main/install.sh | bash
     ```
   - その後、`mo`コマンドでインタラクティブメニューを起動します。
4. **備考** 
   - 初めて使用する際は`mo clean --dry-run`でプレビューを確認することを推奨。
   - Moleはまだ進行中のプロジェクトのため、重要なMacでの利用は慎重に検討する必要があります。

オプションとして集計期間(デフォルトでは直近24時間:直近1週間、直近1ヶ月:直近3ヶ月から指定可能)、使用言語(デフォルトで全部の言語から取得)、取得するリポジトリ数(デフォルトでは3つ)を指定できます

LarAgentの技術検証

エンジンフック

LarAgentでは「エージェントを呼び出す前後」「LLMにリクエストを送る前後」「toolを呼び出す前後」など、さまざまなタイミングでフックを呼び出すことができます。

とのことなので、このフックをいくつか試してみます。

エージェント定義ファイルにafterResponse(レスポンスが返ってきた後)、afterToolExecution(toolを呼び出した後)、onEngineError(LLM側で何かしらエラーが返ってきた時)を追加し、それぞれログを残してもらうようにしました

// 普通にエージェントを呼び出した時
    protected function afterResponse(MessageInterface $message)
    {
        $metadata = $message->getMetadata();
        if (isset($metadata['usage']) && is_array($metadata['usage'])) {
            $this->logTokenUsage($metadata['usage']);
        }
        if ($message instanceof ToolCallMessage) {
            foreach ($message->getToolCalls() as $toolCall) {
                if ($toolCall instanceof ToolCall) {
                    $this->logToolCall($toolCall);
                }
            }
        }
        return parent::afterResponse($message);
    }
// ログの内容
local.INFO: agent_usage {"agent":"RepositorySummaryAgent","model":"gpt-4o-mini","prompt_tokens":1619,"completion_tokens":257,"total_tokens":1876} 
// エージェントがtool(今回はweb検索tool)を使った時
    protected function afterToolExecution(ToolInterface $tool, &$result)
    {
        $this->logToolExecution($tool, $result);
        return parent::afterToolExecution($tool, $result);
    }
// ログの内容
local.INFO: agent_tool_result {"agent":"RepositorySummaryAgent","tool":"tavily_search","result":"{\"query\":\"tile-ai/tilelang\",\"results\":[{\"title\":\"tile-ai/tilelang: Domain-specific language designed ...\",\"url\":\"https://github.com/tile-ai/tilelang\",\"content\":\"Tile Language (tile-lang) is a concise domain-specific language designed to streamline the development of high-performance GPU/CPU kernels.\"},{\"title\":\"Tile Language 0.1.6.post1 documentation\",\"url\":\"https://tilelang.com/\",\"content\":\"Tile Language 0.1.6.post1 documentation # 👋 Welcome to Tile Language¶ Tile Language (tile-lang) is a concise domain-specific language designed to streamline the development of high-performance GPU/CPU kernels (e.g., GEMM, Dequant GEMM, FlashAttention, LinearAttention). By employing a Pythonic syntax with an underlying compiler infrastructure on top of TVM, tile-lang allows developers to focus on productivity without sacrificing the low-level optimizations necessary for state-of-the-art performance. * Installation Guide + Installing with pip + Install with Nightly Version * The Tile Language: A Brief Introduction + Tile-based Programming Model * Debugging Tile Language Programs * Auto-Tuning Techniques for Performance Optimization DEEP LEARNING OPERATORS * ElementWise Operators * General Matrix-Matrix Multiplication with Tile Library * 🚀 Write High Performance FlashMLA with TileLang on Hopper\"},{\"title\":\"TileLang: A Composable Tiled Programming Model for AI ...\",\"url\":\"https://arxiv.org/pdf/2504.17577\",\"content\":\"by L Wang·2025·Cited by 2—Empirical evaluations on real-worldAIkernels demon- strate thatTileLangachieves performance comparable to, and sometimes exceeding, that of\"},{\"title\":\"The Tile Language: A Brief Introduction\",\"url\":\"https://tilelang.com/get_started/overview.html\",\"content\":\"1. **Tile Program** A high-level specification of the computation. Depending on the user’s expertise, they may write a purely hardware-unaware tile program or incorporate constructs from the Tile Library or thread primitives. 3. **Tile Program with Thread Primitives** Expert-level developers can explicitly use low-level threading constructs to hand-optimize data layout, synchronization, and memory usage. Figure 2 provides a concise matrix multiplication (GEMM) example in `TileLang`, illustrating how developers can employ high-level constructs such as tiles, memory placement, pipelining, and operator calls to manage data movement and computation with fine-grained control. In particular, this snippet (Figure 2 (a)) demonstrates how multi-level tiling leverages different memory hierarchies (global, shared, and registers) to optimize bandwidth utilization and reduce latency.\"},{\"title\":\"TileLang: DSL for High-performance Operators | Jimmy Song\",\"url\":\"https://jimmysong.io/en/ai/tilelang/\",\"content\":\"TileLang is a domain-specific language for high-performance AI kernels that simplifies writing GPU/CPU/accelerator operators.\"}],\"response_time\":5.59}"} 
// LLMプロバイダー側でエラー(今回はAPIキーを未設定にしてわざとエラーを起こしました)になった時
    protected function onEngineError(\Throwable $th): void
    {
        $this->logError($th);
        parent::onEngineError($th);
    }
// ログの内容
local.ERROR: agent_engine_error {"agent":"RepositorySummaryAgent","provider":"default","model":"gpt-4o-mini","message":"API key is required to use the OpenAI driver.","code":0

ちゃんと動いてくれてますね

カスタムLLMドライバー

LarAgentではデフォルトでChatGPT, Gemini, ollama, openrouter, Groqをサポートしています(そろそろAnthropicも追加されるというウワサも)。加えて、自分でLLMドライバーを追加できるようにもなっているようです。

なので今回は弊社が業務提携しているupstage社のドライバーを追加してみます。upstageのAPIドキュメントを見た感じプロバイダーとしてはOpenAIがベースっぽいので、LarAgentに搭載されているOpenAiCompatible(OpenAIに互換性のあるプロバイダーのドライバー)から継承する形にします。

app/Drivers/UpStageProvider/UpStageDriver.php

config/laragent.php
ざっくりと上二つのファイルを変更し、コマンドを実行してみました。使用したupstageのLLMモデルはsolar-pro2です。

php artisan app:oss-trending-summaries
   INFO  juspay/hyperswitch.  
  主言語 ......................................................................................................................................... Rust  
  期間内スター ....................................................................................................................................... 533  
  期間内フォーク ....................................................................................................................................... 31  
  期間内PR .......................................................................................................................................... 6  
  スコア .................................................................................................................................... 2026.1391  
1. **概要**  
Rustで構築されたオープンソースのモジュール式支払いインフラストラクチャで、高性能かつ柔軟な決済処理を提供します。  
2. **主要機能**  
- **インテリジェントルーティング**:最高の認証率を持つPSPへの自動送金  
- **収益回復**:カード情報、地域、支払い方法に基づくインテリジェントな再試行戦略  
- **コストリレーション**:隠れた手数料やペナルティの検出と最適化用のダッシュボード  
- **アルテルネート決済方法**:PayPal、Apple Pay、BNPLプロバイダー向けのドロップインウィジェット  
3. **はじめに**  
- **Dockerを介したローカルセットアップ**:  
  `` `bash  
  git clone https://github.com/juspay/hyperswitch  
  cd hyperswitch  
  scripts/setup.sh  
  `` `  
- **ホスティングサンドボックス**:セットアップ不要でUIから直接テスト可能  
  ([Hyperswitch Sandbox](https://app.hyperswitch.io))  
4. **備考**  
- **ドキュメントの充実度**:各モジュールの詳細なマニュアルとチュートリアルが公開され、初心者にも親和性が高い  
- **コミュニティ/メンテナンス**:Juspay社がメインテナンスし、400+企業で実績あり  
- **欠点**:リポジトリ内の主な開発言語はRustだが、一部コンポーネントではprotobufやPythonの依存性があるため、拡張性に考慮が必要  
(180語以内)
   INFO  meshery/meshery.  
  主言語 ................................................................................................................................... JavaScript  
  コレクション ............................................................ Diagram as Code, Configuration Management Tools, Kubernetes Tooling, X as Code  
  期間内スター ....................................................................................................................................... 280  
  期間内フォーク ....................................................................................................................................... 21  
  期間内PR .......................................................................................................................................... 5  
  期間内プッシュ ....................................................................................................................................... 20  
  スコア .................................................................................................................................... 1083.7247  
# Meshery (meshery/meshery) コンパクト・サマリー
## 1. 概要  
Mesheryは、CNCFプロジェクトでマルチクラウドKubernetesインフラの設計と管理を支援するオープンソースのクラウドネイティブマネージャーです。
## 2. 主要機能  
- **ビジュアルGitOps** : YAML依存をなくすドラッグ&ドロップデザインツール  
- **マルチテナントサポート** : RBACによる隔離された環境管理  
- **サービスメッシュ管理** : Istio、Linkerdなど主要メッシュのライフサイクル運営  
- **パターンカタログ** : ベストプラクティステンプレートによる標準化  
## 3. はじめに  
1. `curl -L https://meshery.io/get | bash -`でMeshery CLIインストール  
2. ブラウザで`http://localhost:9081`にアクセスし、Kubernetes接続確認  
## 4. 備考  
- **ドキュメントの不足** : 勾配学習曲線が急なため公式ガイド(quickstart)必須  
- **コミュニティ活発** : Slack(Discord)/Discourseフォーラムで相談可能  
- **依存関係注意** : ネイティブ依存(Node.js、Helm、Docker)が必要な場合多し  
※178語(要約完了)
   INFO  tw93/Mole.  
  主言語 ........................................................................................................................................ Shell  
  期間内スター ....................................................................................................................................... 174  
  期間内フォーク ........................................................................................................................................ 4  
  期間内プッシュ ........................................................................................................................................ 5  
  スコア ..................................................................................................................................... 833.3376  
1. **概要**  
Macシステムやアプリの不要ファイルを深層クリーニングするシェルベースツール  
2. **主要機能**  
- 22か所の標準以上の包括的なアンインストール機能  
- ディスク分析ツールによる大容量ファイルクイック削除  
- 実行不要なキャッシュ/ログ/一時ファイルの一括削除  
3. **はじめに**  
- インストール: `curl -fsSL https://raw.githubusercontent.com/tw93/mole/main/install.sh | bash`  
- セットアップ: 最低1回は`mo clean --dry-run`で削除対象を可視化後に実行  
4. **注意点**  
- 「ミッションクリティカルなマック」での使用は成熟するまでは控えるよう警告(FAQ参照)  
- ドキュメントには英語と中国語(繁体字、簡体字)があり、初心者向けガイドがあるが、詳細なセキュリティレビュー結果や依存関係の明確化不足  
- GitHub Issuesに明確な安全性検証結果の記載なし(最新リリースでも安全性の正式な宣言文無し)  
- 保守面は2人のアクティブコントリビューターのみ  
※安全性は実績に基づくが、公式セキュリティ認証や第三者検証なしという限界あり

ちゃんと動作してますね!そして初めて使いましたが、solar-pro2もgpt-4o-miniと比べて端的に解説してくれていい感じですね!

最後に
今回はLarAgentをもうちょっとだけ触ってみようということでいろんな機能を試してみました!

Laravel×AIの世界はまだまだ探検の余地が残っていると思います。

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?