diff --git a/packages/core/src/LanguageModel.ts b/packages/core/src/LanguageModel.ts
new file mode 100644
index 0000000000000000000000000000000000000000..bd56cbd4e163e29ba85732ab623c6d00c4d973cf
--- /dev/null
+++ b/packages/core/src/LanguageModel.ts
@@ -0,0 +1,35 @@
+interface LLMResult {}
+
+interface BaseLanguageModel {}
+
+type MessageType = "human" | "ai" | "system" | "chat";
+
+interface BaseMessage {
+  content: string;
+  type: MessageType;
+}
+
+interface Generation {
+  text: string;
+  generationInfo?: { [key: string]: any };
+}
+
+interface LLMResult {
+  generations: Generation[][]; // Each input can have more than one generations
+}
+
+class BaseChatModel implements BaseLanguageModel {}
+
+class ChatOpenAI extends BaseChatModel {
+  model: string = "gpt-3.5-turbo";
+  temperature: number = 0.7;
+  openAIKey: string | null = null;
+  requestTimeout: number | null = null;
+  maxRetries: number = 6;
+  n: number = 1;
+  maxTokens?: number;
+
+  async agenerate(messages: BaseMessage[], stop: string[] | null = null) {
+    return;
+  }
+}
diff --git a/packages/core/src/Prompt.ts b/packages/core/src/Prompt.ts
index 94d329d34b0efa2817d76f6035edecbf5ea3448b..7fed433c586b8708587ddfab745b069745b0f2cf 100644
--- a/packages/core/src/Prompt.ts
+++ b/packages/core/src/Prompt.ts
@@ -1,8 +1,8 @@
 /**
- * A prompt is a function that takes a dictionary of inputs and returns a string.
+ * A SimplePrompt is a function that takes a dictionary of inputs and returns a string.
  * NOTE this is a different interface compared to LlamaIndex Python
  */
-export type Prompt = (input: { [key: string]: string }) => string;
+export type SimplePrompt = (input: { [key: string]: string }) => string;
 
 /*
 DEFAULT_TEXT_QA_PROMPT_TMPL = (
@@ -15,9 +15,7 @@ DEFAULT_TEXT_QA_PROMPT_TMPL = (
 )
 */
 
-export const defaultTextQaPrompt: Prompt = (input: {
-  [key: string]: string;
-}) => {
+export const defaultTextQaPrompt: SimplePrompt = (input) => {
   const { context, query } = input;
 
   return `Context information is below.
@@ -42,9 +40,7 @@ DEFAULT_SUMMARY_PROMPT_TMPL = (
 )
 */
 
-export const defaultSummaryPrompt: Prompt = (input: {
-  [key: string]: string;
-}) => {
+export const defaultSummaryPrompt: SimplePrompt = (input) => {
   const { context } = input;
 
   return `Write a summary of the following. Try to use only the information provided. Try to include as many key details as possible.
diff --git a/packages/core/src/openai.ts b/packages/core/src/openai.ts
index b300580cb16bc72251bc935931020dd14f7d1879..5527bd1ed3e14ee503effa177299be1523a851ea 100644
--- a/packages/core/src/openai.ts
+++ b/packages/core/src/openai.ts
@@ -4,6 +4,12 @@ import {
   CreateCompletionResponse,
   CreateChatCompletionRequest,
   CreateChatCompletionResponse,
+  CreateEmbeddingRequest,
+  CreateEmbeddingResponse,
+  CreateModerationRequest,
+  CreateModerationResponse,
+  CreateEditRequest,
+  CreateEditResponse,
 } from "openai";
 import { AxiosRequestConfig, AxiosResponse } from "axios";
 import fetchAdapter from "./fetchAdapter";
@@ -28,6 +34,36 @@ export class OpenAIWrapper extends OpenAIApi {
       ...options,
     });
   }
+
+  createEmbedding(
+    createEmbeddingRequest: CreateEmbeddingRequest,
+    options?: AxiosRequestConfig<any> | undefined
+  ): Promise<AxiosResponse<CreateEmbeddingResponse, any>> {
+    return super.createEmbedding(createEmbeddingRequest, {
+      adapter: fetchAdapter,
+      ...options,
+    });
+  }
+
+  createModeration(
+    createModerationRequest: CreateModerationRequest,
+    options?: AxiosRequestConfig<any> | undefined
+  ): Promise<AxiosResponse<CreateModerationResponse, any>> {
+    return super.createModeration(createModerationRequest, {
+      adapter: fetchAdapter,
+      ...options,
+    });
+  }
+
+  createEdit(
+    createEditRequest: CreateEditRequest,
+    options?: AxiosRequestConfig<any> | undefined
+  ): Promise<AxiosResponse<CreateEditResponse, any>> {
+    return super.createEdit(createEditRequest, {
+      adapter: fetchAdapter,
+      ...options,
+    });
+  }
 }
 
 export * from "openai";
diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json
index 67f916782db8c4561e9a48a07f8491e97138a2a9..7ca71178d53835722a040fe55cb186962981aec6 100644
--- a/packages/core/tsconfig.json
+++ b/packages/core/tsconfig.json
@@ -7,7 +7,8 @@
     "preserveWatchOutput": true,
     "skipLibCheck": true,
     "noEmit": true,
-    "strict": true
+    "strict": true,
+    "lib": ["es2015", "dom"]
   },
   "exclude": ["node_modules"]
 }