feat: add sambanova-langchain package (#5923)
* add new sambanova available models * feat: add sambanova-langchain package add sambanova package minor improvements in sambanova component add sambanova in agent examples * [autofix.ci] apply automated fixes * fmt * [autofix.ci] apply automated fixes * minor changes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
This commit is contained in:
parent
a0474dcc1c
commit
414797f3f8
12 changed files with 74 additions and 8 deletions
|
|
@ -95,6 +95,7 @@ dependencies = [
|
||||||
"langchain-google-community==2.0.3",
|
"langchain-google-community==2.0.3",
|
||||||
"langchain-elasticsearch==0.3.0",
|
"langchain-elasticsearch==0.3.0",
|
||||||
"langchain-ollama==0.2.1",
|
"langchain-ollama==0.2.1",
|
||||||
|
"langchain-sambanova==0.1.0",
|
||||||
"langchain-community~=0.3.10",
|
"langchain-community~=0.3.10",
|
||||||
"sqlalchemy[aiosqlite,postgresql_psycopg2binary,postgresql_psycopgbinary]>=2.0.36,<3.0.0",
|
"sqlalchemy[aiosqlite,postgresql_psycopg2binary,postgresql_psycopgbinary]>=2.0.36,<3.0.0",
|
||||||
"atlassian-python-api==3.41.16",
|
"atlassian-python-api==3.41.16",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ from langflow.components.models.google_generative_ai import GoogleGenerativeAICo
|
||||||
from langflow.components.models.groq import GroqModel
|
from langflow.components.models.groq import GroqModel
|
||||||
from langflow.components.models.nvidia import NVIDIAModelComponent
|
from langflow.components.models.nvidia import NVIDIAModelComponent
|
||||||
from langflow.components.models.openai import OpenAIModelComponent
|
from langflow.components.models.openai import OpenAIModelComponent
|
||||||
|
from langflow.components.models.sambanova import SambaNovaComponent
|
||||||
from langflow.inputs.inputs import InputTypes, SecretStrInput
|
from langflow.inputs.inputs import InputTypes, SecretStrInput
|
||||||
from langflow.template.field.base import Input
|
from langflow.template.field.base import Input
|
||||||
|
|
||||||
|
|
@ -147,6 +148,17 @@ def _get_amazon_bedrock_inputs_and_fields():
|
||||||
return amazon_bedrock_inputs, create_input_fields_dict(amazon_bedrock_inputs, "")
|
return amazon_bedrock_inputs, create_input_fields_dict(amazon_bedrock_inputs, "")
|
||||||
|
|
||||||
|
|
||||||
|
def _get_sambanova_inputs_and_fields():
|
||||||
|
try:
|
||||||
|
from langflow.components.models.sambanova import SambaNovaComponent
|
||||||
|
|
||||||
|
sambanova_inputs = get_filtered_inputs(SambaNovaComponent)
|
||||||
|
except ImportError as e:
|
||||||
|
msg = "SambaNova is not installed. Please install it with `pip install langchain-sambanova`."
|
||||||
|
raise ImportError(msg) from e
|
||||||
|
return sambanova_inputs, create_input_fields_dict(sambanova_inputs, "")
|
||||||
|
|
||||||
|
|
||||||
MODEL_PROVIDERS_DICT: dict[str, ModelProvidersDict] = {}
|
MODEL_PROVIDERS_DICT: dict[str, ModelProvidersDict] = {}
|
||||||
|
|
||||||
# Try to add each provider
|
# Try to add each provider
|
||||||
|
|
@ -227,6 +239,17 @@ try:
|
||||||
except ImportError:
|
except ImportError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
try:
|
||||||
|
sambanova_inputs, sambanova_fields = _get_sambanova_inputs_and_fields()
|
||||||
|
MODEL_PROVIDERS_DICT["SambaNova"] = {
|
||||||
|
"fields": sambanova_fields,
|
||||||
|
"inputs": sambanova_inputs,
|
||||||
|
"prefix": "",
|
||||||
|
"component_class": SambaNovaComponent(),
|
||||||
|
}
|
||||||
|
except ImportError:
|
||||||
|
pass
|
||||||
|
|
||||||
MODEL_PROVIDERS = list(MODEL_PROVIDERS_DICT.keys())
|
MODEL_PROVIDERS = list(MODEL_PROVIDERS_DICT.keys())
|
||||||
ALL_PROVIDER_FIELDS: list[str] = [field for provider in MODEL_PROVIDERS_DICT.values() for field in provider["fields"]]
|
ALL_PROVIDER_FIELDS: list[str] = [field for provider in MODEL_PROVIDERS_DICT.values() for field in provider["fields"]]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
SAMBANOVA_MODEL_NAMES = [
|
SAMBANOVA_MODEL_NAMES = [
|
||||||
|
"Meta-Llama-3.3-70B-Instruct",
|
||||||
"Meta-Llama-3.1-8B-Instruct",
|
"Meta-Llama-3.1-8B-Instruct",
|
||||||
"Meta-Llama-3.1-70B-Instruct",
|
"Meta-Llama-3.1-70B-Instruct",
|
||||||
"Meta-Llama-3.1-405B-Instruct",
|
"Meta-Llama-3.1-405B-Instruct",
|
||||||
|
|
@ -6,6 +7,10 @@ SAMBANOVA_MODEL_NAMES = [
|
||||||
"Meta-Llama-3.2-3B-Instruct",
|
"Meta-Llama-3.2-3B-Instruct",
|
||||||
"Llama-3.2-11B-Vision-Instruct",
|
"Llama-3.2-11B-Vision-Instruct",
|
||||||
"Llama-3.2-90B-Vision-Instruct",
|
"Llama-3.2-90B-Vision-Instruct",
|
||||||
|
"Qwen2.5-Coder-32B-Instruct",
|
||||||
|
"Qwen2.5-72B-Instruct",
|
||||||
|
"QwQ-32B-Preview",
|
||||||
|
"Qwen2-Audio-7B-Instruct",
|
||||||
]
|
]
|
||||||
|
|
||||||
MODEL_NAMES = SAMBANOVA_MODEL_NAMES
|
MODEL_NAMES = SAMBANOVA_MODEL_NAMES
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
from langchain_community.chat_models.sambanova import ChatSambaNovaCloud
|
from langchain_sambanova import ChatSambaNovaCloud
|
||||||
from pydantic.v1 import SecretStr
|
from pydantic.v1 import SecretStr
|
||||||
|
|
||||||
from langflow.base.models.model import LCModelComponent
|
from langflow.base.models.model import LCModelComponent
|
||||||
|
|
@ -18,7 +18,7 @@ class SambaNovaComponent(LCModelComponent):
|
||||||
inputs = [
|
inputs = [
|
||||||
*LCModelComponent._base_inputs,
|
*LCModelComponent._base_inputs,
|
||||||
StrInput(
|
StrInput(
|
||||||
name="sambanova_url",
|
name="base_url",
|
||||||
display_name="SambaNova Cloud Base Url",
|
display_name="SambaNova Cloud Base Url",
|
||||||
advanced=True,
|
advanced=True,
|
||||||
info="The base URL of the Sambanova Cloud API. "
|
info="The base URL of the Sambanova Cloud API. "
|
||||||
|
|
@ -33,7 +33,7 @@ class SambaNovaComponent(LCModelComponent):
|
||||||
value=SAMBANOVA_MODEL_NAMES[0],
|
value=SAMBANOVA_MODEL_NAMES[0],
|
||||||
),
|
),
|
||||||
SecretStrInput(
|
SecretStrInput(
|
||||||
name="sambanova_api_key",
|
name="api_key",
|
||||||
display_name="Sambanova API Key",
|
display_name="Sambanova API Key",
|
||||||
info="The Sambanova API Key to use for the Sambanova model.",
|
info="The Sambanova API Key to use for the Sambanova model.",
|
||||||
advanced=False,
|
advanced=False,
|
||||||
|
|
@ -44,8 +44,16 @@ class SambaNovaComponent(LCModelComponent):
|
||||||
name="max_tokens",
|
name="max_tokens",
|
||||||
display_name="Max Tokens",
|
display_name="Max Tokens",
|
||||||
advanced=True,
|
advanced=True,
|
||||||
value=4096,
|
value=2048,
|
||||||
info="The maximum number of tokens to generate. Set to 0 for unlimited tokens.",
|
info="The maximum number of tokens to generate.",
|
||||||
|
),
|
||||||
|
SliderInput(
|
||||||
|
name="top_p",
|
||||||
|
display_name="top_p",
|
||||||
|
advanced=True,
|
||||||
|
value=1.0,
|
||||||
|
range_spec=RangeSpec(min=0, max=1, step=0.01),
|
||||||
|
info="Model top_p",
|
||||||
),
|
),
|
||||||
SliderInput(
|
SliderInput(
|
||||||
name="temperature", display_name="Temperature", value=0.1, range_spec=RangeSpec(min=0, max=2, step=0.01)
|
name="temperature", display_name="Temperature", value=0.1, range_spec=RangeSpec(min=0, max=2, step=0.01)
|
||||||
|
|
@ -53,10 +61,11 @@ class SambaNovaComponent(LCModelComponent):
|
||||||
]
|
]
|
||||||
|
|
||||||
def build_model(self) -> LanguageModel: # type: ignore[type-var]
|
def build_model(self) -> LanguageModel: # type: ignore[type-var]
|
||||||
sambanova_url = self.sambanova_url
|
sambanova_url = self.base_url
|
||||||
sambanova_api_key = self.sambanova_api_key
|
sambanova_api_key = self.api_key
|
||||||
model_name = self.model_name
|
model_name = self.model_name
|
||||||
max_tokens = self.max_tokens
|
max_tokens = self.max_tokens
|
||||||
|
top_p = self.top_p
|
||||||
temperature = self.temperature
|
temperature = self.temperature
|
||||||
|
|
||||||
api_key = SecretStr(sambanova_api_key).get_secret_value() if sambanova_api_key else None
|
api_key = SecretStr(sambanova_api_key).get_secret_value() if sambanova_api_key else None
|
||||||
|
|
@ -65,6 +74,7 @@ class SambaNovaComponent(LCModelComponent):
|
||||||
model=model_name,
|
model=model_name,
|
||||||
max_tokens=max_tokens or 1024,
|
max_tokens=max_tokens or 1024,
|
||||||
temperature=temperature or 0.07,
|
temperature=temperature or 0.07,
|
||||||
|
top_p=top_p,
|
||||||
sambanova_url=sambanova_url,
|
sambanova_url=sambanova_url,
|
||||||
sambanova_api_key=api_key,
|
sambanova_api_key=api_key,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -1402,6 +1402,7 @@
|
||||||
"Groq",
|
"Groq",
|
||||||
"NVIDIA",
|
"NVIDIA",
|
||||||
"OpenAI",
|
"OpenAI",
|
||||||
|
"SambaNova",
|
||||||
"Custom"
|
"Custom"
|
||||||
],
|
],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
|
|
|
||||||
|
|
@ -1339,6 +1339,7 @@
|
||||||
"Groq",
|
"Groq",
|
||||||
"NVIDIA",
|
"NVIDIA",
|
||||||
"OpenAI",
|
"OpenAI",
|
||||||
|
"SambaNova",
|
||||||
"Custom"
|
"Custom"
|
||||||
],
|
],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
|
|
|
||||||
|
|
@ -1339,6 +1339,7 @@
|
||||||
"Groq",
|
"Groq",
|
||||||
"NVIDIA",
|
"NVIDIA",
|
||||||
"OpenAI",
|
"OpenAI",
|
||||||
|
"SambaNova",
|
||||||
"Custom"
|
"Custom"
|
||||||
],
|
],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
|
|
|
||||||
|
|
@ -717,6 +717,7 @@
|
||||||
"Groq",
|
"Groq",
|
||||||
"NVIDIA",
|
"NVIDIA",
|
||||||
"OpenAI",
|
"OpenAI",
|
||||||
|
"SambaNova",
|
||||||
"Custom"
|
"Custom"
|
||||||
],
|
],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
|
|
|
||||||
|
|
@ -706,6 +706,7 @@
|
||||||
"Groq",
|
"Groq",
|
||||||
"NVIDIA",
|
"NVIDIA",
|
||||||
"OpenAI",
|
"OpenAI",
|
||||||
|
"SambaNova",
|
||||||
"Custom"
|
"Custom"
|
||||||
],
|
],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
|
|
@ -1289,6 +1290,7 @@
|
||||||
"Groq",
|
"Groq",
|
||||||
"NVIDIA",
|
"NVIDIA",
|
||||||
"OpenAI",
|
"OpenAI",
|
||||||
|
"SambaNova",
|
||||||
"Custom"
|
"Custom"
|
||||||
],
|
],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
|
|
@ -2693,6 +2695,7 @@
|
||||||
"Groq",
|
"Groq",
|
||||||
"NVIDIA",
|
"NVIDIA",
|
||||||
"OpenAI",
|
"OpenAI",
|
||||||
|
"SambaNova",
|
||||||
"Custom"
|
"Custom"
|
||||||
],
|
],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
|
|
@ -3193,7 +3196,7 @@
|
||||||
"data": {
|
"data": {
|
||||||
"id": "note-7I7gz",
|
"id": "note-7I7gz",
|
||||||
"node": {
|
"node": {
|
||||||
"description": "## Configure the agent by obtaining your OpenAI API key from [platform.openai.com](https://platform.openai.com). Under \"Model Provider\", choose:\n- OpenAI: Default, requires only API key\n- Anthropic/Azure/Groq/NVIDIA: Each requires their own API keys\n- Custom: Use your own model endpoint + authentication\n\nSelect model and input API key before running the flow.",
|
"description": "## Configure the agent by obtaining your OpenAI API key from [platform.openai.com](https://platform.openai.com). Under \"Model Provider\", choose:\n- OpenAI: Default, requires only API key\n- Anthropic/Azure/Groq/NVIDIA/SambaNova: Each requires their own API keys\n- Custom: Use your own model endpoint + authentication\n\nSelect model and input API key before running the flow.",
|
||||||
"display_name": "",
|
"display_name": "",
|
||||||
"documentation": "",
|
"documentation": "",
|
||||||
"template": {
|
"template": {
|
||||||
|
|
|
||||||
|
|
@ -215,6 +215,7 @@
|
||||||
"Groq",
|
"Groq",
|
||||||
"NVIDIA",
|
"NVIDIA",
|
||||||
"OpenAI",
|
"OpenAI",
|
||||||
|
"SambaNova",
|
||||||
"Custom"
|
"Custom"
|
||||||
],
|
],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
|
|
|
||||||
|
|
@ -823,6 +823,7 @@
|
||||||
"Groq",
|
"Groq",
|
||||||
"NVIDIA",
|
"NVIDIA",
|
||||||
"OpenAI",
|
"OpenAI",
|
||||||
|
"SambaNova",
|
||||||
"Custom"
|
"Custom"
|
||||||
],
|
],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
|
|
@ -1379,6 +1380,7 @@
|
||||||
"Groq",
|
"Groq",
|
||||||
"NVIDIA",
|
"NVIDIA",
|
||||||
"OpenAI",
|
"OpenAI",
|
||||||
|
"SambaNova",
|
||||||
"Custom"
|
"Custom"
|
||||||
],
|
],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
|
|
@ -1935,6 +1937,7 @@
|
||||||
"Groq",
|
"Groq",
|
||||||
"NVIDIA",
|
"NVIDIA",
|
||||||
"OpenAI",
|
"OpenAI",
|
||||||
|
"SambaNova",
|
||||||
"Custom"
|
"Custom"
|
||||||
],
|
],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
|
|
|
||||||
16
uv.lock
generated
16
uv.lock
generated
|
|
@ -3731,6 +3731,20 @@ wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/4e/52/91aeebc40051014a143f6aab77afd6a2acf17311ea461709317d804c7419/langchain_pinecone-0.2.2-py3-none-any.whl", hash = "sha256:3697455bbf0dc916f82bc4b31c8c1540eda45a4265ed7e108464a1992036c2ea", size = 11672 },
|
{ url = "https://files.pythonhosted.org/packages/4e/52/91aeebc40051014a143f6aab77afd6a2acf17311ea461709317d804c7419/langchain_pinecone-0.2.2-py3-none-any.whl", hash = "sha256:3697455bbf0dc916f82bc4b31c8c1540eda45a4265ed7e108464a1992036c2ea", size = 11672 },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "langchain-sambanova"
|
||||||
|
version = "0.1.0"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "langchain-core" },
|
||||||
|
{ name = "sseclient-py" },
|
||||||
|
{ name = "types-requests" },
|
||||||
|
]
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/4f/dd/88a2aa89b24b2f1e245bf39989a6cd8fe3b21f09171326e1f77696e853d9/langchain_sambanova-0.1.0.tar.gz", hash = "sha256:70ead669b4d440b50fd02e11d5e7e3249b61cf7bb73a79173e40da410b006c0f", size = 23297 }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/2c/5a/5a1a3671f70de77d6d8b06c170ba562776c6d88ffbb74cbdb12dc4fbef80/langchain_sambanova-0.1.0-py3-none-any.whl", hash = "sha256:b740011b136414e1ee503bca551bcd869731418457e27510de3a323476d09797", size = 23987 },
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "langchain-tests"
|
name = "langchain-tests"
|
||||||
version = "0.3.9"
|
version = "0.3.9"
|
||||||
|
|
@ -3839,6 +3853,7 @@ dependencies = [
|
||||||
{ name = "langchain-ollama" },
|
{ name = "langchain-ollama" },
|
||||||
{ name = "langchain-openai" },
|
{ name = "langchain-openai" },
|
||||||
{ name = "langchain-pinecone" },
|
{ name = "langchain-pinecone" },
|
||||||
|
{ name = "langchain-sambanova" },
|
||||||
{ name = "langchain-unstructured" },
|
{ name = "langchain-unstructured" },
|
||||||
{ name = "langflow-base" },
|
{ name = "langflow-base" },
|
||||||
{ name = "langfuse" },
|
{ name = "langfuse" },
|
||||||
|
|
@ -4001,6 +4016,7 @@ requires-dist = [
|
||||||
{ name = "langchain-ollama", specifier = "==0.2.1" },
|
{ name = "langchain-ollama", specifier = "==0.2.1" },
|
||||||
{ name = "langchain-openai", specifier = "==0.2.12" },
|
{ name = "langchain-openai", specifier = "==0.2.12" },
|
||||||
{ name = "langchain-pinecone", specifier = "==0.2.2" },
|
{ name = "langchain-pinecone", specifier = "==0.2.2" },
|
||||||
|
{ name = "langchain-sambanova", specifier = "==0.1.0" },
|
||||||
{ name = "langchain-unstructured", specifier = "==0.1.5" },
|
{ name = "langchain-unstructured", specifier = "==0.1.5" },
|
||||||
{ name = "langflow-base", editable = "src/backend/base" },
|
{ name = "langflow-base", editable = "src/backend/base" },
|
||||||
{ name = "langfuse", specifier = "==2.53.9" },
|
{ name = "langfuse", specifier = "==2.53.9" },
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue