Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mismatch between ACTIONS tools and Langchain tools #242

Open
ngundotra opened this issue Jan 26, 2025 · 0 comments
Open

Mismatch between ACTIONS tools and Langchain tools #242

ngundotra opened this issue Jan 26, 2025 · 0 comments

Comments

@ngundotra
Copy link
Contributor

ngundotra commented Jan 26, 2025

There are 25 more Langchain tools (106) than ACTIONS (81).

This is confusing behavior, and should be refactored so the number of tools is the same for any framework.

Right now, the number of tools exported by Solana Agent Kit:

Framework File Number of Tools
Langchain src/langchain/index.ts 106
Vercel AI src/vercel-ai/index.ts 81
ACTIONS (Solana Agent Kit) src/actions/index.ts 81

Ideally this would just be the same 106 actions across the board.

Keep ACTIONS as source of truth, and add a super light touch to make langchain tools like so

// src/langchain/index.ts
import { Tool } from "langchain/tools";
import { tool } from "@langchain/core/tools";
import { z } from "zod";

import { ACTIONS } from "../actions";
import { executeAction } from "../utils/actionExecutor";

// ...

export function createSolanaTools(solanaKit: SolanaAgentKit): Tool[] {
  const tools: Tool[] = []
  const actionKeys = Object.keys(ACTIONS);

  for (const key of actionKeys) {
    const action = ACTIONS[key as keyof typeof ACTIONS];

    type ActionInputSchema = z.infer<typeof action.schema>;
    tools.push(tool<ActionInputSchema>(
      async (params) => {
        const result = await executeAction(action, solanaKit, params)
        return JSON.stringify(result)
      },
      {
        name: action.name,
        description: action.description,
        schema: action.schema,
      }
    ));
  }
  return tools;
}

Langchain tools that do not have corresponding actions:

solana_balance_other
solana_stake
solana_restake
raydium_create_clmm
solana_openbook_create_market
solana_manifest_create_market
solana_limit_order
solana_batch_order
solana_cancel_all_orders
solana_withdraw_all
meteora_create_dynamic_pool
meteora_create_dlmm_pool
orca_close_position
orca_fetch_positions
orca_open_centered_position
orca_open_single_sided_position
solana_list_nft_for_sale
solana_cancel_nft_listing
close_empty_token_accounts
solana_fetch_token_report_summary
solana_fetch_token_detailed_report
3land_minting_tool_single
3land_minting_tool_collection
solana_open_perp_trade
solana_close_perp_trade
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant