;
+}
diff --git a/public/utils/pipeline/text_to_ppl_task.ts b/public/utils/pipeline/text_to_ppl_task.ts
new file mode 100644
index 00000000..fb56100f
--- /dev/null
+++ b/public/utils/pipeline/text_to_ppl_task.ts
@@ -0,0 +1,39 @@
+/*
+ * Copyright OpenSearch Contributors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import { HttpSetup } from '../../../../../src/core/public';
+import { Task } from './task';
+import { TEXT2VIZ_API } from '../../../common/constants/llm';
+
+interface Input {
+ inputQuestion: string;
+ index: string;
+ dataSourceId?: string;
+}
+
+export class Text2PPLTask extends Task {
+ http: HttpSetup;
+
+ constructor(http: HttpSetup) {
+ super();
+ this.http = http;
+ }
+
+ async execute