mirror of
https://github.com/hwchase17/langchain.git
synced 2026-02-21 14:43:07 +00:00
Thank you for contributing to LangChain! Rename IBM product name to `IBM watsonx` - [x] **Lint and test**: Run `make format`, `make lint` and `make test` from the root of the package(s) you've modified. See contribution guidelines for more: https://python.langchain.com/docs/contributing/
220 lines
7.7 KiB
JavaScript
220 lines
7.7 KiB
JavaScript
import React, { useState } from "react";
|
|
import CodeBlock from "@theme-original/CodeBlock";
|
|
import { CustomDropdown } from './ChatModelTabs';
|
|
|
|
export default function EmbeddingTabs(props) {
|
|
const [selectedModel, setSelectedModel] = useState("OpenAI");
|
|
const {
|
|
openaiParams,
|
|
hideOpenai,
|
|
azureOpenaiParams,
|
|
hideAzureOpenai,
|
|
googleParams,
|
|
hideGoogle,
|
|
awsParams,
|
|
hideAws,
|
|
huggingFaceParams,
|
|
hideHuggingFace,
|
|
ollamaParams,
|
|
hideOllama,
|
|
cohereParams,
|
|
hideCohere,
|
|
mistralParams,
|
|
hideMistral,
|
|
nomicParams,
|
|
hideNomic,
|
|
nvidiaParams,
|
|
hideNvidia,
|
|
voyageaiParams,
|
|
hideVoyageai,
|
|
ibmParams,
|
|
hideIBM,
|
|
fakeEmbeddingParams,
|
|
hideFakeEmbedding,
|
|
customVarName,
|
|
} = props;
|
|
|
|
const openAIParamsOrDefault = openaiParams ?? `model="text-embedding-3-large"`;
|
|
const azureParamsOrDefault =
|
|
azureOpenaiParams ??
|
|
`\n azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],\n azure_deployment=os.environ["AZURE_OPENAI_DEPLOYMENT_NAME"],\n openai_api_version=os.environ["AZURE_OPENAI_API_VERSION"],\n`;
|
|
const googleParamsOrDefault = googleParams ?? `model="text-embedding-004"`;
|
|
const awsParamsOrDefault = awsParams ?? `model_id="amazon.titan-embed-text-v2:0"`;
|
|
const huggingFaceParamsOrDefault = huggingFaceParams ?? `model_name="sentence-transformers/all-mpnet-base-v2"`;
|
|
const ollamaParamsOrDefault = ollamaParams ?? `model="llama3"`;
|
|
const cohereParamsOrDefault = cohereParams ?? `model="embed-english-v3.0"`;
|
|
const mistralParamsOrDefault = mistralParams ?? `model="mistral-embed"`;
|
|
const nomicsParamsOrDefault = nomicParams ?? `model="nomic-embed-text-v1.5"`;
|
|
const nvidiaParamsOrDefault = nvidiaParams ?? `model="NV-Embed-QA"`;
|
|
const voyageaiParamsOrDefault = voyageaiParams ?? `model="voyage-3"`;
|
|
const ibmParamsOrDefault = ibmParams ??
|
|
`\n model_id="ibm/slate-125m-english-rtrvr",\n url="https://us-south.ml.cloud.ibm.com",\n project_id="<WATSONX PROJECT_ID>",\n`;
|
|
const fakeEmbeddingParamsOrDefault = fakeEmbeddingParams ?? `size=4096`;
|
|
|
|
const embeddingVarName = customVarName ?? "embeddings";
|
|
|
|
const tabItems = [
|
|
{
|
|
value: "OpenAI",
|
|
label: "OpenAI",
|
|
text: `from langchain_openai import OpenAIEmbeddings\n\n${embeddingVarName} = OpenAIEmbeddings(${openAIParamsOrDefault})`,
|
|
apiKeyName: "OPENAI_API_KEY",
|
|
packageName: "langchain-openai",
|
|
default: true,
|
|
shouldHide: hideOpenai,
|
|
},
|
|
{
|
|
value: "Azure",
|
|
label: "Azure",
|
|
text: `from langchain_openai import AzureOpenAIEmbeddings\n\n${embeddingVarName} = AzureOpenAIEmbeddings(${azureParamsOrDefault})`,
|
|
apiKeyName: "AZURE_OPENAI_API_KEY",
|
|
packageName: "langchain-openai",
|
|
default: false,
|
|
shouldHide: hideAzureOpenai,
|
|
},
|
|
{
|
|
value: "Google",
|
|
label: "Google",
|
|
text: `from langchain_google_vertexai import VertexAIEmbeddings\n\n${embeddingVarName} = VertexAIEmbeddings(${googleParamsOrDefault})`,
|
|
apiKeyName: undefined,
|
|
packageName: "langchain-google-vertexai",
|
|
default: false,
|
|
shouldHide: hideGoogle,
|
|
},
|
|
{
|
|
value: "AWS",
|
|
label: "AWS",
|
|
text: `from langchain_aws import BedrockEmbeddings\n\n${embeddingVarName} = BedrockEmbeddings(${awsParamsOrDefault})`,
|
|
apiKeyName: undefined,
|
|
packageName: "langchain-aws",
|
|
default: false,
|
|
shouldHide: hideAws,
|
|
},
|
|
{
|
|
value: "HuggingFace",
|
|
label: "HuggingFace",
|
|
text: `from langchain_huggingface import HuggingFaceEmbeddings\n\n${embeddingVarName} = HuggingFaceEmbeddings(${huggingFaceParamsOrDefault})`,
|
|
apiKeyName: undefined,
|
|
packageName: "langchain-huggingface",
|
|
default: false,
|
|
shouldHide: hideHuggingFace,
|
|
},
|
|
{
|
|
value: "Ollama",
|
|
label: "Ollama",
|
|
text: `from langchain_ollama import OllamaEmbeddings\n\n${embeddingVarName} = OllamaEmbeddings(${ollamaParamsOrDefault})`,
|
|
apiKeyName: undefined,
|
|
packageName: "langchain-ollama",
|
|
default: false,
|
|
shouldHide: hideOllama,
|
|
},
|
|
{
|
|
value: "Cohere",
|
|
label: "Cohere",
|
|
text: `from langchain_cohere import CohereEmbeddings\n\n${embeddingVarName} = CohereEmbeddings(${cohereParamsOrDefault})`,
|
|
apiKeyName: "COHERE_API_KEY",
|
|
packageName: "langchain-cohere",
|
|
default: false,
|
|
shouldHide: hideCohere,
|
|
},
|
|
{
|
|
value: "MistralAI",
|
|
label: "MistralAI",
|
|
text: `from langchain_mistralai import MistralAIEmbeddings\n\n${embeddingVarName} = MistralAIEmbeddings(${mistralParamsOrDefault})`,
|
|
apiKeyName: "MISTRALAI_API_KEY",
|
|
packageName: "langchain-mistralai",
|
|
default: false,
|
|
shouldHide: hideMistral,
|
|
},
|
|
{
|
|
value: "Nomic",
|
|
label: "Nomic",
|
|
text: `from langchain_nomic import NomicEmbeddings\n\n${embeddingVarName} = NomicEmbeddings(${nomicsParamsOrDefault})`,
|
|
apiKeyName: "NOMIC_API_KEY",
|
|
packageName: "langchain-nomic",
|
|
default: false,
|
|
shouldHide: hideNomic,
|
|
},
|
|
{
|
|
value: "NVIDIA",
|
|
label: "NVIDIA",
|
|
text: `from langchain_nvidia_ai_endpoints import NVIDIAEmbeddings\n\n${embeddingVarName} = NVIDIAEmbeddings(${nvidiaParamsOrDefault})`,
|
|
apiKeyName: "NVIDIA_API_KEY",
|
|
packageName: "langchain-nvidia-ai-endpoints",
|
|
default: false,
|
|
shouldHide: hideNvidia,
|
|
},
|
|
{
|
|
value: "Voyage AI",
|
|
label: "Voyage AI",
|
|
text: `from langchain-voyageai import VoyageAIEmbeddings\n\n${embeddingVarName} = VoyageAIEmbeddings(${voyageaiParamsOrDefault})`,
|
|
apiKeyName: "VOYAGE_API_KEY",
|
|
packageName: "langchain-voyageai",
|
|
default: false,
|
|
shouldHide: hideVoyageai,
|
|
},
|
|
{
|
|
value: "IBM",
|
|
label: "IBM watsonx",
|
|
text: `from langchain_ibm import WatsonxEmbeddings\n\n${embeddingVarName} = WatsonxEmbeddings(${ibmParamsOrDefault})`,
|
|
apiKeyName: "WATSONX_APIKEY",
|
|
packageName: "langchain-ibm",
|
|
default: false,
|
|
shouldHide: hideIBM,
|
|
},
|
|
{
|
|
value: "Fake",
|
|
label: "Fake",
|
|
text: `from langchain_core.embeddings import DeterministicFakeEmbedding\n\n${embeddingVarName} = DeterministicFakeEmbedding(${fakeEmbeddingParamsOrDefault})`,
|
|
apiKeyName: undefined,
|
|
packageName: "langchain-core",
|
|
default: false,
|
|
shouldHide: hideFakeEmbedding,
|
|
},
|
|
];
|
|
|
|
const modelOptions = tabItems
|
|
.filter((item) => !item.shouldHide)
|
|
.map((item) => ({
|
|
value: item.value,
|
|
label: item.label,
|
|
text: item.text,
|
|
apiKeyName: item.apiKeyName,
|
|
apiKeyText: item.apiKeyText,
|
|
packageName: item.packageName,
|
|
}));
|
|
|
|
const selectedOption = modelOptions.find(
|
|
(option) => option.value === selectedModel
|
|
);
|
|
|
|
let apiKeyText = "";
|
|
if (selectedOption.apiKeyName) {
|
|
apiKeyText = `import getpass
|
|
import os
|
|
|
|
if not os.environ.get("${selectedOption.apiKeyName}"):
|
|
os.environ["${selectedOption.apiKeyName}"] = getpass.getpass("Enter API key for ${selectedOption.label}: ")`;
|
|
} else if (selectedOption.apiKeyText) {
|
|
apiKeyText = selectedOption.apiKeyText;
|
|
}
|
|
|
|
return (
|
|
<div>
|
|
<CustomDropdown
|
|
selectedOption={selectedOption}
|
|
options={modelOptions}
|
|
onSelect={setSelectedModel}
|
|
modelType="embeddings"
|
|
/>
|
|
|
|
<CodeBlock language="bash">
|
|
{`pip install -qU ${selectedOption.packageName}`}
|
|
</CodeBlock>
|
|
<CodeBlock language="python">
|
|
{apiKeyText ? apiKeyText + "\n\n" + selectedOption.text : selectedOption.text}
|
|
</CodeBlock>
|
|
</div>
|
|
);
|
|
}
|