feat: test added

This commit is contained in:
aryan
2024-11-18 00:38:00 +07:00
parent 8d355378e0
commit 655c131b99
4 changed files with 71 additions and 3 deletions

View File

@@ -5,15 +5,18 @@
"main": "dist/index.js",
"types": "dist/index.d.ts",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "tsc",
"docs": "typedoc src --out docs"
"docs": "typedoc src --out docs",
"test": "ts-node test/index.ts"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@bonfida/spl-name-service": "^3.0.7",
"@langchain/core": "^0.3.18",
"@langchain/openai": "^0.3.13",
"@metaplex-foundation/js": "^0.20.1",
"@metaplex-foundation/mpl-core": "^1.1.1",
"@metaplex-foundation/mpl-token-metadata": "^3.3.0",

6
pnpm-lock.yaml generated
View File

@@ -11,6 +11,12 @@ importers:
'@bonfida/spl-name-service':
specifier: ^3.0.7
version: 3.0.7(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)
'@langchain/core':
specifier: ^0.3.18
version: 0.3.18(openai@4.72.0(zod@3.23.8))
'@langchain/openai':
specifier: ^0.3.13
version: 0.3.13(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8)))
'@metaplex-foundation/js':
specifier: ^0.20.1
version: 0.20.1(arweave@1.15.5)(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)

View File

@@ -166,6 +166,19 @@ export class SolanaRegisterDomainTool extends Tool {
}
}
export class SolanaGetWalletAddressTool extends Tool {
name = "solana_get_wallet_address";
description = "Get the wallet address of the agent";
constructor(private solanaKit: SolanaAgentKit) {
super();
}
async _call(_input: string): Promise<string> {
return this.solanaKit.wallet_address.toString();
}
}
// Updated createSolanaTools function
export function createSolanaTools(solanaKit: SolanaAgentKit) {
return [
@@ -177,5 +190,6 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) {
new SolanaTradeTool(solanaKit),
new SolanaRequestFundsTool(solanaKit),
new SolanaRegisterDomainTool(solanaKit),
new SolanaGetWalletAddressTool(solanaKit),
];
}
}

45
test/index.ts Normal file
View File

@@ -0,0 +1,45 @@
import { SolanaAgentKit } from "../src";
import { createSolanaTools } from "../src/langchain";
import { OpenAI } from "@langchain/openai";
import { AgentExecutor } from "langchain/agents";
import { PromptTemplate } from "@langchain/core/prompts";
import { pull } from "langchain/hub";
import { createReactAgent } from "langchain/agents";
// Initialize SolanaAgentKit
const solanaKit = new SolanaAgentKit(
"2bsq2EHutvSvZenGiFSqg4AKMBCP2gB1LnkRiavS4SHKZs4FnDSkGy9c2quiTBuSoKTn9AKV82P1E5D8mkiHJuEW"
);
// Create Solana-specific tools
const tools = createSolanaTools(solanaKit);
(async () => {
// Define a Prompt Template for the Agent
const prompt = await pull<PromptTemplate>("hwchase17/react");
// Create an LLM Chain
const llm = new OpenAI({
modelName: "gpt-4o-mini",
temperature: 0,
});
const agent = await createReactAgent({
llm,
tools,
prompt,
});
const agentExecutor = new AgentExecutor({
agent,
tools,
});
const result = await agentExecutor.invoke({
input:
"What is your wallet address?",
});
console.log(result);
})();