diff --git "a/data/benchmark_dataset.json" "b/data/benchmark_dataset.json" new file mode 100644--- /dev/null +++ "b/data/benchmark_dataset.json" @@ -0,0 +1,13052 @@ +[ + { + "id": 1, + "category": "swap_chinese", + "description": "Swap request in Chinese", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "用 2 SOL 购买 RAY" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R", + "inputTokenAmount": "2", + "inputTokenPercentage": null + } + } + }, + { + "id": 2, + "category": "swap_chinese", + "description": "Swap request in Chinese", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "把所有 JUP 都卖了" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", + "outputTokenCA": "So11111111111111111111111111111111111111112", + "inputTokenAmount": null, + "inputTokenPercentage": 1.0 + } + } + }, + { + "id": 3, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy 3 SOL of TRUMP" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN", + "inputTokenAmount": "3", + "inputTokenPercentage": null + } + } + }, + { + "id": 4, + "category": "search_by_symbol_cn", + "description": "Search POPCAT by symbol (Chinese)", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "查询 POPCAT 代币" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "POPCAT", + "chain": "solana" + } + } + }, + { + "id": 5, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy 3 SOL of TRUMP" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN", + "inputTokenAmount": "3", + "inputTokenPercentage": null + } + } + }, + { + "id": 6, + "category": "incomplete_no_token", + "description": "Missing which token to sell", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Sell my holdings" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": null, + "arguments": null + } + }, + { + "id": 7, + "category": "search_by_symbol", + "description": "Search WIF by symbol", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Find WIF on solana" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "WIF", + "chain": "solana" + } + } + }, + { + "id": 8, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search for TRUMP token" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "TRUMP", + "chain": "solana" + } + } + }, + { + "id": 9, + "category": "search_by_keyword", + "description": "Search by keyword: dog", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search for dog themed tokens" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "keyword": "dog", + "chain": "solana" + } + } + }, + { + "id": 10, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search for TRUMP token" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "TRUMP", + "chain": "solana" + } + } + }, + { + "id": 11, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy 3 SOL of TRUMP" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN", + "inputTokenAmount": "3", + "inputTokenPercentage": null + } + } + }, + { + "id": 12, + "category": "search_by_address", + "description": "Search SOL by address", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search token at address So11111111111111111111111111111111111111112" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "address": "So11111111111111111111111111111111111111112", + "chain": "solana" + } + } + }, + { + "id": 13, + "category": "incomplete_swap", + "description": "Missing swap details", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Swap tokens" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": null, + "arguments": null + } + }, + { + "id": 14, + "category": "incomplete_trade", + "description": "Missing trade details", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "I want to trade" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": null, + "arguments": null + } + }, + { + "id": 15, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search for TRUMP token" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "TRUMP", + "chain": "solana" + } + } + }, + { + "id": 16, + "category": "swap_chinese", + "description": "Swap request in Chinese", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "清仓 ETH" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs", + "outputTokenCA": "So11111111111111111111111111111111111111112", + "inputTokenAmount": null, + "inputTokenPercentage": 1.0 + } + } + }, + { + "id": 17, + "category": "token_to_token", + "description": "Swap ETH to USDC", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Convert all my ETH to USDC" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs", + "outputTokenCA": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "inputTokenAmount": null, + "inputTokenPercentage": 1.0 + } + } + }, + { + "id": 18, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search for TRUMP token" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "TRUMP", + "chain": "solana" + } + } + }, + { + "id": 19, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search for TRUMP token" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "TRUMP", + "chain": "solana" + } + } + }, + { + "id": 20, + "category": "sell_with_percentage", + "description": "Sell 25% USDC", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Sell a quarter of my USDC" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "outputTokenCA": "So11111111111111111111111111111111111111112", + "inputTokenAmount": null, + "inputTokenPercentage": 0.25 + } + } + }, + { + "id": 21, + "category": "sell_with_amount", + "description": "Sell 100 JUP", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Convert 100 JUP to SOL" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", + "outputTokenCA": "So11111111111111111111111111111111111111112", + "inputTokenAmount": "100", + "inputTokenPercentage": null + } + } + }, + { + "id": 22, + "category": "buy_with_amount", + "description": "Buy RAY with 2 SOL", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "I want to buy 2 SOL of RAY" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R", + "inputTokenAmount": "2", + "inputTokenPercentage": null + } + } + }, + { + "id": 23, + "category": "sell_with_amount", + "description": "Sell 50 USDC", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Sell 50 USDC" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "outputTokenCA": "So11111111111111111111111111111111111111112", + "inputTokenAmount": "50", + "inputTokenPercentage": null + } + } + }, + { + "id": 24, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search for TRUMP token" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "TRUMP", + "chain": "solana" + } + } + }, + { + "id": 25, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search for TRUMP token" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "TRUMP", + "chain": "solana" + } + } + }, + { + "id": 26, + "category": "incomplete_no_token", + "description": "Missing token name", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "I want to buy some tokens" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": null, + "arguments": null + } + }, + { + "id": 27, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy 3 SOL of TRUMP" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN", + "inputTokenAmount": "3", + "inputTokenPercentage": null + } + } + }, + { + "id": 28, + "category": "buy_with_percentage", + "description": "Buy RAY with 25% ETH", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Put 25% of my ETH into RAY" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs", + "outputTokenCA": "4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R", + "inputTokenAmount": null, + "inputTokenPercentage": 0.25 + } + } + }, + { + "id": 29, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy 3 SOL of TRUMP" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN", + "inputTokenAmount": "3", + "inputTokenPercentage": null + } + } + }, + { + "id": 30, + "category": "sell_with_percentage", + "description": "Sell 50% BONK", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Sell 50% of my BONK" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", + "outputTokenCA": "So11111111111111111111111111111111111111112", + "inputTokenAmount": null, + "inputTokenPercentage": 0.5 + } + } + }, + { + "id": 31, + "category": "search_by_symbol_cn", + "description": "Search RAY by symbol (Chinese)", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "搜索 RAY 代币" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "RAY", + "chain": "solana" + } + } + }, + { + "id": 32, + "category": "token_to_token", + "description": "Swap JUP to WIF", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Exchange 50 JUP for WIF" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", + "outputTokenCA": "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm", + "inputTokenAmount": "50", + "inputTokenPercentage": null + } + } + }, + { + "id": 33, + "category": "irrelevant_time", + "description": "Time query", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "What time is it?" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": null, + "arguments": null + } + }, + { + "id": 34, + "category": "irrelevant_greeting", + "description": "Greeting", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Hello, how are you?" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": null, + "arguments": null + } + }, + { + "id": 35, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search for TRUMP token" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "TRUMP", + "chain": "solana" + } + } + }, + { + "id": 36, + "category": "swap_chinese", + "description": "Swap request in Chinese", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "买入 5 SOL 的 POPCAT" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "7GCihgDB8fe6KNjn2MYtkzZcRjQy3t9GHdC8uHYmW2hr", + "inputTokenAmount": "5", + "inputTokenPercentage": null + } + } + }, + { + "id": 37, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search for TRUMP token" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "TRUMP", + "chain": "solana" + } + } + }, + { + "id": 38, + "category": "incomplete_vague", + "description": "Too vague", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy something" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": null, + "arguments": null + } + }, + { + "id": 39, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy 3 SOL of TRUMP" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN", + "inputTokenAmount": "3", + "inputTokenPercentage": null + } + } + }, + { + "id": 40, + "category": "search_by_address", + "description": "Search JUP by address", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search token at address JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "address": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", + "chain": "solana" + } + } + }, + { + "id": 41, + "category": "sell_with_percentage", + "description": "Sell 75% RAY", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Get rid of 75% of my RAY" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R", + "outputTokenCA": "So11111111111111111111111111111111111111112", + "inputTokenAmount": null, + "inputTokenPercentage": 0.75 + } + } + }, + { + "id": 42, + "category": "buy_with_percentage", + "description": "Buy BONK with 50% SOL", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy BONK with 50% of my SOL" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", + "inputTokenAmount": null, + "inputTokenPercentage": 0.5 + } + } + }, + { + "id": 43, + "category": "swap_chinese", + "description": "Swap request in Chinese", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "把 50% 的 USDC 换成 WIF" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "outputTokenCA": "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm", + "inputTokenAmount": null, + "inputTokenPercentage": 0.5 + } + } + }, + { + "id": 44, + "category": "swap_chinese", + "description": "Swap request in Chinese", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "卖掉 1000 个 BONK" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", + "outputTokenCA": "So11111111111111111111111111111111111111112", + "inputTokenAmount": "1000", + "inputTokenPercentage": null + } + } + }, + { + "id": 45, + "category": "buy_with_amount", + "description": "Buy BONK with 1 SOL", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy 1 SOL worth of BONK" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", + "inputTokenAmount": "1", + "inputTokenPercentage": null + } + } + }, + { + "id": 46, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search for TRUMP token" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "TRUMP", + "chain": "solana" + } + } + }, + { + "id": 47, + "category": "irrelevant_cn", + "description": "Weather (Chinese)", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "今天天气怎么样?" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": null, + "arguments": null + } + }, + { + "id": 48, + "category": "irrelevant_general", + "description": "General knowledge", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Who is the president?" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": null, + "arguments": null + } + }, + { + "id": 49, + "category": "search_by_symbol_cn", + "description": "Search JUP by symbol (Chinese)", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "找一下 JUP 代币信息" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "JUP", + "chain": "solana" + } + } + }, + { + "id": 50, + "category": "sell_with_percentage", + "description": "Sell 100% WIF", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Dump all my WIF" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm", + "outputTokenCA": "So11111111111111111111111111111111111111112", + "inputTokenAmount": null, + "inputTokenPercentage": 1.0 + } + } + }, + { + "id": 51, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy 3 SOL of TRUMP" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN", + "inputTokenAmount": "3", + "inputTokenPercentage": null + } + } + }, + { + "id": 52, + "category": "token_to_token", + "description": "Swap USDC to BONK", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Swap 100 USDC for BONK" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "outputTokenCA": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", + "inputTokenAmount": "100", + "inputTokenPercentage": null + } + } + }, + { + "id": 53, + "category": "search_by_symbol", + "description": "Search JUP by symbol", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Look up JUP token" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "JUP", + "chain": "solana" + } + } + }, + { + "id": 54, + "category": "incomplete_no_info", + "description": "Missing token info", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search for a token" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": null, + "arguments": null + } + }, + { + "id": 55, + "category": "search_by_keyword", + "description": "Search by keyword: meme", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Find meme coins" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "keyword": "meme", + "chain": "solana" + } + } + }, + { + "id": 56, + "category": "swap_chinese", + "description": "Swap request in Chinese", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "用 1 个 SOL 买 BONK" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", + "inputTokenAmount": "1", + "inputTokenPercentage": null + } + } + }, + { + "id": 57, + "category": "irrelevant_joke", + "description": "Joke request", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Tell me a joke" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": null, + "arguments": null + } + }, + { + "id": 58, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search for TRUMP token" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "TRUMP", + "chain": "solana" + } + } + }, + { + "id": 59, + "category": "buy_with_amount", + "description": "Buy POPCAT with 0.5 SOL", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Get me 0.5 SOL of POPCAT" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "7GCihgDB8fe6KNjn2MYtkzZcRjQy3t9GHdC8uHYmW2hr", + "inputTokenAmount": "0.5", + "inputTokenPercentage": null + } + } + }, + { + "id": 60, + "category": "irrelevant_cn", + "description": "Joke (Chinese)", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "给我讲个笑话" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": null, + "arguments": null + } + }, + { + "id": 61, + "category": "buy_with_percentage", + "description": "Buy WIF with 30% USDC", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Use 30% of my USDC to buy WIF" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "outputTokenCA": "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm", + "inputTokenAmount": null, + "inputTokenPercentage": 0.3 + } + } + }, + { + "id": 62, + "category": "search_by_symbol_cn", + "description": "Search BONK by symbol (Chinese)", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "帮我搜索 BONK 代币" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "BONK", + "chain": "solana" + } + } + }, + { + "id": 63, + "category": "search_by_symbol_cn", + "description": "Search WIF by symbol (Chinese)", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "查一下 WIF 这个币" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "WIF", + "chain": "solana" + } + } + }, + { + "id": 64, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy 3 SOL of TRUMP" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN", + "inputTokenAmount": "3", + "inputTokenPercentage": null + } + } + }, + { + "id": 65, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search for TRUMP token" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "TRUMP", + "chain": "solana" + } + } + }, + { + "id": 66, + "category": "buy_with_amount", + "description": "Buy WIF with 5 SOL", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Purchase 5 SOL of WIF" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm", + "inputTokenAmount": "5", + "inputTokenPercentage": null + } + } + }, + { + "id": 67, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy 3 SOL of TRUMP" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN", + "inputTokenAmount": "3", + "inputTokenPercentage": null + } + } + }, + { + "id": 68, + "category": "swap_chinese", + "description": "Swap request in Chinese", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "出售 30% 的 WIF" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm", + "outputTokenCA": "So11111111111111111111111111111111111111112", + "inputTokenAmount": null, + "inputTokenPercentage": 0.3 + } + } + }, + { + "id": 69, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search for TRUMP token" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "TRUMP", + "chain": "solana" + } + } + }, + { + "id": 70, + "category": "buy_with_amount", + "description": "Buy JUP with 10 USDC", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy 10 USDC worth of JUP" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "outputTokenCA": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", + "inputTokenAmount": "10", + "inputTokenPercentage": null + } + } + }, + { + "id": 71, + "category": "search_by_symbol", + "description": "Search BONK by symbol", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search for BONK token" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "BONK", + "chain": "solana" + } + } + }, + { + "id": 72, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy 3 SOL of TRUMP" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN", + "inputTokenAmount": "3", + "inputTokenPercentage": null + } + } + }, + { + "id": 73, + "category": "irrelevant_weather", + "description": "Weather query", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "What's the weather today?" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": null, + "arguments": null + } + }, + { + "id": 74, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy 3 SOL of TRUMP" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN", + "inputTokenAmount": "3", + "inputTokenPercentage": null + } + } + }, + { + "id": 75, + "category": "incomplete_cn", + "description": "Missing token (Chinese)", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "我想买币" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": null, + "arguments": null + } + }, + { + "id": 76, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy 3 SOL of TRUMP" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN", + "inputTokenAmount": "3", + "inputTokenPercentage": null + } + } + }, + { + "id": 77, + "category": "buy_with_percentage", + "description": "Buy JUP with 100% SOL", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Spend 100% of my SOL on JUP" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", + "inputTokenAmount": null, + "inputTokenPercentage": 1.0 + } + } + }, + { + "id": 78, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy 3 SOL of TRUMP" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN", + "inputTokenAmount": "3", + "inputTokenPercentage": null + } + } + }, + { + "id": 79, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search for TRUMP token" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "TRUMP", + "chain": "solana" + } + } + }, + { + "id": 80, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy 3 SOL of TRUMP" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN", + "inputTokenAmount": "3", + "inputTokenPercentage": null + } + } + }, + { + "id": 81, + "category": "irrelevant_info", + "description": "Info request (no action)", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "What is Bitcoin?" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": null, + "arguments": null + } + }, + { + "id": 82, + "category": "sell_with_amount", + "description": "Sell 500 WIF", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Sell 500 WIF for SOL" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm", + "outputTokenCA": "So11111111111111111111111111111111111111112", + "inputTokenAmount": "500", + "inputTokenPercentage": null + } + } + }, + { + "id": 83, + "category": "buy_with_percentage", + "description": "Buy BONK with 50% BTC", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Use half of my BTC to get BONK" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E", + "outputTokenCA": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", + "inputTokenAmount": null, + "inputTokenPercentage": 0.5 + } + } + }, + { + "id": 84, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search for TRUMP token" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "TRUMP", + "chain": "solana" + } + } + }, + { + "id": 85, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy 3 SOL of TRUMP" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN", + "inputTokenAmount": "3", + "inputTokenPercentage": null + } + } + }, + { + "id": 86, + "category": "search_by_symbol", + "description": "Search USDC by symbol", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Find USDC token on base" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "USDC", + "chain": "base" + } + } + }, + { + "id": 87, + "category": "incomplete_cn", + "description": "Missing token and amount (Chinese)", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "帮我卖掉" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": null, + "arguments": null + } + }, + { + "id": 88, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy 3 SOL of TRUMP" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN", + "inputTokenAmount": "3", + "inputTokenPercentage": null + } + } + }, + { + "id": 89, + "category": "search_by_address", + "description": "Search USDC by address", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search token at address EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "chain": "solana" + } + } + }, + { + "id": 90, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy 3 SOL of TRUMP" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN", + "inputTokenAmount": "3", + "inputTokenPercentage": null + } + } + }, + { + "id": 91, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search for TRUMP token" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "TRUMP", + "chain": "solana" + } + } + }, + { + "id": 92, + "category": "search_by_address", + "description": "Search RAY by address", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search token at address 4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "address": "4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R", + "chain": "solana" + } + } + }, + { + "id": 93, + "category": "search_by_keyword", + "description": "Search by keyword: cat", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Look for cat tokens on base" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "keyword": "cat", + "chain": "base" + } + } + }, + { + "id": 94, + "category": "sell_with_amount", + "description": "Sell 1000 BONK", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Sell 1000 BONK" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", + "outputTokenCA": "So11111111111111111111111111111111111111112", + "inputTokenAmount": "1000", + "inputTokenPercentage": null + } + } + }, + { + "id": 95, + "category": "sell_with_amount", + "description": "Sell 2000 RAY", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Dump 2000 RAY" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R", + "outputTokenCA": "So11111111111111111111111111111111111111112", + "inputTokenAmount": "2000", + "inputTokenPercentage": null + } + } + }, + { + "id": 96, + "category": "sell_with_percentage", + "description": "Sell 30% JUP", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Sell 30% of my JUP holdings" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", + "outputTokenCA": "So11111111111111111111111111111111111111112", + "inputTokenAmount": null, + "inputTokenPercentage": 0.3 + } + } + }, + { + "id": 97, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search for TRUMP token" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "TRUMP", + "chain": "solana" + } + } + }, + { + "id": 98, + "category": "search_by_symbol", + "description": "Search ETH by symbol", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search ETH on ethereum" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "symbol": "ETH", + "chain": "ethereum" + } + } + }, + { + "id": 99, + "category": "search_by_address", + "description": "Search BONK by address", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Search token at address DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "SEARCH_TOKEN", + "arguments": { + "address": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", + "chain": "solana" + } + } + }, + { + "id": 100, + "category": "extra", + "description": "Extra test case", + "input": { + "messages": [ + { + "role": "developer", + "content": "You are a model that can do function calling with the following functions" + }, + { + "role": "user", + "content": "Buy 3 SOL of TRUMP" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "SEARCH_TOKEN", + "description": "search token onchain", + "parameters": { + "type": "object", + "properties": { + "symbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token" + }, + "address": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token" + }, + "chain": { + "type": "string", + "enum": [ + "solana", + "ethereum", + "bsc", + "base" + ], + "description": "supported chains" + }, + "keyword": { + "type": [ + "string", + "null" + ], + "description": "keyword to search for the token" + } + }, + "required": [] + } + } + }, + { + "type": "function", + "function": { + "name": "EXECUTE_SWAP", + "description": "Swap tokens on the Solana blockchain. When the user specifies 'buy ', the default input token is SOL. When the user specifies 'sell ', the default output token is SOL.", + "parameters": { + "type": "object", + "properties": { + "inputTokenSymbol": { + "type": [ + "string", + "null" + ], + "description": "Symbol of the token to sell." + }, + "inputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to sell." + }, + "outputTokenCA": { + "type": [ + "string", + "null" + ], + "description": "Contract address of the token to buy." + }, + "inputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Exact amount of the input token to swap." + }, + "inputTokenPercentage": { + "type": [ + "number", + "null" + ], + "description": "Percentage of the input token balance to swap." + }, + "outputTokenAmount": { + "type": [ + "string", + "null" + ], + "description": "Expected amount of the output token to receive." + } + }, + "required": [ + "inputTokenCA", + "outputTokenCA", + "inputTokenAmount", + "inputTokenPercentage" + ] + } + } + } + ] + }, + "expected": { + "function_name": "EXECUTE_SWAP", + "arguments": { + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN", + "inputTokenAmount": "3", + "inputTokenPercentage": null + } + } + } +] \ No newline at end of file