n8n-nodes-ragmetrics 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,75 +1,81 @@
1
- ## RAGMETRICS
2
-
3
- Ragmetrics is a turnkey evaluationAI service that scores, analyzes, validates and monitors any AI-generated text in seconds. Plug Ragmetrics into your workflow to ensure accuracy, consistency, and quality—without needing extra reviewers. The system evaluates responses based on customizable criteria and provides detailed scoring and reasoning.
4
- Ragmetrics has been proven to detect Hallucination in AI Agents and chat bots.
5
-
6
- Visit: https://ragmetrics.ai/live-ai-evaluation
7
-
8
- *Put your workflows and chat bots under the microscope and understand when they start to derail, hallucinate or degrade their accuracy.*
9
-
10
- ### Requirements
11
-
12
- To configure you n8n node, you need a Ragmetrics API key. For that you have to register for the service at ragmetrics.ai. You will also need a LLM Provider API key.
13
-
14
-
15
- ### Understanding the evaluation process
16
-
17
- The evaluation process is very simple. It compares an *answer* to a specific *question* to a *ground truth answer* in a *context* given. A *score* and *reasoning* is provided based on a *criteria* or criterion given to evaluate.
18
-
19
- #### Inputs to the evaluation
20
- - . **question:** The question that you want to evaluate. Example: *Which is capital of France?*
21
-
22
- - . **answer:** This is the answer that is going to be evaluated. Example: *Paris*.
23
-
24
- - . **ground_truth_answer**: This is the source of truth. It is used as rubric to for the evaluation process to score the criterion. Example: *The capital of France is Paris.*
25
-
26
- - . **context:** Additional information that is used to evaluate. The context becomes more relevant in non-direct comparison criterion. As an example in cases of **hallucination:** The context is key to understand if the evaluated answer related to the conversation that has been happening. Example: *Paris is the capital and largest city of France, with an estimated population of 2,048,472 in January 2025 in an area of more than 105 km2 (41 sq mi).*
27
-
28
- - . **Conversation ID:** The conversation is use to track the monitoring of different bots
29
-
30
- - . **type:** This is the type of evaluation.
31
-
32
-
33
- - . **Conversation ID:** The conversation is use to track the monitoring of different bots
34
-
35
- - . **Evaluation Group ID:** The evaluation group id can be obtained in the application @ ragmetrics.ai. It has to be preconfigured in the platform with the criteria needed to run the evaluations properly.
36
-
37
- #### Example of a Information for an evaluation
38
- ```json
39
-
40
- From Input to the Node:
41
- "question": "What is the capital of France?",
42
- "answer": "Paris.",
43
- "ground_truth_answer": "Paris is the capital of France.",
44
- "context": "",
45
-
46
- From Configuration:
47
-
48
- "type": "S",
49
- "conversation_id":"ChatBot1"
50
-
51
- ```
52
- After the evaluation is completed almost in real time, the system returns the score for each of the metrics and the reasoning behind.
53
-
54
-
55
- ### Using the n8n Ragmetrics Module
56
-
57
- ***Configuration:*** The module requires the corresponding configuration:
58
- - Ragmetrics API Key: linked to you account in ragmetrics.ai
59
- - Type of Evaluation: S - Simple, or C- Conversational
60
- - Conversation ID: user created indicator to monitor different conversations
61
- - Evaluation Group ID: obtained from the ragmetrics.ai application, used to monitor different groups of AI agents
62
-
63
- ***Input:*** You should provide the no de the fields needed for the evaluation:
64
- - question: question to answer
65
- - answer: answer that has to be evaluated
66
- - ground_truth_answer: source of truth for the answer to be evaluated
67
- - context: additional information to help the evaluation process
68
- The inputs should be in Json Format.
69
-
70
- Obtain the results and monitor what is going on with your tools!
71
-
72
- Look for more information and examples in our website!!
73
-
74
- support: support@ragmetrics.ai
75
- website: ragmetrics.ai
1
+ ## RAGMETRICS
2
+
3
+ ### *The AI Trust Layer*
4
+
5
+ Real-time monitoring and scoring mechanism integrated directly into your LLM pipeline. Monitor, measure, and improve your generative AI outputs with confidence as they happen in production.
6
+
7
+ RagMetrics is a turnkey evaluationAI service that scores, analyzes, validates and monitors any AI-generated text in seconds. Plug RagMetrics into your workflow to ensure accuracy, consistency, and quality—without needing extra reviewers. The system evaluates responses based on customizable criteria and provides detailed scoring and reasoning.
8
+
9
+ RagMetrics has been proven to detect Hallucination in AI Agents and chat bots.
10
+
11
+ Visit: https://ragmetrics.ai/live-ai-evaluation
12
+
13
+ *Put your workflows and chat bots under the microscope and understand when they start to derail, hallucinate or degrade their accuracy.*
14
+
15
+ ### Requirements
16
+
17
+ To configure you n8n node, you need a RagMetrics API key. For that you have to register for the service at ragmetrics.ai. You will also need a LLM Provider API key.
18
+
19
+ You can configure your account and get your RagMetrics API Key at: app.ragmetrics.ai
20
+
21
+ ### Understanding the evaluation process
22
+
23
+ The evaluation process is very simple. It compares an *answer* to a specific *question* to a *ground truth answer* in a *context* given. A *score* and *reasoning* is provided based on a *criteria* or criterion given to evaluate.
24
+
25
+ #### Inputs to the evaluation
26
+ - . **question:** The question that you want to evaluate. Example: *Which is capital of France?*
27
+
28
+ - . **answer:** This is the answer that is going to be evaluated. Example: *Paris*.
29
+
30
+ - . **ground_truth_answer**: This is the source of truth. It is used as rubric to for the evaluation process to score the criterion. Example: *The capital of France is Paris.*
31
+
32
+ - . **context:** Additional information that is used to evaluate. The context becomes more relevant in non-direct comparison criterion. As an example in cases of **hallucination:** The context is key to understand if the evaluated answer related to the conversation that has been happening. Example: *Paris is the capital and largest city of France, with an estimated population of 2,048,472 in January 2025 in an area of more than 105 km2 (41 sq mi).*
33
+
34
+ - . **Conversation ID:** The conversation is use to track the monitoring of different bots
35
+
36
+ - . **type:** This is the type of evaluation.
37
+
38
+ - . **Conversation ID:** The conversation is use to track the monitoring of different bots
39
+
40
+ - . **Evaluation Group ID:** The evaluation group id can be obtained in the application @ ragmetrics.ai. It has to be preconfigured in the platform with the criteria needed to run the evaluations properly.
41
+
42
+ #### Example of a Information for an evaluation
43
+ ```json
44
+
45
+ From Input to the Node:
46
+ "question": "What is the capital of France?",
47
+ "answer": "Paris.",
48
+ "ground_truth_answer": "Paris is the capital of France.",
49
+ "context": "",
50
+
51
+ From Configuration:
52
+
53
+ "type": "S",
54
+ "conversation_id":"ChatBot1"
55
+
56
+ ```
57
+ After the evaluation is completed almost in real time, the system returns the score for each of the metrics and the reasoning behind.
58
+
59
+
60
+ ### Using the n8n RagMetrics Module
61
+
62
+ ***Configuration:*** The module requires the corresponding configuration:
63
+ - RagMetrics API Key: linked to your account in ragmetrics.ai
64
+ - Type of Evaluation: S - Simple, or C- Conversational
65
+ - Conversation ID: user created indicator to monitor different conversations
66
+ - Evaluation Group ID: obtained from the ragmetrics.ai application, used to monitor different groups of AI agents
67
+
68
+ ***Input:*** You should provide the no de the fields needed for the evaluation:
69
+ - question: question to answer
70
+ - answer: answer that has to be evaluated
71
+ - ground_truth_answer: source of truth for the answer to be evaluated
72
+ - context: additional information to help the evaluation process
73
+
74
+ The inputs should be in Json Format.
75
+
76
+ Obtain the results and monitor what is going on with your tools!
77
+
78
+ Look for more information and examples in our website!!
79
+
80
+ support: support@ragmetrics.ai
81
+ website: ragmetrics.ai
@@ -4,7 +4,7 @@ exports.RagmetricsApi = void 0;
4
4
  class RagmetricsApi {
5
5
  constructor() {
6
6
  this.name = 'ragmetricsApi';
7
- this.displayName = 'Ragmetrics API';
7
+ this.displayName = 'RagMetrics API';
8
8
  this.documentationUrl = 'https://ragmetrics.ai';
9
9
  this.properties = [
10
10
  {
@@ -16,7 +16,7 @@ class RagmetricsApi {
16
16
  },
17
17
  default: '',
18
18
  required: true,
19
- description: 'Your Ragmetrics API key',
19
+ description: 'Your RagMetrics API key',
20
20
  },
21
21
  ];
22
22
  this.test = {
@@ -5,14 +5,14 @@ const n8n_workflow_1 = require("n8n-workflow");
5
5
  class Ragmetrics {
6
6
  constructor() {
7
7
  this.description = {
8
- displayName: 'Ragmetrics',
8
+ displayName: 'RagMetrics',
9
9
  name: 'ragmetrics',
10
10
  icon: 'file:Ragmetrics_blue.svg',
11
11
  group: ['transform'],
12
12
  version: 1,
13
- description: 'Ragmetrics: Evaluate AI agents and outputs',
13
+ description: 'RagMetrics: Evaluate AI agents and outputs',
14
14
  defaults: {
15
- name: 'Ragmetrics',
15
+ name: 'RagMetrics',
16
16
  },
17
17
  inputs: ['main'],
18
18
  outputs: ['main'],
@@ -68,7 +68,8 @@ class Ragmetrics {
68
68
  displayName: 'Evaluation Group ID',
69
69
  name: 'eval_group_id',
70
70
  type: 'string',
71
- default: 'd5ec449f-a88d-4093-a1db-3297d379a638',
71
+ default: '',
72
+ required: true,
72
73
  description: 'The evaluation group identifier',
73
74
  },
74
75
  {
@@ -106,7 +107,7 @@ class Ragmetrics {
106
107
  eval_group_id: evalGroupId,
107
108
  type,
108
109
  };
109
- this.logger.debug('Ragmetrics Request Details', {
110
+ this.logger.debug('RagMetrics Request Details', {
110
111
  url: 'https://api.ragmetrics.ai/v2/single-evaluation/',
111
112
  method: 'POST',
112
113
  body: requestBody,
@@ -169,7 +170,7 @@ class Ragmetrics {
169
170
  catch (error) {
170
171
  const errorMessage = error.message;
171
172
  const errorResponse = error.response;
172
- this.logger.error('Ragmetrics Request Failed', {
173
+ this.logger.error('RagMetrics Request Failed', {
173
174
  error: errorMessage,
174
175
  statusCode: errorResponse === null || errorResponse === void 0 ? void 0 : errorResponse.statusCode,
175
176
  statusText: errorResponse === null || errorResponse === void 0 ? void 0 : errorResponse.statusText,
@@ -1 +1 @@
1
- {"version":3,"file":"Ragmetrics.node.js","sourceRoot":"","sources":["../../../nodes/Ragmetrics/Ragmetrics.node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Ragmetrics.node.js","sourceRoot":"","sources":["../../../nodes/Ragmetrics/Ragmetrics.node.ts"],"names":[],"mappings":"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"}