diff options
| author | eleanor-park <eleanor_park@brown.edu> | 2024-10-30 19:39:46 -0400 |
|---|---|---|
| committer | eleanor-park <eleanor_park@brown.edu> | 2024-10-30 19:39:46 -0400 |
| commit | c11c760db62f78a07b624b98b209e6ee86036c8e (patch) | |
| tree | c9587b50042a5115373e91ba8ecf9b76913cd321 /src/client/views/nodes/chatbot/tools/RAGTool.ts | |
| parent | b5944e87f9d4f3149161de4de0d76db486461c76 (diff) | |
| parent | 4c768162e0436115a05b9c8b0e4d837d626d45ba (diff) | |
Merge branch 'master' into eleanor-gptdraw
Diffstat (limited to 'src/client/views/nodes/chatbot/tools/RAGTool.ts')
| -rw-r--r-- | src/client/views/nodes/chatbot/tools/RAGTool.ts | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/src/client/views/nodes/chatbot/tools/RAGTool.ts b/src/client/views/nodes/chatbot/tools/RAGTool.ts index 4cc2f26ff..482069f36 100644 --- a/src/client/views/nodes/chatbot/tools/RAGTool.ts +++ b/src/client/views/nodes/chatbot/tools/RAGTool.ts @@ -1,20 +1,26 @@ import { Networking } from '../../../../Network'; -import { RAGChunk } from '../types/types'; +import { Observation, RAGChunk } from '../types/types'; +import { ParametersType } from './ToolTypes'; import { Vectorstore } from '../vectorstore/Vectorstore'; import { BaseTool } from './BaseTool'; -export class RAGTool extends BaseTool { +const ragToolParams = [ + { + name: 'hypothetical_document_chunk', + type: 'string', + description: "A detailed prompt representing an ideal chunk to embed and compare against document vectors to retrieve the most relevant content for answering the user's query.", + required: true, + }, +] as const; + +type RAGToolParamsType = typeof ragToolParams; + +export class RAGTool extends BaseTool<RAGToolParamsType> { constructor(private vectorstore: Vectorstore) { super( 'rag', 'Perform a RAG search on user documents', - { - hypothetical_document_chunk: { - type: 'string', - description: "A detailed prompt representing an ideal chunk to embed and compare against document vectors to retrieve the most relevant content for answering the user's query.", - required: 'true', - }, - }, + 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: @@ -51,18 +57,17 @@ export class RAGTool extends BaseTool { </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.` ); } - async execute(args: { hypothetical_document_chunk: string }): Promise<unknown> { + async execute(args: ParametersType<RAGToolParamsType>): Promise<Observation[]> { const relevantChunks = await this.vectorstore.retrieve(args.hypothetical_document_chunk); - const formatted_chunks = await this.getFormattedChunks(relevantChunks); - return formatted_chunks; + const formattedChunks = await this.getFormattedChunks(relevantChunks); + return formattedChunks; } - async getFormattedChunks(relevantChunks: RAGChunk[]): Promise<unknown> { + async getFormattedChunks(relevantChunks: RAGChunk[]): Promise<Observation[]> { try { const { formattedChunks } = await Networking.PostToServer('/formatChunks', { relevantChunks }); |
