aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/chatbot/tools
diff options
context:
space:
mode:
authorA.J. Shulman <Shulman.aj@gmail.com>2024-12-18 11:46:14 -0500
committerA.J. Shulman <Shulman.aj@gmail.com>2024-12-18 11:46:14 -0500
commitad1e0cf62187e0f8bbb19b4720b7681585361de9 (patch)
tree673dd63ddc1808e6e89dab5021c2136cbbe843c8 /src/client/views/nodes/chatbot/tools
parent9e447814b551c352709296ae562f1f50480320f5 (diff)
better
Diffstat (limited to 'src/client/views/nodes/chatbot/tools')
-rw-r--r--src/client/views/nodes/chatbot/tools/BaseTool.ts16
-rw-r--r--src/client/views/nodes/chatbot/tools/CalculateTool.ts17
-rw-r--r--src/client/views/nodes/chatbot/tools/CreateAnyDocTool.ts25
-rw-r--r--src/client/views/nodes/chatbot/tools/CreateCSVTool.ts17
-rw-r--r--src/client/views/nodes/chatbot/tools/CreateTextDocumentTool.ts43
-rw-r--r--src/client/views/nodes/chatbot/tools/DataAnalysisTool.ts17
-rw-r--r--src/client/views/nodes/chatbot/tools/GetDocsTool.ts17
-rw-r--r--src/client/views/nodes/chatbot/tools/NoTool.ts11
-rw-r--r--src/client/views/nodes/chatbot/tools/RAGTool.ts28
-rw-r--r--src/client/views/nodes/chatbot/tools/ReplicateUserTaskTool.ts0
-rw-r--r--src/client/views/nodes/chatbot/tools/SearchTool.ts20
-rw-r--r--src/client/views/nodes/chatbot/tools/WebsiteInfoScraperTool.ts27
-rw-r--r--src/client/views/nodes/chatbot/tools/WikipediaTool.ts17
13 files changed, 137 insertions, 118 deletions
diff --git a/src/client/views/nodes/chatbot/tools/BaseTool.ts b/src/client/views/nodes/chatbot/tools/BaseTool.ts
index 8efba2d28..a2cb3927b 100644
--- a/src/client/views/nodes/chatbot/tools/BaseTool.ts
+++ b/src/client/views/nodes/chatbot/tools/BaseTool.ts
@@ -1,5 +1,5 @@
import { Observation } from '../types/types';
-import { Parameter, ParametersType } from '../types/tool_types';
+import { Parameter, ParametersType, ToolInfo } from '../types/tool_types';
/**
* @file BaseTool.ts
@@ -23,8 +23,6 @@ export abstract class BaseTool<P extends ReadonlyArray<Parameter>> {
parameterRules: P;
// Guidelines for how to handle citations when using the tool
citationRules: string;
- // A brief summary of the tool's purpose
- briefSummary: string;
/**
* Constructs a new `BaseTool` instance.
@@ -32,14 +30,12 @@ export abstract class BaseTool<P extends ReadonlyArray<Parameter>> {
* @param description - A detailed description of what the tool does.
* @param parameterRules - A readonly array of parameter definitions (`ReadonlyArray<Parameter>`).
* @param citationRules - Rules or guidelines for citations.
- * @param briefSummary - A short summary of the tool.
*/
- constructor(name: string, description: string, parameterRules: P, citationRules: string, briefSummary: string) {
- this.name = name;
- this.description = description;
- this.parameterRules = parameterRules;
- this.citationRules = citationRules;
- this.briefSummary = briefSummary;
+ constructor(toolInfo: ToolInfo<P>) {
+ this.name = toolInfo.name;
+ this.description = toolInfo.description;
+ this.parameterRules = toolInfo.parameterRules;
+ this.citationRules = toolInfo.citationRules;
}
/**
diff --git a/src/client/views/nodes/chatbot/tools/CalculateTool.ts b/src/client/views/nodes/chatbot/tools/CalculateTool.ts
index 139ede8f0..ca7223803 100644
--- a/src/client/views/nodes/chatbot/tools/CalculateTool.ts
+++ b/src/client/views/nodes/chatbot/tools/CalculateTool.ts
@@ -1,5 +1,5 @@
import { Observation } from '../types/types';
-import { ParametersType } from '../types/tool_types';
+import { ParametersType, ToolInfo } from '../types/tool_types';
import { BaseTool } from './BaseTool';
const calculateToolParams = [
@@ -13,15 +13,16 @@ const calculateToolParams = [
type CalculateToolParamsType = typeof calculateToolParams;
+const calculateToolInfo: ToolInfo<CalculateToolParamsType> = {
+ name: 'calculate',
+ citationRules: 'No citation needed.',
+ parameterRules: calculateToolParams,
+ description: 'Runs a calculation and returns the number - uses JavaScript so be sure to use floating point syntax if necessary',
+};
+
export class CalculateTool extends BaseTool<CalculateToolParamsType> {
constructor() {
- super(
- 'calculate',
- 'Perform a calculation',
- calculateToolParams, // Use the reusable param config here
- 'Provide a mathematical expression to calculate that would work with JavaScript eval().',
- 'Runs a calculation and returns the number - uses JavaScript so be sure to use floating point syntax if necessary'
- );
+ super(calculateToolInfo);
}
async execute(args: ParametersType<CalculateToolParamsType>): Promise<Observation[]> {
diff --git a/src/client/views/nodes/chatbot/tools/CreateAnyDocTool.ts b/src/client/views/nodes/chatbot/tools/CreateAnyDocTool.ts
index 6f61b77d4..a4871f7fd 100644
--- a/src/client/views/nodes/chatbot/tools/CreateAnyDocTool.ts
+++ b/src/client/views/nodes/chatbot/tools/CreateAnyDocTool.ts
@@ -1,7 +1,7 @@
import { v4 as uuidv4 } from 'uuid';
import { BaseTool } from './BaseTool';
import { Observation } from '../types/types';
-import { ParametersType, Parameter } from '../types/tool_types';
+import { ParametersType, Parameter, ToolInfo } from '../types/tool_types';
import { DocumentOptions, Docs } from '../../../../documents/Documents';
/**
@@ -77,13 +77,9 @@ ${supportedDocumentTypes
type CreateAnyDocumentToolParamsType = typeof createAnyDocumentToolParams;
-export class CreateAnyDocumentTool extends BaseTool<CreateAnyDocumentToolParamsType> {
- private _addLinkedDoc: (doc_type: string, data: string | undefined, options: DocumentOptions, id: string) => void;
-
- constructor(addLinkedDoc: (doc_type: string, data: string | undefined, options: DocumentOptions, id: string) => void) {
- super(
- 'createAnyDocument',
- `Creates any type of document with the provided options and data. Supported document types are: ${supportedDocumentTypes.join(', ')}. dataviz is a csv table tool, so for CSVs, use dataviz. Here are the options for each type:
+const createAnyDocToolInfo: ToolInfo<CreateAnyDocumentToolParamsType> = {
+ name: 'createAnyDocument',
+ description: `Creates any type of document (in Dash) with the provided options and data. Supported document types are: ${supportedDocumentTypes.join(', ')}. dataviz is a csv table tool, so for CSVs, use dataviz. Here are the options for each type:
<supported_document_types>
${supportedDocumentTypes
.map(
@@ -98,10 +94,15 @@ export class CreateAnyDocumentTool extends BaseTool<CreateAnyDocumentToolParamsT
)
.join('\n')}
</supported_document_types>`,
- createAnyDocumentToolParams,
- 'Provide the document type, data, and options for the document. Options should be a valid JSON string containing the document options specific to the document type.',
- `Creates any type of document with the provided options and data. Supported document types are: ${supportedDocumentTypes.join(', ')}.`
- );
+ parameterRules: createAnyDocumentToolParams,
+ citationRules: 'No citation needed.',
+};
+
+export class CreateAnyDocumentTool extends BaseTool<CreateAnyDocumentToolParamsType> {
+ private _addLinkedDoc: (doc_type: string, data: string | undefined, options: DocumentOptions, id: string) => void;
+
+ constructor(addLinkedDoc: (doc_type: string, data: string | undefined, options: DocumentOptions, id: string) => void) {
+ super(createAnyDocToolInfo);
this._addLinkedDoc = addLinkedDoc;
}
diff --git a/src/client/views/nodes/chatbot/tools/CreateCSVTool.ts b/src/client/views/nodes/chatbot/tools/CreateCSVTool.ts
index 2cc513d6c..e8ef3fbfe 100644
--- a/src/client/views/nodes/chatbot/tools/CreateCSVTool.ts
+++ b/src/client/views/nodes/chatbot/tools/CreateCSVTool.ts
@@ -1,7 +1,7 @@
import { BaseTool } from './BaseTool';
import { Networking } from '../../../../Network';
import { Observation } from '../types/types';
-import { ParametersType } from '../types/tool_types';
+import { ParametersType, ToolInfo } from '../types/tool_types';
const createCSVToolParams = [
{
@@ -20,17 +20,18 @@ const createCSVToolParams = [
type CreateCSVToolParamsType = typeof createCSVToolParams;
+const createCSVToolInfo: ToolInfo<CreateCSVToolParamsType> = {
+ name: 'createCSV',
+ description: 'Creates a CSV file from the provided CSV string and saves it to the server with a unique identifier, returning the file URL and UUID.',
+ citationRules: 'No citation needed.',
+ parameterRules: createCSVToolParams,
+};
+
export class CreateCSVTool extends BaseTool<CreateCSVToolParamsType> {
private _handleCSVResult: (url: string, filename: string, id: string, data: string) => void;
constructor(handleCSVResult: (url: string, title: string, id: string, data: string) => void) {
- super(
- 'createCSV',
- 'Creates a CSV file from raw CSV data and saves it to the server',
- createCSVToolParams,
- 'Provide a CSV string and a filename to create a CSV file.',
- 'Creates a CSV file from the provided CSV string and saves it to the server with a unique identifier, returning the file URL and UUID.'
- );
+ super(createCSVToolInfo);
this._handleCSVResult = handleCSVResult;
}
diff --git a/src/client/views/nodes/chatbot/tools/CreateTextDocumentTool.ts b/src/client/views/nodes/chatbot/tools/CreateTextDocumentTool.ts
index fae78aa49..487fc951d 100644
--- a/src/client/views/nodes/chatbot/tools/CreateTextDocumentTool.ts
+++ b/src/client/views/nodes/chatbot/tools/CreateTextDocumentTool.ts
@@ -2,7 +2,7 @@ import { v4 as uuidv4 } from 'uuid';
import { Networking } from '../../../../Network';
import { BaseTool } from './BaseTool';
import { Observation } from '../types/types';
-import { ParametersType } from '../types/tool_types';
+import { ParametersType, ToolInfo } from '../types/tool_types';
import { DocumentOptions } from '../../../../documents/Documents';
import { RTFCast, StrCast } from '../../../../../fields/Types';
@@ -19,40 +19,41 @@ const createTextDocToolParams = [
description: 'The title of the document',
required: true,
},
- {
- name: 'background_color',
- type: 'string',
- description: 'The background color of the document as a hex string',
- required: false,
- },
- {
- name: 'font_color',
- type: 'string',
- description: 'The font color of the document as a hex string',
- required: false,
- },
+ // {
+ // name: 'background_color',
+ // type: 'string',
+ // description: 'The background color of the document as a hex string',
+ // required: false,
+ // },
+ // {
+ // name: 'font_color',
+ // type: 'string',
+ // description: 'The font color of the document as a hex string',
+ // required: false,
+ // },
] as const;
type CreateTextDocToolParamsType = typeof createTextDocToolParams;
+const createTextDocToolInfo: ToolInfo<CreateTextDocToolParamsType> = {
+ name: 'createTextDoc',
+ description: 'Creates a text document with the provided content and title. Use if the user wants to create a textbox or text document of some sort. Can use after a search or other tool to save information.',
+ citationRules: 'No citation needed.',
+ parameterRules: createTextDocToolParams,
+};
+
export class CreateTextDocTool extends BaseTool<CreateTextDocToolParamsType> {
private _addLinkedDoc: (doc_type: string, data: string, options: DocumentOptions, id: string) => void;
constructor(addLinkedDoc: (text_content: string, data: string, options: DocumentOptions, id: string) => void) {
- super(
- 'createTextDoc',
- 'Creates a text document with the provided content and title (and of specified other options if wanted)',
- createTextDocToolParams,
- 'Provide the text content and title (and optionally color) for the document.',
- 'Creates a text document with the provided content and title (and of specified other options if wanted). Use if the user wants to create a textbox or text document of some sort. Can use after a search or other tool to save information.'
- );
+ super(createTextDocToolInfo);
this._addLinkedDoc = addLinkedDoc;
}
async execute(args: ParametersType<CreateTextDocToolParamsType>): Promise<Observation[]> {
try {
console.log(RTFCast(args.text_content));
- this._addLinkedDoc('text', args.text_content, { title: args.title, backgroundColor: args.background_color, text_fontColor: args.font_color }, uuidv4());
+ this._addLinkedDoc('text', args.text_content, { title: args.title }, uuidv4());
return [{ type: 'text', text: 'Created text document.' }];
} catch (error) {
return [{ type: 'text', text: 'Error creating text document, ' + error }];
diff --git a/src/client/views/nodes/chatbot/tools/DataAnalysisTool.ts b/src/client/views/nodes/chatbot/tools/DataAnalysisTool.ts
index 97b9ee023..8c5e3d9cd 100644
--- a/src/client/views/nodes/chatbot/tools/DataAnalysisTool.ts
+++ b/src/client/views/nodes/chatbot/tools/DataAnalysisTool.ts
@@ -1,5 +1,5 @@
import { Observation } from '../types/types';
-import { ParametersType } from '../types/tool_types';
+import { ParametersType, ToolInfo } from '../types/tool_types';
import { BaseTool } from './BaseTool';
const dataAnalysisToolParams = [
@@ -14,17 +14,18 @@ const dataAnalysisToolParams = [
type DataAnalysisToolParamsType = typeof dataAnalysisToolParams;
+const dataAnalysisToolInfo: ToolInfo<DataAnalysisToolParamsType> = {
+ name: 'dataAnalysis',
+ description: 'Provides the full CSV file text for your analysis based on the user query and the available CSV file(s).',
+ citationRules: 'No citation needed.',
+ parameterRules: dataAnalysisToolParams,
+};
+
export class DataAnalysisTool extends BaseTool<DataAnalysisToolParamsType> {
private csv_files_function: () => { filename: string; id: string; text: string }[];
constructor(csv_files: () => { filename: string; id: string; text: string }[]) {
- super(
- 'dataAnalysis',
- 'Analyzes and provides insights from one or more CSV files',
- dataAnalysisToolParams,
- 'Provide the name(s) of up to 3 CSV files to analyze based on the user query and whichever available CSV files may be relevant.',
- 'Provides the full CSV file text for your analysis based on the user query and the available CSV file(s).'
- );
+ super(dataAnalysisToolInfo);
this.csv_files_function = csv_files;
}
diff --git a/src/client/views/nodes/chatbot/tools/GetDocsTool.ts b/src/client/views/nodes/chatbot/tools/GetDocsTool.ts
index 4286e7ffe..05482a66e 100644
--- a/src/client/views/nodes/chatbot/tools/GetDocsTool.ts
+++ b/src/client/views/nodes/chatbot/tools/GetDocsTool.ts
@@ -1,5 +1,5 @@
import { Observation } from '../types/types';
-import { ParametersType } from '../types/tool_types';
+import { ParametersType, ToolInfo } from '../types/tool_types';
import { BaseTool } from './BaseTool';
import { DocServer } from '../../../../DocServer';
import { Docs } from '../../../../documents/Documents';
@@ -24,17 +24,18 @@ const getDocsToolParams = [
type GetDocsToolParamsType = typeof getDocsToolParams;
+const getDocsToolInfo: ToolInfo<GetDocsToolParamsType> = {
+ name: 'retrieveDocs',
+ description: 'Retrieves the contents of all Documents that the user is interacting with in Dash.',
+ citationRules: 'No citation needed.',
+ parameterRules: getDocsToolParams,
+};
+
export class GetDocsTool extends BaseTool<GetDocsToolParamsType> {
private _docView: DocumentView;
constructor(docView: DocumentView) {
- super(
- 'retrieveDocs',
- 'Retrieves the contents of all Documents that the user is interacting with in Dash',
- getDocsToolParams,
- 'No need to provide anything. Just run the tool and it will retrieve the contents of all Documents that the user is interacting with in Dash.',
- 'Returns the documents in Dash in JSON form.'
- );
+ super(getDocsToolInfo);
this._docView = docView;
}
diff --git a/src/client/views/nodes/chatbot/tools/NoTool.ts b/src/client/views/nodes/chatbot/tools/NoTool.ts
index 5d652fd8d..40cc428b5 100644
--- a/src/client/views/nodes/chatbot/tools/NoTool.ts
+++ b/src/client/views/nodes/chatbot/tools/NoTool.ts
@@ -1,14 +1,21 @@
import { BaseTool } from './BaseTool';
import { Observation } from '../types/types';
-import { ParametersType } from '../types/tool_types';
+import { ParametersType, ToolInfo } from '../types/tool_types';
const noToolParams = [] as const;
type NoToolParamsType = typeof noToolParams;
+const noToolInfo: ToolInfo<NoToolParamsType> = {
+ name: 'noTool',
+ description: 'A placeholder tool that performs no action to use when no action is needed but to complete the loop.',
+ parameterRules: noToolParams,
+ citationRules: 'No citation needed.',
+};
+
export class NoTool extends BaseTool<NoToolParamsType> {
constructor() {
- super('noTool', 'A placeholder tool that performs no action', noToolParams, 'This tool does not require any input or perform any action.', 'Does nothing.');
+ super(noToolInfo);
}
async execute(args: ParametersType<NoToolParamsType>): Promise<Observation[]> {
diff --git a/src/client/views/nodes/chatbot/tools/RAGTool.ts b/src/client/views/nodes/chatbot/tools/RAGTool.ts
index fcd93a07a..1f73986a7 100644
--- a/src/client/views/nodes/chatbot/tools/RAGTool.ts
+++ b/src/client/views/nodes/chatbot/tools/RAGTool.ts
@@ -1,6 +1,6 @@
import { Networking } from '../../../../Network';
import { Observation, RAGChunk } from '../types/types';
-import { ParametersType } from '../types/tool_types';
+import { ParametersType, ToolInfo } from '../types/tool_types';
import { Vectorstore } from '../vectorstore/Vectorstore';
import { BaseTool } from './BaseTool';
@@ -15,14 +15,10 @@ const ragToolParams = [
type RAGToolParamsType = typeof ragToolParams;
-export class RAGTool extends BaseTool<RAGToolParamsType> {
- constructor(private vectorstore: Vectorstore) {
- super(
- 'rag',
- 'Perform a RAG search on user documents',
- ragToolParams,
- `
- When using the RAG tool, the structure must adhere to the format described in the ReAct prompt. Below are additional guidelines specifically for RAG-based responses:
+const ragToolInfo: ToolInfo<RAGToolParamsType> = {
+ name: 'rag',
+ description: 'Performs a RAG (Retrieval-Augmented Generation) search on user documents and returns a set of document chunks (text or images) to provide a grounded response based on user documents.',
+ citationRules: `When using the RAG tool, the structure must adhere to the format described in the ReAct prompt. Below are additional guidelines specifically for RAG-based responses:
1. **Grounded Text Guidelines**:
- Each <grounded_text> tag must correspond to exactly one citation, ensuring a one-to-one relationship.
@@ -56,9 +52,17 @@ export class RAGTool extends BaseTool<RAGToolParamsType> {
<question>How might AI-driven advancements impact healthcare costs?</question>
</follow_up_questions>
</answer>
- `,
- `Performs a RAG (Retrieval-Augmented Generation) search on user documents and returns a set of document chunks (text or images) to provide a grounded response based on user documents.`
- );
+
+ ***NOTE***:
+ - Prefer to cite visual elements (i.e. chart, image, table, etc.) over text, if they both can be used. Only if a visual element is not going to be helpful, then use text. Otherwise, use both!
+ - Use as many citations as possible (even when one would be sufficient), thus keeping text as grounded as possible.
+ - Cite from as many documents as possible and always use MORE, and as granular, citations as possible.`,
+ parameterRules: ragToolParams,
+};
+
+export class RAGTool extends BaseTool<RAGToolParamsType> {
+ constructor(private vectorstore: Vectorstore) {
+ super(ragToolInfo);
}
async execute(args: ParametersType<RAGToolParamsType>): Promise<Observation[]> {
diff --git a/src/client/views/nodes/chatbot/tools/ReplicateUserTaskTool.ts b/src/client/views/nodes/chatbot/tools/ReplicateUserTaskTool.ts
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/src/client/views/nodes/chatbot/tools/ReplicateUserTaskTool.ts
diff --git a/src/client/views/nodes/chatbot/tools/SearchTool.ts b/src/client/views/nodes/chatbot/tools/SearchTool.ts
index d22f4c189..5fc6ab768 100644
--- a/src/client/views/nodes/chatbot/tools/SearchTool.ts
+++ b/src/client/views/nodes/chatbot/tools/SearchTool.ts
@@ -2,13 +2,14 @@ import { v4 as uuidv4 } from 'uuid';
import { Networking } from '../../../../Network';
import { BaseTool } from './BaseTool';
import { Observation } from '../types/types';
-import { ParametersType } from '../types/tool_types';
+import { ParametersType, ToolInfo } from '../types/tool_types';
const searchToolParams = [
{
name: 'queries',
type: 'string[]',
- description: 'The search query or queries to use for finding websites',
+ description:
+ 'The search query or queries to use for finding websites. Provide up to 3 search queries to find a broad range of websites. Should be in the form of a TypeScript array of strings (e.g. <queries>["search term 1", "search term 2", "search term 3"]</queries>).',
required: true,
max_inputs: 3,
},
@@ -16,18 +17,19 @@ const searchToolParams = [
type SearchToolParamsType = typeof searchToolParams;
+const searchToolInfo: ToolInfo<SearchToolParamsType> = {
+ name: 'searchTool',
+ citationRules: 'No citation needed. Cannot cite search results for a response. Use web scraping tools to cite specific information.',
+ parameterRules: searchToolParams,
+ description: 'Search the web to find a wide range of websites related to a query or multiple queries. Returns a list of websites and their overviews based on the search queries.',
+};
+
export class SearchTool extends BaseTool<SearchToolParamsType> {
private _addLinkedUrlDoc: (url: string, id: string) => void;
private _max_results: number;
constructor(addLinkedUrlDoc: (url: string, id: string) => void, max_results: number = 4) {
- super(
- 'searchTool',
- 'Search the web to find a wide range of websites related to a query or multiple queries',
- searchToolParams,
- 'Provide up to 3 search queries to find a broad range of websites.',
- 'Returns a list of websites and their overviews based on the search queries.'
- );
+ super(searchToolInfo);
this._addLinkedUrlDoc = addLinkedUrlDoc;
this._max_results = max_results;
}
diff --git a/src/client/views/nodes/chatbot/tools/WebsiteInfoScraperTool.ts b/src/client/views/nodes/chatbot/tools/WebsiteInfoScraperTool.ts
index ce659e344..19ccd0b36 100644
--- a/src/client/views/nodes/chatbot/tools/WebsiteInfoScraperTool.ts
+++ b/src/client/views/nodes/chatbot/tools/WebsiteInfoScraperTool.ts
@@ -2,7 +2,7 @@ import { v4 as uuidv4 } from 'uuid';
import { Networking } from '../../../../Network';
import { BaseTool } from './BaseTool';
import { Observation } from '../types/types';
-import { ParametersType } from '../types/tool_types';
+import { ParametersType, ToolInfo } from '../types/tool_types';
const websiteInfoScraperToolParams = [
{
@@ -16,15 +16,10 @@ const websiteInfoScraperToolParams = [
type WebsiteInfoScraperToolParamsType = typeof websiteInfoScraperToolParams;
-export class WebsiteInfoScraperTool extends BaseTool<WebsiteInfoScraperToolParamsType> {
- private _addLinkedUrlDoc: (url: string, id: string) => void;
-
- constructor(addLinkedUrlDoc: (url: string, id: string) => void) {
- super(
- 'websiteInfoScraper',
- 'Scrape detailed information from specific websites relevant to the user query',
- websiteInfoScraperToolParams,
- `
+const websiteInfoScraperToolInfo: ToolInfo<WebsiteInfoScraperToolParamsType> = {
+ name: 'websiteInfoScraper',
+ description: 'Scrape detailed information from specific websites relevant to the user query. Returns the text content of the webpages for further analysis and grounding.',
+ citationRules: `
Your task is to provide a comprehensive response to the user's prompt using the content scraped from relevant websites. Ensure you follow these guidelines for structuring your response:
1. Grounded Text Tag Structure:
@@ -64,9 +59,17 @@ export class WebsiteInfoScraperTool extends BaseTool<WebsiteInfoScraperToolParam
<question>Are there additional factors that could influence economic growth beyond investments and inflation?</question>
</follow_up_questions>
</answer>
+
+ ***NOTE***: Ensure that the response is structured correctly and adheres to the guidelines provided. Also, if needed/possible, cite multiple websites to provide a comprehensive response.
`,
- 'Returns the text content of the webpages for further analysis and grounding.'
- );
+ parameterRules: websiteInfoScraperToolParams,
+};
+
+export class WebsiteInfoScraperTool extends BaseTool<WebsiteInfoScraperToolParamsType> {
+ private _addLinkedUrlDoc: (url: string, id: string) => void;
+
+ constructor(addLinkedUrlDoc: (url: string, id: string) => void) {
+ super(websiteInfoScraperToolInfo);
this._addLinkedUrlDoc = addLinkedUrlDoc;
}
diff --git a/src/client/views/nodes/chatbot/tools/WikipediaTool.ts b/src/client/views/nodes/chatbot/tools/WikipediaTool.ts
index f2dbf3cfd..ee815532a 100644
--- a/src/client/views/nodes/chatbot/tools/WikipediaTool.ts
+++ b/src/client/views/nodes/chatbot/tools/WikipediaTool.ts
@@ -2,7 +2,7 @@ import { v4 as uuidv4 } from 'uuid';
import { Networking } from '../../../../Network';
import { BaseTool } from './BaseTool';
import { Observation } from '../types/types';
-import { ParametersType } from '../types/tool_types';
+import { ParametersType, ToolInfo } from '../types/tool_types';
const wikipediaToolParams = [
{
@@ -15,17 +15,18 @@ const wikipediaToolParams = [
type WikipediaToolParamsType = typeof wikipediaToolParams;
+const wikipediaToolInfo: ToolInfo<WikipediaToolParamsType> = {
+ name: 'wikipedia',
+ citationRules: 'No citation needed.',
+ parameterRules: wikipediaToolParams,
+ description: 'Returns a summary from searching an article title on Wikipedia.',
+};
+
export class WikipediaTool extends BaseTool<WikipediaToolParamsType> {
private _addLinkedUrlDoc: (url: string, id: string) => void;
constructor(addLinkedUrlDoc: (url: string, id: string) => void) {
- super(
- 'wikipedia',
- 'Search Wikipedia and return a summary',
- wikipediaToolParams,
- 'Provide simply the title you want to search on Wikipedia and nothing more. If re-using this tool, try a different title for different information.',
- 'Returns a summary from searching an article title on Wikipedia'
- );
+ super(wikipediaToolInfo);
this._addLinkedUrlDoc = addLinkedUrlDoc;
}