diff --git a/docs/src/theme/ChatModelTabs.js b/docs/src/theme/ChatModelTabs.js
new file mode 100644
index 00000000000..5e9fe4a52b2
--- /dev/null
+++ b/docs/src/theme/ChatModelTabs.js
@@ -0,0 +1,103 @@
+/* eslint-disable react/jsx-props-no-spreading */
+import React from "react";
+import Tabs from "@theme/Tabs";
+import TabItem from "@theme/TabItem";
+import CodeBlock from "@theme-original/CodeBlock";
+
+function Setup({ apiKeyName, packageName }) {
+ const apiKeyText = `import getpass
+import os
+
+os.environ["${apiKeyName}"] = getpass.getpass()`;
+ return (
+ <>
+
Install dependencies
+ {`pip install -qU ${packageName}`}
+ Set environment variables
+ {apiKeyText}
+ >
+ );
+}
+
+/**
+ * @param {{ openaiParams?: string, anthropicParams?: string, fireworksParams?: string, mistralParams?: string, googleParams?: string, hideOpenai?: boolean, hideAnthropic?: boolean, hideFireworks?: boolean, hideMistral?: boolean, hideGoogle?: boolean }} props
+ */
+export default function ChatModelTabs(props) {
+ const {
+ openaiParams,
+ anthropicParams,
+ fireworksParams,
+ mistralParams,
+ googleParams,
+ hideOpenai,
+ hideAnthropic,
+ hideFireworks,
+ hideMistral,
+ hideGoogle,
+ } = props;
+
+ const openAIParamsOrDefault = openaiParams ?? `model="gpt-3.5-turbo-0125"`
+ const anthropicParamsOrDefault = anthropicParams ?? `model="claude-3-sonnet-20240229"`
+ const fireworksParamsOrDefault = fireworksParams ?? `model="accounts/fireworks/models/mixtral-8x7b-instruct"`
+ const mistralParamsOrDefault = mistralParams ?? `model="mistral-large-latest"`
+ const googleParamsOrDefault = googleParams ?? `model="gemini-pro"`
+
+ const tabItems = [
+ {
+ value: "OpenAI",
+ label: "OpenAI",
+ text: `from langchain_openai import ChatOpenAI\n\nmodel = ChatOpenAI(${openAIParamsOrDefault})`,
+ apiKeyName: "OPENAI_API_KEY",
+ packageName: "langchain-openai",
+ default: true,
+ shouldHide: hideOpenai,
+ },
+ {
+ value: "Anthropic",
+ label: "Anthropic",
+ text: `from langchain_anthropic import ChatAnthropic\n\nmodel = ChatAnthropic(${anthropicParamsOrDefault})`,
+ apiKeyName: "ANTHROPIC_API_KEY",
+ packageName: "langchain-anthropic",
+ default: false,
+ shouldHide: hideAnthropic,
+ },
+ {
+ value: "FireworksAI",
+ label: "FireworksAI",
+ text: `from langchain_fireworks import ChatFireworks\n\nmodel = ChatFireworks(${fireworksParamsOrDefault})`,
+ apiKeyName: "FIREWORKS_API_KEY",
+ packageName: "langchain-fireworks",
+ default: false,
+ shouldHide: hideFireworks,
+ },
+ {
+ value: "MistralAI",
+ label: "MistralAI",
+ text: `from langchain_mistralai import ChatMistralAI\n\nmodel = ChatMistralAI(${mistralParamsOrDefault})`,
+ apiKeyName: "MISTRAL_API_KEY",
+ packageName: "langchain-mistralai",
+ default: false,
+ shouldHide: hideMistral,
+ },
+ {
+ value: "Google",
+ label: "Google",
+ text: `from langchain_google_genai import ChatGoogleGenerativeAI\n\nmodel = ChatGoogleGenerativeAI(${googleParamsOrDefault})`,
+ apiKeyName: "GOOGLE_API_KEY",
+ packageName: "langchain-google-genai",
+ default: false,
+ shouldHide: hideGoogle,
+ }
+ ]
+
+ return (
+
+ {tabItems.filter((tabItem) => !tabItem.shouldHide).map((tabItem) => (
+
+
+ {tabItem.text}
+
+ ))}
+
+ );
+}