From 9092494778abd55b6aa299fe06b4f70e7c7a767f Mon Sep 17 00:00:00 2001 From: "A.J. Shulman" Date: Mon, 7 Jul 2025 14:39:06 -0400 Subject: changes (seeing if they work) --- src/client/views/nodes/chatbot/tools/RAGTool.ts | 3 +- .../chatbot/tools/dynamic/AlignDocumentsTool.ts | 42 +++++++++++++++++ .../chatbot/tools/dynamic/CharacterCountTool.ts | 33 ++++++++++++++ .../nodes/chatbot/tools/dynamic/CohensDTool.ts | 52 ++++++++++++++++++++++ .../tools/dynamic/InspirationalQuotesTool.ts | 39 ---------------- .../nodes/chatbot/tools/dynamic/WordCountTool.ts | 33 ++++++++++++++ 6 files changed, 162 insertions(+), 40 deletions(-) create mode 100644 src/client/views/nodes/chatbot/tools/dynamic/AlignDocumentsTool.ts create mode 100644 src/client/views/nodes/chatbot/tools/dynamic/CharacterCountTool.ts create mode 100644 src/client/views/nodes/chatbot/tools/dynamic/CohensDTool.ts delete mode 100644 src/client/views/nodes/chatbot/tools/dynamic/InspirationalQuotesTool.ts create mode 100644 src/client/views/nodes/chatbot/tools/dynamic/WordCountTool.ts (limited to 'src/client/views/nodes/chatbot/tools') diff --git a/src/client/views/nodes/chatbot/tools/RAGTool.ts b/src/client/views/nodes/chatbot/tools/RAGTool.ts index af44de520..b0150868e 100644 --- a/src/client/views/nodes/chatbot/tools/RAGTool.ts +++ b/src/client/views/nodes/chatbot/tools/RAGTool.ts @@ -62,8 +62,9 @@ const ragToolInfo: ToolInfo = { ***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! + - !!!IMPORTANT: Prefer to cite visual elements (i.e. table, chart, image 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 a visual element! - Use as many citations as possible (even when one would be sufficient), thus keeping text as grounded as possible. + - When using text citations, keep the EXACT TEXT FROM THE CHUNK—WORD FOR WORD—DO NOT EMIT ANYTHING OR ADD ANYTHING. DO NOT PARAPHRASE! DO NOT CITE TEXT CONTENT FROM A TABLE OR IMAGE—INSTEAD CITE THE TABLE OR IMAGE ITSELF! - Cite from as many documents as possible and always use MORE, and as granular, citations as possible. - CITATION TEXT MUST BE EXACTLY AS IT APPEARS IN THE CHUNK. DO NOT PARAPHRASE!`, parameterRules: ragToolParams, diff --git a/src/client/views/nodes/chatbot/tools/dynamic/AlignDocumentsTool.ts b/src/client/views/nodes/chatbot/tools/dynamic/AlignDocumentsTool.ts new file mode 100644 index 000000000..53a1dd50d --- /dev/null +++ b/src/client/views/nodes/chatbot/tools/dynamic/AlignDocumentsTool.ts @@ -0,0 +1,42 @@ +import { Observation } from '../../types/types'; +import { ParametersType, ToolInfo } from '../../types/tool_types'; +import { BaseTool } from '../BaseTool'; + +const alignDocumentsParams = [ + { + name: 'alignmenttype', + type: 'string', + description: 'The type of alignment: "vertical" or "horizontal".', + required: true + }, + { + name: 'numberofdocuments', + type: 'number', + description: 'The number of documents to align.', + required: true + } + ] as const; + + type AlignDocumentsParamsType = typeof alignDocumentsParams; + + const alignDocumentsInfo: ToolInfo = { + name: 'aligndocumentstool', + description: 'Provides generic alignment guidelines for a specified number of documents to be aligned vertically or horizontally.', + citationRules: 'No citation needed.', + parameterRules: alignDocumentsParams + }; + + export class AlignDocumentsTool extends BaseTool { + constructor() { + super(alignDocumentsInfo); + } + + async execute(args: ParametersType): Promise { + const { alignmenttype, numberofdocuments } = args; + // Provide generic alignment guidelines + const guidelines = Array.from({ length: numberofdocuments }, (_, index) => ({ + position: alignmenttype === 'vertical' ? `Position ${index} vertically` : `Position ${index} horizontally` + })); + return [{ type: 'text', text: `Alignment guidelines: ${JSON.stringify(guidelines)}` }]; + } + } \ No newline at end of file diff --git a/src/client/views/nodes/chatbot/tools/dynamic/CharacterCountTool.ts b/src/client/views/nodes/chatbot/tools/dynamic/CharacterCountTool.ts new file mode 100644 index 000000000..38fed231c --- /dev/null +++ b/src/client/views/nodes/chatbot/tools/dynamic/CharacterCountTool.ts @@ -0,0 +1,33 @@ +import { Observation } from '../../types/types'; +import { ParametersType, ToolInfo } from '../../types/tool_types'; +import { BaseTool } from '../BaseTool'; + +const characterCountParams = [ + { + name: 'text', + type: 'string', + description: 'The text to count characters in', + required: true + } + ] as const; + + type CharacterCountParamsType = typeof characterCountParams; + + const characterCountInfo: ToolInfo = { + name: 'charactercount', + description: 'Counts characters in text, excluding spaces', + citationRules: 'No citation needed.', + parameterRules: characterCountParams + }; + + export class CharacterCountTool extends BaseTool { + constructor() { + super(characterCountInfo); + } + + async execute(args: ParametersType): Promise { + const { text } = args; + const count = text ? text.replace(/\s/g, '').length : 0; + return [{ type: 'text', text: `Character count (excluding spaces): ${count}` }]; + } + } \ No newline at end of file diff --git a/src/client/views/nodes/chatbot/tools/dynamic/CohensDTool.ts b/src/client/views/nodes/chatbot/tools/dynamic/CohensDTool.ts new file mode 100644 index 000000000..51cadeb6d --- /dev/null +++ b/src/client/views/nodes/chatbot/tools/dynamic/CohensDTool.ts @@ -0,0 +1,52 @@ +import { Observation } from '../../types/types'; +import { ParametersType, ToolInfo } from '../../types/tool_types'; +import { BaseTool } from '../BaseTool'; + +const cohensDToolParams = [ + { + name: 'meandifference', + type: 'number', + description: 'The difference between the means of two groups', + required: true + }, + { + name: 'standarddeviation', + type: 'number', + description: 'The pooled standard deviation of the two groups', + required: true + }, + { + name: 'samplesize1', + type: 'number', + description: 'The sample size of the first group', + required: true + }, + { + name: 'samplesize2', + type: 'number', + description: 'The sample size of the second group', + required: true + } + ] as const; + + type CohensDToolParamsType = typeof cohensDToolParams; + + const cohensDToolInfo: ToolInfo = { + name: 'cohensdtool', + description: 'Calculates Cohen\'s d for effect size and determines statistical significance levels.', + citationRules: 'No citation needed.', + parameterRules: cohensDToolParams + }; + + export class CohensDTool extends BaseTool { + constructor() { + super(cohensDToolInfo); + } + + async execute(args: ParametersType): Promise { + const { meandifference, standarddeviation, samplesize1, samplesize2 } = args; + const pooledSD = Math.sqrt(((samplesize1 - 1) * Math.pow(standarddeviation, 2) + (samplesize2 - 1) * Math.pow(standarddeviation, 2)) / (samplesize1 + samplesize2 - 2)); + const cohensD = meandifference / pooledSD; + return [{ type: 'text', text: `Cohen's d: ${cohensD.toFixed(3)}` }]; + } + } \ No newline at end of file diff --git a/src/client/views/nodes/chatbot/tools/dynamic/InspirationalQuotesTool.ts b/src/client/views/nodes/chatbot/tools/dynamic/InspirationalQuotesTool.ts deleted file mode 100644 index 23bbe1d76..000000000 --- a/src/client/views/nodes/chatbot/tools/dynamic/InspirationalQuotesTool.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Observation } from '../../types/types'; -import { ParametersType, ToolInfo } from '../../types/tool_types'; -import { BaseTool } from '../BaseTool'; - -const inspirationalQuotesParams = [ - { - name: 'category', - type: 'string', - description: 'The category of inspirational quotes to retrieve', - required: false - } - ] as const; - - type InspirationalQuotesParamsType = typeof inspirationalQuotesParams; - - const inspirationalQuotesInfo: ToolInfo = { - name: 'inspirationalquotestool', - description: 'Provides a random inspirational quote from a predefined list.', - citationRules: 'No citation needed.', - parameterRules: inspirationalQuotesParams - }; - - export class InspirationalQuotesTool extends BaseTool { - constructor() { - super(inspirationalQuotesInfo); - } - - async execute(args: ParametersType): Promise { - const quotes = [ - "The only way to do great work is to love what you do. - Steve Jobs", - "The best time to plant a tree was 20 years ago. The second best time is now. - Chinese Proverb", - "Your time is limited, so don’t waste it living someone else’s life. - Steve Jobs", - "Not everything that is faced can be changed, but nothing can be changed until it is faced. - James Baldwin", - "The purpose of our lives is to be happy. - Dalai Lama" - ]; - const randomQuote = quotes[Math.floor(Math.random() * quotes.length)]; - return [{ type: 'text', text: randomQuote }]; - } - } \ No newline at end of file diff --git a/src/client/views/nodes/chatbot/tools/dynamic/WordCountTool.ts b/src/client/views/nodes/chatbot/tools/dynamic/WordCountTool.ts new file mode 100644 index 000000000..5e15b4795 --- /dev/null +++ b/src/client/views/nodes/chatbot/tools/dynamic/WordCountTool.ts @@ -0,0 +1,33 @@ +import { Observation } from '../../types/types'; +import { ParametersType, ToolInfo } from '../../types/tool_types'; +import { BaseTool } from '../BaseTool'; + +const wordCountParams = [ + { + name: 'phrase', + type: 'string', + description: 'The phrase to count words in', + required: true + } + ] as const; + + type WordCountParamsType = typeof wordCountParams; + + const wordCountInfo: ToolInfo = { + name: 'wordcount', + description: 'Counts the number of words in a given phrase', + citationRules: 'No citation needed.', + parameterRules: wordCountParams + }; + + export class WordCountTool extends BaseTool { + constructor() { + super(wordCountInfo); + } + + async execute(args: ParametersType): Promise { + const { phrase } = args; + const wordCount = phrase ? phrase.trim().split(/\s+/).length : 0; + return [{ type: 'text', text: `Word count: ${wordCount}` }]; + } + } \ No newline at end of file -- cgit v1.2.3-70-g09d2