mcpField
C
Convex Agents Tools

Convex Agents Tools

github.com/sstoboエージェントワークフロー24200 回インストール40 週間前に更新
リポジトリ

Convex Agents Tools について

Convex Agents Toolsは、エージェントからConvex関数や外部API、複雑な処理を呼び出すツールを構築するスキルです。引数検証や自動ツール呼び出しに対応し、呼び出し履歴をスレッドに保存できます。

主な機能

  1. 01Convex対応ツールの定義
  2. 02Zodによる引数検証
  3. 03外部APIの呼び出し
  4. 04ツール履歴のスレッド保存
  5. 05複数ステップの自動呼び出し

活用シーン

  1. 01データベースの照会や変更
  2. 02エージェントから外部APIを利用
  3. 03人が介在するワークフローの構築
  4. 04複数のツール呼び出しの連鎖

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sstobo/convex-skills --skill convex-agents-tools

インストール後、Claude Code で/convex-agents-toolsを入力して読み込まれたか確認します。

詳細

目的

エージェントがテキスト生成以外の操作を実行できるようにします。ツールを使うと、エージェントは Convex 関数や外部 API を呼び出したり、複雑な操作を実行したりできます。

このスキルを使用する場面

  • エージェントがデータベースのデータを照会または変更する必要がある場合
  • 外部 API と連携する場合
  • 人間が介在するワークフローを作成する場合
  • エージェントが実行する操作を自律的に決定する場合
  • 複数ステップの操作でツール呼び出しを連鎖させる場合

ツールを定義する

Convex 対応のツールを作成します。

import { createTool } from "@convex-dev/agent";
import { z } from "zod";

export const getUserDataTool = createTool({
  description: "Fetch user information by email",
  args: z.object({
    email: z.string().email().describe("The user's email address"),
  }),
  handler: async (ctx, { email }): Promise<string> => {
    const user = await ctx.runQuery(api.users.getUserByEmail, { email });
    return user ? JSON.stringify(user) : "User not found";
  },
});

エージェントにツールを設定する

const agentWithTools = new Agent(components.agent, {
  name: "Database Agent",
  languageModel: openai.chat("gpt-4o-mini"),
  tools: {
    getUserData: getUserDataTool,
  },
  maxSteps: 5, // Allow tool calls
});

ツールの自動呼び出しを有効にする

export const autonomousAgent = action({
  args: { threadId: v.string(), request: v.string() },
  handler: async (ctx, { threadId, request }) => {
    const { thread } = await agentWithTools.continueThread(ctx, { threadId });

    const result = await thread.generateText(
      { prompt: request },
      { maxSteps: 10 } // Allow up to 10 tool calls
    );

    return result.text;
  },
});

主な原則

  • 検証には Zod を使用する:フィールドに .describe() を指定すると、LLM がパラメーターを理解しやすくなります
  • 戻り値の型を明示する:ハンドラーの戻り値の型は必ず注釈してください
  • 履歴を自動的に保存する:ツールの呼び出しと結果はスレッドに自動的に保存されます
  • コンテキストをバインドする:userId などにアクセスできるアクション内でツールを作成してください

次のステップ

  • エージェントのセットアップについては fundamentals をご覧ください
  • 複数ステップの操作のオーケストレーションについては workflows をご覧ください
  • ツールを考慮したコンテキスト管理については context をご覧ください

コメント