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-elasticsearch==0.3.0",
|
||||
"langchain-ollama==0.2.1",
|
||||
"langchain-sambanova==0.1.0",
|
||||
"langchain-community~=0.3.10",
|
||||
"sqlalchemy[aiosqlite,postgresql_psycopg2binary,postgresql_psycopgbinary]>=2.0.36,<3.0.0",
|
||||
"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.nvidia import NVIDIAModelComponent
|
||||
from langflow.components.models.openai import OpenAIModelComponent
|
||||
from langflow.components.models.sambanova import SambaNovaComponent
|
||||
from langflow.inputs.inputs import InputTypes, SecretStrInput
|
||||
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, "")
|
||||
|
||||
|
||||
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] = {}
|
||||
|
||||
# Try to add each provider
|
||||
|
|
@ -227,6 +239,17 @@ try:
|
|||
except ImportError:
|
||||
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())
|
||||
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 = [
|
||||
"Meta-Llama-3.3-70B-Instruct",
|
||||
"Meta-Llama-3.1-8B-Instruct",
|
||||
"Meta-Llama-3.1-70B-Instruct",
|
||||
"Meta-Llama-3.1-405B-Instruct",
|
||||
|
|
@ -6,6 +7,10 @@ SAMBANOVA_MODEL_NAMES = [
|
|||
"Meta-Llama-3.2-3B-Instruct",
|
||||
"Llama-3.2-11B-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
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
from langchain_community.chat_models.sambanova import ChatSambaNovaCloud
|
||||
from langchain_sambanova import ChatSambaNovaCloud
|
||||
from pydantic.v1 import SecretStr
|
||||
|
||||
from langflow.base.models.model import LCModelComponent
|
||||
|
|
@ -18,7 +18,7 @@ class SambaNovaComponent(LCModelComponent):
|
|||
inputs = [
|
||||
*LCModelComponent._base_inputs,
|
||||
StrInput(
|
||||
name="sambanova_url",
|
||||
name="base_url",
|
||||
display_name="SambaNova Cloud Base Url",
|
||||
advanced=True,
|
||||
info="The base URL of the Sambanova Cloud API. "
|
||||
|
|
@ -33,7 +33,7 @@ class SambaNovaComponent(LCModelComponent):
|
|||
value=SAMBANOVA_MODEL_NAMES[0],
|
||||
),
|
||||
SecretStrInput(
|
||||
name="sambanova_api_key",
|
||||
name="api_key",
|
||||
display_name="Sambanova API Key",
|
||||
info="The Sambanova API Key to use for the Sambanova model.",
|
||||
advanced=False,
|
||||
|
|
@ -44,8 +44,16 @@ class SambaNovaComponent(LCModelComponent):
|
|||
name="max_tokens",
|
||||
display_name="Max Tokens",
|
||||
advanced=True,
|
||||
value=4096,
|
||||
info="The maximum number of tokens to generate. Set to 0 for unlimited tokens.",
|
||||
value=2048,
|
||||
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(
|
||||
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]
|
||||
sambanova_url = self.sambanova_url
|
||||
sambanova_api_key = self.sambanova_api_key
|
||||
sambanova_url = self.base_url
|
||||
sambanova_api_key = self.api_key
|
||||
model_name = self.model_name
|
||||
max_tokens = self.max_tokens
|
||||
top_p = self.top_p
|
||||
temperature = self.temperature
|
||||
|
||||
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,
|
||||
max_tokens=max_tokens or 1024,
|
||||
temperature=temperature or 0.07,
|
||||
top_p=top_p,
|
||||
sambanova_url=sambanova_url,
|
||||
sambanova_api_key=api_key,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1402,6 +1402,7 @@
|
|||
"Groq",
|
||||
"NVIDIA",
|
||||
"OpenAI",
|
||||
"SambaNova",
|
||||
"Custom"
|
||||
],
|
||||
"placeholder": "",
|
||||
|
|
|
|||
|
|
@ -1339,6 +1339,7 @@
|
|||
"Groq",
|
||||
"NVIDIA",
|
||||
"OpenAI",
|
||||
"SambaNova",
|
||||
"Custom"
|
||||
],
|
||||
"placeholder": "",
|
||||
|
|
|
|||
|
|
@ -1339,6 +1339,7 @@
|
|||
"Groq",
|
||||
"NVIDIA",
|
||||
"OpenAI",
|
||||
"SambaNova",
|
||||
"Custom"
|
||||
],
|
||||
"placeholder": "",
|
||||
|
|
|
|||
|
|
@ -717,6 +717,7 @@
|
|||
"Groq",
|
||||
"NVIDIA",
|
||||
"OpenAI",
|
||||
"SambaNova",
|
||||
"Custom"
|
||||
],
|
||||
"placeholder": "",
|
||||
|
|
|
|||
|
|
@ -706,6 +706,7 @@
|
|||
"Groq",
|
||||
"NVIDIA",
|
||||
"OpenAI",
|
||||
"SambaNova",
|
||||
"Custom"
|
||||
],
|
||||
"placeholder": "",
|
||||
|
|
@ -1289,6 +1290,7 @@
|
|||
"Groq",
|
||||
"NVIDIA",
|
||||
"OpenAI",
|
||||
"SambaNova",
|
||||
"Custom"
|
||||
],
|
||||
"placeholder": "",
|
||||
|
|
@ -2693,6 +2695,7 @@
|
|||
"Groq",
|
||||
"NVIDIA",
|
||||
"OpenAI",
|
||||
"SambaNova",
|
||||
"Custom"
|
||||
],
|
||||
"placeholder": "",
|
||||
|
|
@ -3193,7 +3196,7 @@
|
|||
"data": {
|
||||
"id": "note-7I7gz",
|
||||
"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": "",
|
||||
"documentation": "",
|
||||
"template": {
|
||||
|
|
|
|||
|
|
@ -215,6 +215,7 @@
|
|||
"Groq",
|
||||
"NVIDIA",
|
||||
"OpenAI",
|
||||
"SambaNova",
|
||||
"Custom"
|
||||
],
|
||||
"placeholder": "",
|
||||
|
|
|
|||
|
|
@ -823,6 +823,7 @@
|
|||
"Groq",
|
||||
"NVIDIA",
|
||||
"OpenAI",
|
||||
"SambaNova",
|
||||
"Custom"
|
||||
],
|
||||
"placeholder": "",
|
||||
|
|
@ -1379,6 +1380,7 @@
|
|||
"Groq",
|
||||
"NVIDIA",
|
||||
"OpenAI",
|
||||
"SambaNova",
|
||||
"Custom"
|
||||
],
|
||||
"placeholder": "",
|
||||
|
|
@ -1935,6 +1937,7 @@
|
|||
"Groq",
|
||||
"NVIDIA",
|
||||
"OpenAI",
|
||||
"SambaNova",
|
||||
"Custom"
|
||||
],
|
||||
"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 },
|
||||
]
|
||||
|
||||
[[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]]
|
||||
name = "langchain-tests"
|
||||
version = "0.3.9"
|
||||
|
|
@ -3839,6 +3853,7 @@ dependencies = [
|
|||
{ name = "langchain-ollama" },
|
||||
{ name = "langchain-openai" },
|
||||
{ name = "langchain-pinecone" },
|
||||
{ name = "langchain-sambanova" },
|
||||
{ name = "langchain-unstructured" },
|
||||
{ name = "langflow-base" },
|
||||
{ name = "langfuse" },
|
||||
|
|
@ -4001,6 +4016,7 @@ requires-dist = [
|
|||
{ name = "langchain-ollama", specifier = "==0.2.1" },
|
||||
{ name = "langchain-openai", specifier = "==0.2.12" },
|
||||
{ name = "langchain-pinecone", specifier = "==0.2.2" },
|
||||
{ name = "langchain-sambanova", specifier = "==0.1.0" },
|
||||
{ name = "langchain-unstructured", specifier = "==0.1.5" },
|
||||
{ name = "langflow-base", editable = "src/backend/base" },
|
||||
{ name = "langfuse", specifier = "==2.53.9" },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue